[clang] [clang dependency scanning] Make Current Working Directory Optimization Off by Default (PR #129809)
Qiongsi Wu via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 4 18:59:51 PST 2025
https://github.com/qiongsiwu updated https://github.com/llvm/llvm-project/pull/129809
>From 2037abd8cb44be6a70850225626d9fde4b8058f2 Mon Sep 17 00:00:00 2001
From: Qiongsi Wu <qiongsi_wu at apple.com>
Date: Tue, 4 Mar 2025 16:48:20 -0800
Subject: [PATCH 1/2] Update ScanningOptimizations's default so CWD
optimization is off.
---
.../DependencyScanning/DependencyScanningService.h | 2 +-
clang/test/ClangScanDeps/modules-context-hash-cwd.c | 10 +++++-----
clang/test/ClangScanDeps/modules-debug-dir.c | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
index f002f8645d3f6..b22ba0b1c1dea 100644
--- a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
+++ b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
@@ -67,7 +67,7 @@ enum class ScanningOptimizations {
IgnoreCWD = (1 << 4),
DSS_LAST_BITMASK_ENUM(IgnoreCWD),
- Default = All
+ Default = All & (~IgnoreCWD)
};
#undef DSS_LAST_BITMASK_ENUM
diff --git a/clang/test/ClangScanDeps/modules-context-hash-cwd.c b/clang/test/ClangScanDeps/modules-context-hash-cwd.c
index 459d2c90debe6..c609a7dcbc80e 100644
--- a/clang/test/ClangScanDeps/modules-context-hash-cwd.c
+++ b/clang/test/ClangScanDeps/modules-context-hash-cwd.c
@@ -9,14 +9,14 @@
// RUN: sed -e "s|DIR|%/t|g" %t/cdb3.json.in > %t/cdb3.json
// RUN: sed -e "s|DIR|%/t|g" %t/cdb4.json.in > %t/cdb4.json
// RUN: sed -e "s|DIR|%/t|g" %t/cdb5.json.in > %t/cdb5.json
-// RUN: clang-scan-deps -compilation-database %t/cdb0.json -format experimental-full > %t/result0.json
-// RUN: clang-scan-deps -compilation-database %t/cdb1.json -format experimental-full > %t/result1.json
+// RUN: clang-scan-deps -compilation-database %t/cdb0.json -format experimental-full -optimize-args=all > %t/result0.json
+// RUN: clang-scan-deps -compilation-database %t/cdb1.json -format experimental-full -optimize-args=all > %t/result1.json
// It is not a typo to use cdb1.json for result2. We intend to use the same
// compilation database, but different clang-scan-deps optimize-args options.
// RUN: clang-scan-deps -compilation-database %t/cdb1.json -format experimental-full -optimize-args=header-search,system-warnings,vfs,canonicalize-macros > %t/result2.json
-// RUN: clang-scan-deps -compilation-database %t/cdb3.json -format experimental-full > %t/result3.json
-// RUN: clang-scan-deps -compilation-database %t/cdb4.json -format experimental-full > %t/result4.json
-// RUN: clang-scan-deps -compilation-database %t/cdb5.json -format experimental-full > %t/result5.json
+// RUN: clang-scan-deps -compilation-database %t/cdb3.json -format experimental-full -optimize-args=all > %t/result3.json
+// RUN: clang-scan-deps -compilation-database %t/cdb4.json -format experimental-full -optimize-args=all > %t/result4.json
+// RUN: clang-scan-deps -compilation-database %t/cdb5.json -format experimental-full -optimize-args=all > %t/result5.json
// RUN: cat %t/result0.json %t/result1.json | FileCheck %s
// RUN: cat %t/result0.json %t/result2.json | FileCheck %s -check-prefix=SKIPOPT
// RUN: cat %t/result3.json %t/result4.json | FileCheck %s -check-prefix=RELPATH
diff --git a/clang/test/ClangScanDeps/modules-debug-dir.c b/clang/test/ClangScanDeps/modules-debug-dir.c
index fadec1ad52e35..c4fb4982ed791 100644
--- a/clang/test/ClangScanDeps/modules-debug-dir.c
+++ b/clang/test/ClangScanDeps/modules-debug-dir.c
@@ -4,7 +4,7 @@
// RUN: split-file %s %t
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.in > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format \
-// RUN: experimental-full > %t/result.json
+// RUN: experimental-full -optimize-args=all > %t/result.json
// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s
//--- cdb.json.in
>From 41f7ca51ebf204f419e67a2b1e921a61cf1b9547 Mon Sep 17 00:00:00 2001
From: Qiongsi Wu <qiongsi_wu at apple.com>
Date: Tue, 4 Mar 2025 18:59:36 -0800
Subject: [PATCH 2/2] Adding comments explaining the default behaviour.
---
.../Tooling/DependencyScanning/DependencyScanningService.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
index b22ba0b1c1dea..816e122eb3003 100644
--- a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
+++ b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
@@ -67,6 +67,10 @@ enum class ScanningOptimizations {
IgnoreCWD = (1 << 4),
DSS_LAST_BITMASK_ENUM(IgnoreCWD),
+
+ // The build system needs to be aware that the current working
+ // directory is ignored. Without a good way of notifying the build
+ // system, it is less risky to default to off.
Default = All & (~IgnoreCWD)
};
More information about the cfe-commits
mailing list