Skip to content

Commit ad8f0e2

Browse files
authored
[clang][DepScan] Pass references to ModuleDeps instead of ModuleID in lookupModuleOutput callbacks, NFCI (llvm#131688)
This allows clients to reference more read-only attributes, like IsInStableDirectories.
1 parent c1fabd6 commit ad8f0e2

File tree

5 files changed

+22
-17
lines changed

5 files changed

+22
-17
lines changed

clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace dependencies {
2626

2727
/// A callback to lookup module outputs for "-fmodule-file=", "-o" etc.
2828
using LookupModuleOutputCallback =
29-
std::function<std::string(const ModuleID &, ModuleOutputKind)>;
29+
llvm::function_ref<std::string(const ModuleDeps &, ModuleOutputKind)>;
3030

3131
/// Graph of modular dependencies.
3232
using ModuleDepsGraph = std::vector<ModuleDeps>;
@@ -211,16 +211,16 @@ class CallbackActionController : public DependencyActionController {
211211
CallbackActionController(LookupModuleOutputCallback LMO)
212212
: LookupModuleOutput(std::move(LMO)) {
213213
if (!LookupModuleOutput) {
214-
LookupModuleOutput = [](const ModuleID &,
214+
LookupModuleOutput = [](const ModuleDeps &,
215215
ModuleOutputKind) -> std::string {
216216
llvm::report_fatal_error("unexpected call to lookupModuleOutput");
217217
};
218218
}
219219
}
220220

221-
std::string lookupModuleOutput(const ModuleID &ID,
221+
std::string lookupModuleOutput(const ModuleDeps &MD,
222222
ModuleOutputKind Kind) override {
223-
return LookupModuleOutput(ID, Kind);
223+
return LookupModuleOutput(MD, Kind);
224224
}
225225

226226
private:

clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class DependencyActionController {
6868
public:
6969
virtual ~DependencyActionController();
7070

71-
virtual std::string lookupModuleOutput(const ModuleID &ID,
71+
virtual std::string lookupModuleOutput(const ModuleDeps &MD,
7272
ModuleOutputKind Kind) = 0;
7373
};
7474

clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ llvm::Expected<P1689Rule> DependencyScanningTool::getP1689ModuleDependencyFile(
118118
class P1689ActionController : public DependencyActionController {
119119
public:
120120
// The lookupModuleOutput is for clang modules. P1689 format don't need it.
121-
std::string lookupModuleOutput(const ModuleID &,
121+
std::string lookupModuleOutput(const ModuleDeps &,
122122
ModuleOutputKind Kind) override {
123123
return "";
124124
}

clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -196,17 +196,17 @@ static std::vector<std::string> splitString(std::string S, char Separator) {
196196
void ModuleDepCollector::addOutputPaths(CowCompilerInvocation &CI,
197197
ModuleDeps &Deps) {
198198
CI.getMutFrontendOpts().OutputFile =
199-
Controller.lookupModuleOutput(Deps.ID, ModuleOutputKind::ModuleFile);
199+
Controller.lookupModuleOutput(Deps, ModuleOutputKind::ModuleFile);
200200
if (!CI.getDiagnosticOpts().DiagnosticSerializationFile.empty())
201201
CI.getMutDiagnosticOpts().DiagnosticSerializationFile =
202202
Controller.lookupModuleOutput(
203-
Deps.ID, ModuleOutputKind::DiagnosticSerializationFile);
203+
Deps, ModuleOutputKind::DiagnosticSerializationFile);
204204
if (!CI.getDependencyOutputOpts().OutputFile.empty()) {
205-
CI.getMutDependencyOutputOpts().OutputFile = Controller.lookupModuleOutput(
206-
Deps.ID, ModuleOutputKind::DependencyFile);
205+
CI.getMutDependencyOutputOpts().OutputFile =
206+
Controller.lookupModuleOutput(Deps, ModuleOutputKind::DependencyFile);
207207
CI.getMutDependencyOutputOpts().Targets =
208208
splitString(Controller.lookupModuleOutput(
209-
Deps.ID, ModuleOutputKind::DependencyTargets),
209+
Deps, ModuleOutputKind::DependencyTargets),
210210
'\0');
211211
if (!CI.getDependencyOutputOpts().OutputFile.empty() &&
212212
CI.getDependencyOutputOpts().Targets.empty()) {
@@ -404,8 +404,10 @@ void ModuleDepCollector::addModuleMapFiles(
404404
void ModuleDepCollector::addModuleFiles(
405405
CompilerInvocation &CI, ArrayRef<ModuleID> ClangModuleDeps) const {
406406
for (const ModuleID &MID : ClangModuleDeps) {
407+
ModuleDeps *MD = ModuleDepsByID.lookup(MID);
407408
std::string PCMPath =
408-
Controller.lookupModuleOutput(MID, ModuleOutputKind::ModuleFile);
409+
Controller.lookupModuleOutput(*MD, ModuleOutputKind::ModuleFile);
410+
409411
if (Service.shouldEagerLoadModules())
410412
CI.getFrontendOpts().ModuleFiles.push_back(std::move(PCMPath));
411413
else
@@ -417,8 +419,10 @@ void ModuleDepCollector::addModuleFiles(
417419
void ModuleDepCollector::addModuleFiles(
418420
CowCompilerInvocation &CI, ArrayRef<ModuleID> ClangModuleDeps) const {
419421
for (const ModuleID &MID : ClangModuleDeps) {
422+
ModuleDeps *MD = ModuleDepsByID.lookup(MID);
420423
std::string PCMPath =
421-
Controller.lookupModuleOutput(MID, ModuleOutputKind::ModuleFile);
424+
Controller.lookupModuleOutput(*MD, ModuleOutputKind::ModuleFile);
425+
422426
if (Service.shouldEagerLoadModules())
423427
CI.getMutFrontendOpts().ModuleFiles.push_back(std::move(PCMPath));
424428
else

clang/tools/clang-scan-deps/ClangScanDeps.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -709,9 +709,10 @@ static std::string constructPCMPath(ModuleID MID, StringRef OutputDir) {
709709
return std::string(ExplicitPCMPath);
710710
}
711711

712-
static std::string lookupModuleOutput(const ModuleID &MID, ModuleOutputKind MOK,
712+
static std::string lookupModuleOutput(const ModuleDeps &MD,
713+
ModuleOutputKind MOK,
713714
StringRef OutputDir) {
714-
std::string PCMPath = constructPCMPath(MID, OutputDir);
715+
std::string PCMPath = constructPCMPath(MD.ID, OutputDir);
715716
switch (MOK) {
716717
case ModuleOutputKind::ModuleFile:
717718
return PCMPath;
@@ -974,8 +975,8 @@ int clang_scan_deps_main(int argc, char **argv, const llvm::ToolContext &) {
974975
std::string OutputDir(ModuleFilesDir);
975976
if (OutputDir.empty())
976977
OutputDir = getModuleCachePath(Input->CommandLine);
977-
auto LookupOutput = [&](const ModuleID &MID, ModuleOutputKind MOK) {
978-
return ::lookupModuleOutput(MID, MOK, OutputDir);
978+
auto LookupOutput = [&](const ModuleDeps &MD, ModuleOutputKind MOK) {
979+
return ::lookupModuleOutput(MD, MOK, OutputDir);
979980
};
980981

981982
// Run the tool on it.

0 commit comments

Comments
 (0)