diff options
-rw-r--r-- | lib/base-compiler.ts | 7 | ||||
-rw-r--r-- | lib/compilers/clang.ts | 4 | ||||
-rw-r--r-- | test/base-compiler-tests.ts | 35 |
3 files changed, 10 insertions, 36 deletions
diff --git a/lib/base-compiler.ts b/lib/base-compiler.ts index 85a878cc6..128eef1d7 100644 --- a/lib/base-compiler.ts +++ b/lib/base-compiler.ts @@ -2843,7 +2843,12 @@ export class BaseCompiler implements ICompiler { } isCfgCompiler(compilerVersion: string) { - return compilerVersion.includes('clang') || compilerVersion.match(/^([\w-]*-)?g((\+\+)|(cc)|(dc))/g) !== null; + return ( + compilerVersion.includes('clang') || + compilerVersion.includes('icc (ICC)') || + ['amd64', 'arm32', 'aarch64', 'llvm'].includes(this.compiler.instructionSet ?? '') || + compilerVersion.match(/^([\w-]*-)?g((\+\+)|(cc)|(dc))/g) !== null + ); } async processGccDumpOutput(opts, result, removeEmptyPasses, outputFilename) { diff --git a/lib/compilers/clang.ts b/lib/compilers/clang.ts index 9b93e2419..f8ae4b6e5 100644 --- a/lib/compilers/clang.ts +++ b/lib/compilers/clang.ts @@ -70,6 +70,10 @@ export class ClangCompiler extends BaseCompiler { } } + override isCfgCompiler() { + return true; + } + async addTimeTraceToResult(result: CompilationResult, dirPath: string, outputFilename: string) { let timeTraceJson = ''; const outputExt = path.extname(outputFilename); diff --git a/test/base-compiler-tests.ts b/test/base-compiler-tests.ts index f3ac250c4..744937d4b 100644 --- a/test/base-compiler-tests.ts +++ b/test/base-compiler-tests.ts @@ -66,41 +66,6 @@ describe('Basic compiler invariants', function () { compiler.optOutputRequested(['please', 'recognize', '-fsave-optimization-record']).should.equal(true); compiler.optOutputRequested(['please', "don't", 'recognize']).should.equal(false); }); - // Overkill test, but now we're safer! - it('should recognize cfg compilers', () => { - compiler - .isCfgCompiler( - 'clang version 5.0.0 (https://github.com/asutton/clang.git 449c8c3e91355a3b2b6761e11d9fb5d3c125b791) (https://github.com/llvm-mirror/llvm.git 40b1e969f9cb2a0c697e247435193fb006ef1311)', - ) - .should.equal(true); - compiler.isCfgCompiler('clang version 4.0.0 (tags/RELEASE_400/final 299826)').should.equal(true); - compiler.isCfgCompiler('clang version 7.0.0 (trunk 325868)').should.equal(true); - compiler.isCfgCompiler('clang version 3.3 (tags/RELEASE_33/final)').should.equal(true); - compiler - .isCfgCompiler('clang version 6.0.0 (tags/RELEASE_600/final 327031) (llvm/tags/RELEASE_600/final 327028)') - .should.equal(true); - - compiler.isCfgCompiler('g++ (GCC-Explorer-Build) 4.9.4').should.equal(true); - compiler.isCfgCompiler('g++ (GCC-Explorer-Build) 8.0.1 20180223 (experimental)').should.equal(true); - compiler.isCfgCompiler('g++ (GCC-Explorer-Build) 8.0.1 20180223 (experimental)').should.equal(true); - compiler.isCfgCompiler('g++ (GCC) 4.1.2').should.equal(true); - - compiler.isCfgCompiler('foo-bar-g++ (GCC-Explorer-Build) 4.9.4').should.equal(true); - compiler.isCfgCompiler('foo-bar-gcc (GCC-Explorer-Build) 4.9.4').should.equal(true); - compiler.isCfgCompiler('foo-bar-gdc (GCC-Explorer-Build) 4.9.4').should.equal(true); - - compiler.isCfgCompiler('fake-for-test (Based on g++)').should.equal(false); - - compiler.isCfgCompiler('gdc (crosstool-NG 203be35 - 20160205-2.066.1-e95a735b97) 5.2.0').should.equal(true); - compiler - .isCfgCompiler('gdc (crosstool-NG hg+unknown-20131212.080758 - 20140430-2.064.2-404a037d26) 4.8.2') - .should.equal(true); - compiler - .isCfgCompiler('gdc (crosstool-NG crosstool-ng-1.20.0-232-gc746732 - 20150830-2.066.1-d0dd4a83de) 4.9.3') - .should.equal(true); - - compiler.isCfgCompiler('fake-for-test (Based on gdc)').should.equal(false); - }); it('should allow comments next to includes (Bug #874)', () => { should.equal(compiler.checkSource('#include <cmath> // std::(sin, cos, ...)'), null); const badSource = compiler.checkSource('#include </dev/null..> //Muehehehe'); |