[clang] e007551 - [clang][modules] Strip LLVM options (#75405)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 14 09:21:21 PST 2023
Author: Juergen Ributzka
Date: 2023-12-14T09:21:18-08:00
New Revision: e007551b10bda9584223e8583591155070a3de4f
URL: https://github.com/llvm/llvm-project/commit/e007551b10bda9584223e8583591155070a3de4f
DIFF: https://github.com/llvm/llvm-project/commit/e007551b10bda9584223e8583591155070a3de4f.diff
LOG: [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.
Added:
clang/test/ClangScanDeps/strip-llvm-args.m
Modified:
clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
Removed:
################################################################################
diff --git a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
index 4a3cd054f23d92..bfaa897851041d 100644
--- a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
+++ b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
@@ -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();
diff --git a/clang/test/ClangScanDeps/strip-llvm-args.m b/clang/test/ClangScanDeps/strip-llvm-args.m
new file mode 100644
index 00000000000000..ca8eab7729232b
--- /dev/null
+++ b/clang/test/ClangScanDeps/strip-llvm-args.m
@@ -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
+ at import A;
+
+//--- t2.m
+ at import A;
More information about the cfe-commits
mailing list