================
@@ -0,0 +1,43 @@
+// UNSUPPORTED: system-windows
+// RUN: rm -rf %t
+// RUN: split-file %s %t
+
+// Verify the stable dir path.
+//--- Sysroot/usr/include/SysA/module.modulemap
+module SysA {
+  header "SysA.h"
+}
+
+//--- Sysroot/usr/include/SysA/SysA.h
+int SysVal = 42;
+
+//--- cdb.json.template
+[{
+  "file": "",
+  "directory": "DIR",
+  "command": "clang -fmodules -fmodules-cache-path=DIR/cache -isysroot 
DIR/Sysroot -IDIR/Sysroot/usr/include -x c"
+}]
----------------
qiongsiwu wrote:

I experimented with avoiding the compilation database and was surprised to 
discover that we need the json compilation database for -by-name lookups if we 
don't change the logic in `clang-scan-deps`. 

Specifically, when we do not have a compilation database, we proceed to create 
a driver, and build a `Compilation` from the driver 
(https://github.com/llvm/llvm-project/blob/5af03989cc01e7bf9a45240d86411e9eee5b0e8b/clang/tools/clang-scan-deps/ClangScanDeps.cpp#L826).
 For the compilation to succeed, the clang command needs an input file. With 
the suggested command, `clang-scan-deps` exists early at 
https://github.com/llvm/llvm-project/blob/5af03989cc01e7bf9a45240d86411e9eee5b0e8b/clang/tools/clang-scan-deps/ClangScanDeps.cpp#L893.
 

I tried creating an empty input file for this test, but the scanner crashed. I 
believe the reason is that for by-name lookups we end up creating a fake input 
file ourselves, so it conflicts with the fake one I am adding here. 

In light of this, I think it is ok to keep the json file for this PR. If we are 
inclined to make sure the one command case work for by-name scans, I will look 
into how to modify clang-scan-deps so we can handle this case better. 

https://github.com/llvm/llvm-project/pull/168143
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to