Author: Jan Svoboda Date: 2023-09-13T13:32:26-07:00 New Revision: 1b07d4329880c98f313da426272be5cf50c0768d
URL: https://github.com/llvm/llvm-project/commit/1b07d4329880c98f313da426272be5cf50c0768d DIFF: https://github.com/llvm/llvm-project/commit/1b07d4329880c98f313da426272be5cf50c0768d.diff LOG: [clang] NFCI: Use `FileEntryRef` in `ModuleMap::InferredModuleAllowedBy` Added: Modified: clang/include/clang/Lex/ModuleMap.h clang/lib/Frontend/FrontendAction.cpp clang/lib/Lex/ModuleMap.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Lex/ModuleMap.h b/clang/include/clang/Lex/ModuleMap.h index 0da1cdc97a75cc6..086b37a78c2927b 100644 --- a/clang/include/clang/Lex/ModuleMap.h +++ b/clang/include/clang/Lex/ModuleMap.h @@ -259,8 +259,8 @@ class ModuleMap { Attributes Attrs; /// If \c InferModules is non-zero, the module map file that allowed - /// inferred modules. Otherwise, nullptr. - const FileEntry *ModuleMapFile; + /// inferred modules. Otherwise, nullopt. + OptionalFileEntryRef ModuleMapFile; /// The names of modules that cannot be inferred within this /// directory. @@ -275,7 +275,8 @@ class ModuleMap { /// A mapping from an inferred module to the module map that allowed the /// inference. - llvm::DenseMap<const Module *, const FileEntry *> InferredModuleAllowedBy; + // FIXME: Consider making the values non-optional. + llvm::DenseMap<const Module *, OptionalFileEntryRef> InferredModuleAllowedBy; llvm::DenseMap<const Module *, AdditionalModMapsSet> AdditionalModMaps; @@ -631,7 +632,7 @@ class ModuleMap { /// getContainingModuleMapFile(). OptionalFileEntryRef getModuleMapFileForUniquing(const Module *M) const; - void setInferredModuleAllowedBy(Module *M, const FileEntry *ModMap); + void setInferredModuleAllowedBy(Module *M, OptionalFileEntryRef ModMap); /// Canonicalize \p Path in a manner suitable for a module map file. In /// particular, this canonicalizes the parent directory separately from the diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp index 7912ff0a144bf08..ada86b0a015661d 100644 --- a/clang/lib/Frontend/FrontendAction.cpp +++ b/clang/lib/Frontend/FrontendAction.cpp @@ -525,15 +525,15 @@ static Module *prepareToBuildModule(CompilerInstance &CI, StringRef OriginalModuleMapName = CI.getFrontendOpts().OriginalModuleMap; if (!OriginalModuleMapName.empty()) { auto OriginalModuleMap = - CI.getFileManager().getFile(OriginalModuleMapName, - /*openFile*/ true); + CI.getFileManager().getOptionalFileRef(OriginalModuleMapName, + /*openFile*/ true); if (!OriginalModuleMap) { CI.getDiagnostics().Report(diag::err_module_map_not_found) << OriginalModuleMapName; return nullptr; } - if (*OriginalModuleMap != CI.getSourceManager().getFileEntryForID( - CI.getSourceManager().getMainFileID())) { + if (*OriginalModuleMap != CI.getSourceManager().getFileEntryRefForID( + CI.getSourceManager().getMainFileID())) { M->IsInferred = true; CI.getPreprocessor().getHeaderSearchInfo().getModuleMap() .setInferredModuleAllowedBy(M, *OriginalModuleMap); diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp index b4483cd1a55c469..bee3a484f84bd47 100644 --- a/clang/lib/Lex/ModuleMap.cpp +++ b/clang/lib/Lex/ModuleMap.cpp @@ -622,7 +622,7 @@ ModuleMap::findOrCreateModuleForHeaderInUmbrellaDir(FileEntryRef File) { UmbrellaModule = UmbrellaModule->Parent; if (UmbrellaModule->InferSubmodules) { - OptionalFileEntryRefDegradesToFileEntryPtr UmbrellaModuleMap = + OptionalFileEntryRef UmbrellaModuleMap = getModuleMapFileForUniquing(UmbrellaModule); // Infer submodules for each of the directories we found between @@ -993,7 +993,7 @@ Module *ModuleMap::inferFrameworkModule(DirectoryEntryRef FrameworkDir, // If the framework has a parent path from which we're allowed to infer // a framework module, do so. - const FileEntry *ModuleMapFile = nullptr; + OptionalFileEntryRef ModuleMapFile; if (!Parent) { // Determine whether we're allowed to infer a module map. bool canInfer = false; @@ -1294,13 +1294,13 @@ OptionalFileEntryRef ModuleMap::getModuleMapFileForUniquing(const Module *M) const { if (M->IsInferred) { assert(InferredModuleAllowedBy.count(M) && "missing inferred module map"); - // FIXME: Update InferredModuleAllowedBy to use FileEntryRef. - return InferredModuleAllowedBy.find(M)->second->getLastRef(); + return InferredModuleAllowedBy.find(M)->second; } return getContainingModuleMapFile(M); } -void ModuleMap::setInferredModuleAllowedBy(Module *M, const FileEntry *ModMap) { +void ModuleMap::setInferredModuleAllowedBy(Module *M, + OptionalFileEntryRef ModMap) { assert(M->IsInferred && "module not inferred"); InferredModuleAllowedBy[M] = ModMap; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits