Skip to content

Commit 3963e11

Browse files
committed
[clang][DepScan] Pass references to ModuleDeps instead of ModuleID in lookupModuleOutput callbacks, NCFI
Update remaining callsites on this fork.
1 parent 474fb5b commit 3963e11

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

clang/tools/libclang/CDependencies.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ class OutputLookup {
323323
public:
324324
OutputLookup(void *MLOContext, CXModuleLookupOutputCallback *MLO)
325325
: MLOContext(MLOContext), MLO(MLO) {}
326-
std::string lookupModuleOutput(const ModuleID &ID, ModuleOutputKind MOK);
326+
std::string lookupModuleOutput(const ModuleDeps &MD, ModuleOutputKind MOK);
327327

328328
private:
329329
llvm::DenseMap<ModuleID, std::string> PCMPaths;
@@ -339,8 +339,8 @@ clang_experimental_DependencyScannerWorker_getFileDependencies_v3(
339339
CXModuleDiscoveredCallback *MDC, void *MLOContext,
340340
CXModuleLookupOutputCallback *MLO, unsigned, CXString *Error) {
341341
OutputLookup OL(MLOContext, MLO);
342-
auto LookupOutputs = [&](const ModuleID &ID, ModuleOutputKind MOK) {
343-
return OL.lookupModuleOutput(ID, MOK);
342+
auto LookupOutputs = [&](const ModuleDeps &MD, ModuleOutputKind MOK) {
343+
return OL.lookupModuleOutput(MD, MOK);
344344
};
345345
CXFileDependencies *FDeps = nullptr;
346346
CXErrorCode Result = getFileDependencies(
@@ -370,8 +370,8 @@ CXErrorCode clang_experimental_DependencyScannerWorker_getFileDependencies_v4(
370370
CXModuleLookupOutputCallback *MLO, unsigned, CXFileDependenciesList **Out,
371371
CXString *Error) {
372372
OutputLookup OL(MLOContext, MLO);
373-
auto LookupOutputs = [&](const ModuleID &ID, ModuleOutputKind MOK) {
374-
return OL.lookupModuleOutput(ID, MOK);
373+
auto LookupOutputs = [&](const ModuleDeps &MD, ModuleOutputKind MOK) {
374+
return OL.lookupModuleOutput(MD, MOK);
375375
};
376376

377377
if (!Out)
@@ -515,8 +515,8 @@ enum CXErrorCode clang_experimental_DependencyScannerWorker_getDepGraph(
515515
CXModuleLookupOutputCallback *MLO = Settings.MLO;
516516

517517
OutputLookup OL(MLOContext, MLO);
518-
auto LookupOutputs = [&](const ModuleID &ID, ModuleOutputKind MOK) {
519-
return OL.lookupModuleOutput(ID, MOK);
518+
auto LookupOutputs = [&](const ModuleDeps &MD, ModuleOutputKind MOK) {
519+
return OL.lookupModuleOutput(MD, MOK);
520520
};
521521

522522
if (!Out)
@@ -695,27 +695,28 @@ CXDiagnosticSet clang_experimental_DepGraph_getDiagnostics(CXDepGraph Graph) {
695695
return unwrap(Graph)->getDiagnosticSet();
696696
}
697697

698-
static std::string lookupModuleOutput(const ModuleID &ID, ModuleOutputKind MOK,
699-
void *MLOContext,
698+
static std::string lookupModuleOutput(const ModuleDeps &MD,
699+
ModuleOutputKind MOK, void *MLOContext,
700700
CXModuleLookupOutputCallback *MLO) {
701701
SmallVector<char, 256> Buffer(256);
702-
size_t Len = MLO(MLOContext, ID.ModuleName.c_str(), ID.ContextHash.c_str(),
703-
wrap(MOK), Buffer.data(), Buffer.size());
702+
size_t Len =
703+
MLO(MLOContext, MD.ID.ModuleName.c_str(), MD.ID.ContextHash.c_str(),
704+
wrap(MOK), Buffer.data(), Buffer.size());
704705
if (Len > Buffer.size()) {
705706
Buffer.resize(Len);
706-
Len = MLO(MLOContext, ID.ModuleName.c_str(), ID.ContextHash.c_str(),
707+
Len = MLO(MLOContext, MD.ID.ModuleName.c_str(), MD.ID.ContextHash.c_str(),
707708
wrap(MOK), Buffer.data(), Buffer.size());
708709
}
709710
return std::string(Buffer.begin(), Len);
710711
}
711712

712-
std::string OutputLookup::lookupModuleOutput(const ModuleID &ID,
713+
std::string OutputLookup::lookupModuleOutput(const ModuleDeps &MD,
713714
ModuleOutputKind MOK) {
714715
if (MOK != ModuleOutputKind::ModuleFile)
715-
return ::lookupModuleOutput(ID, MOK, MLOContext, MLO);
716+
return ::lookupModuleOutput(MD, MOK, MLOContext, MLO);
716717
// PCM paths are looked up repeatedly, so cache them.
717-
auto PCMPath = PCMPaths.insert({ID, ""});
718+
auto PCMPath = PCMPaths.insert({MD.ID, ""});
718719
if (PCMPath.second)
719-
PCMPath.first->second = ::lookupModuleOutput(ID, MOK, MLOContext, MLO);
720+
PCMPath.first->second = ::lookupModuleOutput(MD, MOK, MLOContext, MLO);
720721
return PCMPath.first->second;
721722
}

0 commit comments

Comments
 (0)