aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers/ldc.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers/ldc.js')
-rw-r--r--lib/compilers/ldc.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/compilers/ldc.js b/lib/compilers/ldc.js
index d8b30417d..ced24df3a 100644
--- a/lib/compilers/ldc.js
+++ b/lib/compilers/ldc.js
@@ -26,12 +26,15 @@ const BaseCompiler = require('../base-compiler'),
argumentParsers = require("./argument-parsers"),
fs = require('fs-extra'),
logger = require('./../logger').logger,
+ path = require('path'),
semverParser = require('semver');
class LDCCompiler extends BaseCompiler {
constructor(info, env) {
super(info, env);
this.compiler.supportsIntel = true;
+ this.compiler.supportsIrView = true;
+ this.compiler.irArg = ['-output-ll'];
}
optionsForFilter(filters, outputFilename) {
@@ -80,6 +83,17 @@ class LDCCompiler extends BaseCompiler {
}
return fs.readFileSync(astFilename, 'utf-8');
}
+
+ // Override the IR processing method for LDC because the output file is different from clang.
+ processIrOutput(output, filters) {
+ const irPath = this.getOutputFilename(path.dirname(output.inputFilename), this.outputFilebase).replace('.s', '.ll');
+ if (fs.existsSync(irPath)) {
+ const output = fs.readFileSync(irPath, 'utf-8');
+ // uses same filters as main compiler
+ return this.llvmIr.process(output, filters);
+ }
+ return output.stderr;
+ }
}
module.exports = LDCCompiler;