Skip to content

Commit f422920

Browse files
committed
[clang][deps] Ensure deterministic order of TU '-fmodule-file=' arguments
Translation units with multiple direct modular dependencies trigger a non-deterministic ordering in `clang-scan-deps`. This boils down to usage of `std::unordered_map`, which gets replaced by `std::map` in this patch. Depends on D103526. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D103807
1 parent 94e56ed commit f422920

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ DependencyScanningTool::getFullDependencies(
180180
private:
181181
std::vector<std::string> Dependencies;
182182
std::vector<PrebuiltModuleDep> PrebuiltModuleDeps;
183-
std::unordered_map<std::string, ModuleDeps> ClangModuleDeps;
183+
std::map<std::string, ModuleDeps> ClangModuleDeps;
184184
std::string ContextHash;
185185
std::vector<std::string> OutputPaths;
186186
const llvm::StringSet<> &AlreadySeen;

clang/test/ClangScanDeps/modules-pch.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,9 @@
9090
// CHECK-PCH-NEXT: "command-line": [
9191
// CHECK-PCH-NEXT: "-fno-implicit-modules",
9292
// CHECK-PCH-NEXT: "-fno-implicit-module-maps",
93-
// CHECK-PCH-DAG: "-fmodule-file=[[PREFIX]]/build/[[HASH_MOD_COMMON_1]]/ModCommon1-{{.*}}.pcm",
94-
// CHECK-PCH-DAG: "-fmodule-file=[[PREFIX]]/build/[[HASH_MOD_COMMON_2]]/ModCommon2-{{.*}}.pcm",
95-
// CHECK-PCH-DAG: "-fmodule-file=[[PREFIX]]/build/[[HASH_MOD_PCH]]/ModPCH-{{.*}}.pcm",
93+
// CHECK-PCH-NEXT: "-fmodule-file=[[PREFIX]]/build/[[HASH_MOD_COMMON_1]]/ModCommon1-{{.*}}.pcm",
94+
// CHECK-PCH-NEXT: "-fmodule-file=[[PREFIX]]/build/[[HASH_MOD_COMMON_2]]/ModCommon2-{{.*}}.pcm",
95+
// CHECK-PCH-NEXT: "-fmodule-file=[[PREFIX]]/build/[[HASH_MOD_PCH]]/ModPCH-{{.*}}.pcm",
9696
// CHECK-PCH-NEXT: "-fmodule-map-file=[[PREFIX]]/module.modulemap",
9797
// CHECK-PCH-NEXT: "-fmodule-map-file=[[PREFIX]]/module.modulemap",
9898
// CHECK-PCH-NEXT: "-fmodule-map-file=[[PREFIX]]/module.modulemap"

0 commit comments

Comments
 (0)