aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers')
-rw-r--r--lib/compilers/clean.js3
-rw-r--r--lib/compilers/ispc.js21
-rw-r--r--lib/compilers/typescript.js24
3 files changed, 45 insertions, 3 deletions
diff --git a/lib/compilers/clean.js b/lib/compilers/clean.js
index 2d81b28bd..26dfc28c6 100644
--- a/lib/compilers/clean.js
+++ b/lib/compilers/clean.js
@@ -1,6 +1,3 @@
-/**
- * @prettier
- */
// Copyright (c) 2018, Compiler Explorer Authors
// All rights reserved.
//
diff --git a/lib/compilers/ispc.js b/lib/compilers/ispc.js
index 8c1481b8a..897c0976f 100644
--- a/lib/compilers/ispc.js
+++ b/lib/compilers/ispc.js
@@ -22,7 +22,11 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
+import Semver from 'semver';
+import _ from 'underscore';
+
import {BaseCompiler} from '../base-compiler';
+import {asSafeVer} from '../utils';
import {ISPCParser} from './argument-parsers';
@@ -37,6 +41,10 @@ export class ISPCCompiler extends BaseCompiler {
this.compiler.irArg = ['--emit-llvm-text'];
}
+ couldSupportASTDump(version) {
+ return Semver.gte(asSafeVer(this.compiler.semver), '1.18.0', true);
+ }
+
optionsForFilter(filters, outputFilename) {
let options = ['--target=avx2-i32x8', '--emit-asm', '-g', '-o', this.filename(outputFilename)];
if (this.compiler.intelAsm && filters.intel && !filters.binary) {
@@ -54,6 +62,19 @@ export class ISPCCompiler extends BaseCompiler {
return ISPCParser;
}
+ async generateAST(inputFilename, options) {
+ // These options make Clang produce an AST dump
+ const newOptions = _.filter(options, option => option !== '--colored-output').concat(['--ast-dump']);
+
+ const execOptions = this.getDefaultExecOptions();
+ // A higher max output is needed for when the user includes headers
+ execOptions.maxOutput = 1024 * 1024 * 1024;
+
+ return this.llvmAst.processAst(
+ await this.runCompiler(this.compiler.exe, newOptions, this.filename(inputFilename), execOptions),
+ );
+ }
+
isCfgCompiler(/*compilerVersion*/) {
return true;
}
diff --git a/lib/compilers/typescript.js b/lib/compilers/typescript.js
index 732e482ca..19da2b5cb 100644
--- a/lib/compilers/typescript.js
+++ b/lib/compilers/typescript.js
@@ -1,3 +1,27 @@
+// Copyright (c) 2022, Compiler Explorer Authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
import {BaseCompiler} from '../base-compiler';
import {TypeScriptNativeParser} from './argument-parsers';