Skip to content

Commit 3eae6a8

Browse files
committed
[Clang][ScanDeps] Use the module map a module was inferred from for inferred modules.
1 parent b05c4d3 commit 3eae6a8

File tree

6 files changed

+71
-1
lines changed

6 files changed

+71
-1
lines changed

clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void ModuleDepCollectorPP::handleTopLevelModule(const Module *M) {
145145
const FileEntry *ModuleMap = Instance.getPreprocessor()
146146
.getHeaderSearchInfo()
147147
.getModuleMap()
148-
.getContainingModuleMapFile(M);
148+
.getModuleMapFileForUniquing(M);
149149

150150
MD.ClangModuleMapFile = std::string(ModuleMap ? ModuleMap->getName() : "");
151151
MD.ModuleName = M->getFullModuleName();

clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
typedef int inferred;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
framework module * {}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[
2+
{
3+
"directory": "DIR",
4+
"command": "clang -E DIR/modules_cdb_input.cpp -FFRAMEWORKS -fmodules -fmodules-cache-path=DIR/module-cache -fimplicit-modules -fimplicit-module-maps",
5+
"file": "DIR/modules_cdb_input.cpp"
6+
}
7+
]
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// RUN: rm -rf %t.dir
2+
// RUN: rm -rf %t.cdb
3+
// RUN: mkdir -p %t.dir
4+
// RUN: cp %s %t.dir/modules_cdb_input.cpp
5+
// RUN: sed -e "s|DIR|%/t.dir|g" -e "s|FRAMEWORKS|%S/Inputs/frameworks|g" \
6+
// RUN: %S/Inputs/modules_inferred_cdb.json > %t.cdb
7+
//
8+
// RUN: echo -%t.dir > %t.result
9+
// RUN: echo -%S >> %t.result
10+
// RUN: clang-scan-deps -compilation-database %t.cdb -j 1 -full-command-line \
11+
// RUN: -mode preprocess-minimized-sources -format experimental-full >> %t.result
12+
// RUN: cat %t.result | sed 's/\\/\//g' | FileCheck --check-prefixes=CHECK %s
13+
14+
#include <Inferred/Inferred.h>
15+
16+
inferred a = 0;
17+
18+
// CHECK: -[[PREFIX:.*]]
19+
// CHECK-NEXT: -[[SOURCEDIR:.*]]
20+
// CHECK-NEXT: {
21+
// CHECK-NEXT: "modules": [
22+
// CHECK-NEXT: {
23+
// CHECK-NEXT: "clang-module-deps": [],
24+
// CHECK-NEXT: "clang-modulemap-file": "[[SOURCEDIR]]/Inputs/frameworks/module.modulemap",
25+
// CHECK-NEXT: "command-line": [
26+
// CHECK-NEXT: "-remove-preceeding-explicit-module-build-incompatible-options",
27+
// CHECK-NEXT: "-fno-implicit-modules",
28+
// CHECK-NEXT: "-emit-module",
29+
// CHECK-NEXT: "-fmodule-name=Inferred"
30+
// CHECK-NEXT: ],
31+
// CHECK-NEXT: "context-hash": "[[CONTEXT_HASH_H1:[A-Z0-9]+]]",
32+
// CHECK-NEXT: "file-deps": [
33+
// CHECK-NEXT: "[[SOURCEDIR]]/Inputs/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h",
34+
// CHECK-NEXT: "[[SOURCEDIR]]/Inputs/frameworks/Inferred.framework/Headers/Inferred.h",
35+
// CHECK-NEXT: "[[SOURCEDIR]]/Inputs/frameworks/Inferred.framework/__inferred_module.map"
36+
// CHECK-NEXT: ],
37+
// CHECK-NEXT: "name": "Inferred"
38+
// CHECK-NEXT: }
39+
// CHECK-NEXT: ],
40+
// CHECK-NEXT: "translation-units": [
41+
// CHECK-NEXT: {
42+
// CHECK-NEXT: "clang-context-hash": "[[CONTEXT_HASH_H1]]",
43+
// CHECK-NEXT: "clang-module-deps": [
44+
// CHECK-NEXT: {
45+
// CHECK-NEXT: "context-hash": "[[CONTEXT_HASH_H1]]",
46+
// CHECK-NEXT: "module-name": "Inferred"
47+
// CHECK-NEXT: }
48+
// CHECK-NEXT: ],
49+
// CHECK-NEXT: "command-line": [
50+
// CHECK-NEXT: "-fno-implicit-modules",
51+
// CHECK-NEXT: "-fno-implicit-module-maps",
52+
// CHECK-NEXT: "-fmodule-file=[[PREFIX]]/module-cache/[[CONTEXT_HASH_H1]]/Inferred-{{[A-Z0-9]+}}.pcm",
53+
// CHECK-NEXT: "-fmodule-map-file=[[SOURCEDIR]]/Inputs/frameworks/module.modulemap"
54+
// CHECK-NEXT: ],
55+
// CHECK-NEXT: "file-deps": [
56+
// CHECK-NEXT: "[[PREFIX]]/modules_cdb_input.cpp"
57+
// CHECK-NEXT: ],
58+
// CHECK-NEXT: "input-file": "[[PREFIX]]/modules_cdb_input.cpp"
59+
// CHECK-NEXT: }
60+
// CHECK-NEXT: ]
61+
// CHECK-NEXT: }

0 commit comments

Comments
 (0)