[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:
Juergen Ributzka 2023-12-14 09:21:18 -08:00 committed by GitHub
parent 2c9ba9c34a
commit e007551b10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 0 deletions

View File

@ -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();

View 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;