aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers')
-rw-r--r--lib/compilers/haskell.js18
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/compilers/haskell.js b/lib/compilers/haskell.js
index 413185a2e..a6c1a8f6b 100644
--- a/lib/compilers/haskell.js
+++ b/lib/compilers/haskell.js
@@ -35,14 +35,30 @@ export class HaskellCompiler extends BaseCompiler {
constructor(info, env) {
super(info, env);
+ this.compiler.supportsHaskellCoreView = true;
this.compiler.supportsHaskellStgView = true;
+ this.compiler.supportsHaskellCmmView = true;
}
optionsForBackend(backendOptions, outputFilename) {
const opts = super.optionsForBackend(backendOptions, outputFilename);
+ const anydump =
+ backendOptions.produceHaskellCore || backendOptions.produceHaskellStg || backendOptions.produceHaskellCmm;
+
+ if (anydump) {
+ // -dsupress-all to make tidier output
+ opts.push('-dsuppress-all', '-ddump-to-file', '-dumpdir', path.dirname(outputFilename));
+ }
+
+ if (backendOptions.produceHaskellCore && this.compiler.supportsHaskellCoreView) {
+ opts.push('-ddump-simpl');
+ }
if (backendOptions.produceHaskellStg && this.compiler.supportsHaskellStgView) {
- opts.push('-ddump-to-file', '-dumpdir', path.dirname(outputFilename), '-ddump-stg-final');
+ opts.push('-ddump-stg-final');
+ }
+ if (backendOptions.produceHaskellCmm && this.compiler.supportsHaskellCmmView) {
+ opts.push('-ddump-cmm');
}
return opts;
}