diff options
Diffstat (limited to 'lib/compilers')
-rw-r--r-- | lib/compilers/haskell.js | 18 |
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; } |