Skip to content

Commit

Permalink
[clang][deps] NFC: Don't collect PCH input files
Browse files Browse the repository at this point in the history
Since b4c83a1, PCH input files are no longer necessary.
  • Loading branch information
jansvoboda11 committed Apr 5, 2023
1 parent 9184373 commit 34f1439
Showing 1 changed file with 5 additions and 21 deletions.
26 changes: 5 additions & 21 deletions clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,44 +66,30 @@ using PrebuiltModuleFilesT = decltype(HeaderSearchOptions::PrebuiltModuleFiles);
class PrebuiltModuleListener : public ASTReaderListener {
public:
PrebuiltModuleListener(PrebuiltModuleFilesT &PrebuiltModuleFiles,
llvm::StringSet<> &InputFiles, bool VisitInputFiles,
llvm::SmallVector<std::string> &NewModuleFiles)
: PrebuiltModuleFiles(PrebuiltModuleFiles), InputFiles(InputFiles),
VisitInputFiles(VisitInputFiles), NewModuleFiles(NewModuleFiles) {}
: PrebuiltModuleFiles(PrebuiltModuleFiles),
NewModuleFiles(NewModuleFiles) {}

bool needsImportVisitation() const override { return true; }
bool needsInputFileVisitation() override { return VisitInputFiles; }
bool needsSystemInputFileVisitation() override { return VisitInputFiles; }

void visitImport(StringRef ModuleName, StringRef Filename) override {
if (PrebuiltModuleFiles.insert({ModuleName.str(), Filename.str()}).second)
NewModuleFiles.push_back(Filename.str());
}

bool visitInputFile(StringRef Filename, bool isSystem, bool isOverridden,
bool isExplicitModule) override {
InputFiles.insert(Filename);
return true;
}

private:
PrebuiltModuleFilesT &PrebuiltModuleFiles;
llvm::StringSet<> &InputFiles;
bool VisitInputFiles;
llvm::SmallVector<std::string> &NewModuleFiles;
};

/// Visit the given prebuilt module and collect all of the modules it
/// transitively imports and contributing input files.
static void visitPrebuiltModule(StringRef PrebuiltModuleFilename,
CompilerInstance &CI,
PrebuiltModuleFilesT &ModuleFiles,
llvm::StringSet<> &InputFiles,
bool VisitInputFiles) {
PrebuiltModuleFilesT &ModuleFiles) {
// List of module files to be processed.
llvm::SmallVector<std::string> Worklist{PrebuiltModuleFilename.str()};
PrebuiltModuleListener Listener(ModuleFiles, InputFiles, VisitInputFiles,
Worklist);
PrebuiltModuleListener Listener(ModuleFiles, Worklist);

while (!Worklist.empty())
ASTReader::readASTFileControlBlock(
Expand Down Expand Up @@ -204,15 +190,13 @@ class DependencyScanningAction : public tooling::ToolAction {

ScanInstance.createSourceManager(*FileMgr);

llvm::StringSet<> PrebuiltModulesInputFiles;
// Store the list of prebuilt module files into header search options. This
// will prevent the implicit build to create duplicate modules and will
// force reuse of the existing prebuilt module files instead.
if (!ScanInstance.getPreprocessorOpts().ImplicitPCHInclude.empty())
visitPrebuiltModule(
ScanInstance.getPreprocessorOpts().ImplicitPCHInclude, ScanInstance,
ScanInstance.getHeaderSearchOpts().PrebuiltModuleFiles,
PrebuiltModulesInputFiles, /*VisitInputFiles=*/DepFS != nullptr);
ScanInstance.getHeaderSearchOpts().PrebuiltModuleFiles);

// Use the dependency scanning optimized file system if requested to do so.
if (DepFS) {
Expand Down

0 comments on commit 34f1439

Please sign in to comment.