aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
diff options
context:
space:
mode:
authorQiongsi Wu <qiongsiwu@gmail.com>2025-05-29 11:11:31 -0700
committerGitHub <noreply@github.com>2025-05-29 11:11:31 -0700
commit8f4fd864033601aad99a10c2b878769b84df7537 (patch)
tree3127fb239e7c7682c6e9441e3c3357b6bf720327 /clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
parent9ca41b6b65680c9eceb938c0e27d8d054114e680 (diff)
downloadllvm-8f4fd864033601aad99a10c2b878769b84df7537.zip
llvm-8f4fd864033601aad99a10c2b878769b84df7537.tar.gz
llvm-8f4fd864033601aad99a10c2b878769b84df7537.tar.bz2
Revert "[clang][Dependency Scanning] Report What a Module Exports during Scanning (#137421)" (#140820)
This reverts commit ea1bfbf3f6399b7d2d840722f0e87542d00f6a35. The commit did not solve the fundamental issue we need to handle and is no longer necessary. rdar://144794793
Diffstat (limited to 'clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp')
-rw-r--r--clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp65
1 files changed, 27 insertions, 38 deletions
diff --git a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
index 45901cb..eb67424 100644
--- a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
+++ b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
@@ -389,10 +389,10 @@ ModuleDepCollector::getInvocationAdjustedForModuleBuildWithoutOutputs(
}
llvm::DenseSet<const FileEntry *> ModuleDepCollector::collectModuleMapFiles(
- ArrayRef<ModuleDeps::DepInfo> ClangModuleDeps) const {
+ ArrayRef<ModuleID> ClangModuleDeps) const {
llvm::DenseSet<const FileEntry *> ModuleMapFiles;
- for (const auto &Info : ClangModuleDeps) {
- ModuleDeps *MD = ModuleDepsByID.lookup(Info.ID);
+ for (const ModuleID &MID : ClangModuleDeps) {
+ ModuleDeps *MD = ModuleDepsByID.lookup(MID);
assert(MD && "Inconsistent dependency info");
// TODO: Track ClangModuleMapFile as `FileEntryRef`.
auto FE = ScanInstance.getFileManager().getOptionalFileRef(
@@ -404,23 +404,21 @@ llvm::DenseSet<const FileEntry *> ModuleDepCollector::collectModuleMapFiles(
}
void ModuleDepCollector::addModuleMapFiles(
- CompilerInvocation &CI,
- ArrayRef<ModuleDeps::DepInfo> ClangModuleDeps) const {
+ CompilerInvocation &CI, ArrayRef<ModuleID> ClangModuleDeps) const {
if (Service.shouldEagerLoadModules())
return; // Only pcm is needed for eager load.
- for (const auto &Info : ClangModuleDeps) {
- ModuleDeps *MD = ModuleDepsByID.lookup(Info.ID);
+ for (const ModuleID &MID : ClangModuleDeps) {
+ ModuleDeps *MD = ModuleDepsByID.lookup(MID);
assert(MD && "Inconsistent dependency info");
CI.getFrontendOpts().ModuleMapFiles.push_back(MD->ClangModuleMapFile);
}
}
void ModuleDepCollector::addModuleFiles(
- CompilerInvocation &CI,
- ArrayRef<ModuleDeps::DepInfo> ClangModuleDeps) const {
- for (const auto &Info : ClangModuleDeps) {
- ModuleDeps *MD = ModuleDepsByID.lookup(Info.ID);
+ CompilerInvocation &CI, ArrayRef<ModuleID> ClangModuleDeps) const {
+ for (const ModuleID &MID : ClangModuleDeps) {
+ ModuleDeps *MD = ModuleDepsByID.lookup(MID);
std::string PCMPath =
Controller.lookupModuleOutput(*MD, ModuleOutputKind::ModuleFile);
@@ -428,15 +426,14 @@ void ModuleDepCollector::addModuleFiles(
CI.getFrontendOpts().ModuleFiles.push_back(std::move(PCMPath));
else
CI.getHeaderSearchOpts().PrebuiltModuleFiles.insert(
- {Info.ID.ModuleName, std::move(PCMPath)});
+ {MID.ModuleName, std::move(PCMPath)});
}
}
void ModuleDepCollector::addModuleFiles(
- CowCompilerInvocation &CI,
- ArrayRef<ModuleDeps::DepInfo> ClangModuleDeps) const {
- for (const auto &Info : ClangModuleDeps) {
- ModuleDeps *MD = ModuleDepsByID.lookup(Info.ID);
+ CowCompilerInvocation &CI, ArrayRef<ModuleID> ClangModuleDeps) const {
+ for (const ModuleID &MID : ClangModuleDeps) {
+ ModuleDeps *MD = ModuleDepsByID.lookup(MID);
std::string PCMPath =
Controller.lookupModuleOutput(*MD, ModuleOutputKind::ModuleFile);
@@ -444,7 +441,7 @@ void ModuleDepCollector::addModuleFiles(
CI.getMutFrontendOpts().ModuleFiles.push_back(std::move(PCMPath));
else
CI.getMutHeaderSearchOpts().PrebuiltModuleFiles.insert(
- {Info.ID.ModuleName, std::move(PCMPath)});
+ {MID.ModuleName, std::move(PCMPath)});
}
}
@@ -474,10 +471,10 @@ void ModuleDepCollector::applyDiscoveredDependencies(CompilerInvocation &CI) {
CI.getFrontendOpts().ModuleMapFiles.emplace_back(
CurrentModuleMap->getNameAsRequested());
- SmallVector<ModuleDeps::DepInfo> DirectDeps;
+ SmallVector<ModuleID> DirectDeps;
for (const auto &KV : ModularDeps)
if (DirectModularDeps.contains(KV.first))
- DirectDeps.push_back({KV.second->ID, /* Exported = */ false});
+ DirectDeps.push_back(KV.second->ID);
// TODO: Report module maps the same way it's done for modular dependencies.
addModuleMapFiles(CI, DirectDeps);
@@ -600,9 +597,9 @@ static std::string getModuleContextHash(const ModuleDeps &MD,
// example, case-insensitive paths to modulemap files. Usually such a case
// would indicate a missed optimization to canonicalize, but it may be
// difficult to canonicalize all cases when there is a VFS.
- for (const auto &Info : MD.ClangModuleDeps) {
- HashBuilder.add(Info.ID.ModuleName);
- HashBuilder.add(Info.ID.ContextHash);
+ for (const auto &ID : MD.ClangModuleDeps) {
+ HashBuilder.add(ID.ModuleName);
+ HashBuilder.add(ID.ContextHash);
}
HashBuilder.add(EagerLoadModules);
@@ -926,10 +923,9 @@ void ModuleDepCollectorPP::addAllSubmoduleDeps(
});
}
-void ModuleDepCollectorPP::addOneModuleDep(const Module *M, bool Exported,
- const ModuleID ID, ModuleDeps &MD) {
- MD.ClangModuleDeps.push_back({ID, Exported});
-
+void ModuleDepCollectorPP::addOneModuleDep(const Module *M, const ModuleID ID,
+ ModuleDeps &MD) {
+ MD.ClangModuleDeps.push_back(ID);
if (MD.IsInStableDirectories)
MD.IsInStableDirectories = MDC.ModularDeps[M]->IsInStableDirectories;
}
@@ -937,19 +933,12 @@ void ModuleDepCollectorPP::addOneModuleDep(const Module *M, bool Exported,
void ModuleDepCollectorPP::addModuleDep(
const Module *M, ModuleDeps &MD,
llvm::DenseSet<const Module *> &AddedModules) {
- SmallVector<Module *> ExportedModulesVector;
- M->getExportedModules(ExportedModulesVector);
- llvm::DenseSet<const Module *> ExportedModulesSet(
- ExportedModulesVector.begin(), ExportedModulesVector.end());
for (const Module *Import : M->Imports) {
- const Module *ImportedTopLevelModule = Import->getTopLevelModule();
- if (ImportedTopLevelModule != M->getTopLevelModule() &&
+ if (Import->getTopLevelModule() != M->getTopLevelModule() &&
!MDC.isPrebuiltModule(Import)) {
- if (auto ImportID = handleTopLevelModule(ImportedTopLevelModule))
- if (AddedModules.insert(ImportedTopLevelModule).second) {
- bool Exported = ExportedModulesSet.contains(ImportedTopLevelModule);
- addOneModuleDep(ImportedTopLevelModule, Exported, *ImportID, MD);
- }
+ if (auto ImportID = handleTopLevelModule(Import->getTopLevelModule()))
+ if (AddedModules.insert(Import->getTopLevelModule()).second)
+ addOneModuleDep(Import->getTopLevelModule(), *ImportID, MD);
}
}
}
@@ -973,7 +962,7 @@ void ModuleDepCollectorPP::addAffectingClangModule(
!MDC.isPrebuiltModule(Affecting)) {
if (auto ImportID = handleTopLevelModule(Affecting))
if (AddedModules.insert(Affecting).second)
- addOneModuleDep(Affecting, /* Exported = */ false, *ImportID, MD);
+ addOneModuleDep(Affecting, *ImportID, MD);
}
}
}