mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-18 16:58:23 +00:00
[clang][modules] Strip LLVM options (#75405)
Currently, the dep scanner does not remove LLVM options from the argument list. Since LLVM options shouldn't affect the AST, it is safe to remove them all.
This commit is contained in:
parent
2c9ba9c34a
commit
e007551b10
@ -119,6 +119,8 @@ makeCommonInvocationForModuleBuild(CompilerInvocation CI) {
|
||||
// units.
|
||||
CI.getFrontendOpts().Inputs.clear();
|
||||
CI.getFrontendOpts().OutputFile.clear();
|
||||
// LLVM options are not going to affect the AST
|
||||
CI.getFrontendOpts().LLVMArgs.clear();
|
||||
|
||||
// TODO: Figure out better way to set options to their default value.
|
||||
CI.getCodeGenOpts().MainFileName.clear();
|
||||
|
46
clang/test/ClangScanDeps/strip-llvm-args.m
Normal file
46
clang/test/ClangScanDeps/strip-llvm-args.m
Normal file
@ -0,0 +1,46 @@
|
||||
// RUN: rm -rf %t
|
||||
// RUN: split-file %s %t
|
||||
// RUN: sed -e "s|DIR|%/t|g" %t/cdb1.json.template > %t/cdb1.json
|
||||
|
||||
// RUN: clang-scan-deps -compilation-database %t/cdb1.json -format experimental-full > %t/result1.txt
|
||||
// RUN: FileCheck %s -input-file %t/result1.txt
|
||||
|
||||
// CHECK: "modules": [
|
||||
// CHECK-NEXT: {
|
||||
// CHECK: "command-line": [
|
||||
// CHECK-NOT: "-mllvm"
|
||||
// CHECK: ]
|
||||
// CHECK: "name": "A"
|
||||
// CHECK: }
|
||||
// CHECK-NOT: "name": "A"
|
||||
// CHECK: "translation-units"
|
||||
|
||||
//--- cdb1.json.template
|
||||
[
|
||||
{
|
||||
"directory": "DIR",
|
||||
"command": "clang -Imodules/A -fmodules -fmodules-cache-path=DIR/module-cache -fimplicit-modules -fimplicit-module-maps -fsyntax-only DIR/t1.m",
|
||||
"file": "DIR/t1.m"
|
||||
},
|
||||
{
|
||||
"directory": "DIR",
|
||||
"command": "clang -Imodules/A -fmodules -fmodules-cache-path=DIR/module-cache -fimplicit-modules -fimplicit-module-maps -mllvm -stackmap-version=2 -fsyntax-only DIR/t2.m",
|
||||
"file": "DIR/t2.m"
|
||||
}
|
||||
]
|
||||
|
||||
//--- modules/A/module.modulemap
|
||||
|
||||
module A {
|
||||
umbrella header "A.h"
|
||||
}
|
||||
|
||||
//--- modules/A/A.h
|
||||
|
||||
typedef int A_t;
|
||||
|
||||
//--- t1.m
|
||||
@import A;
|
||||
|
||||
//--- t2.m
|
||||
@import A;
|
Loading…
x
Reference in New Issue
Block a user