[clang] 1b07d43 - [clang] NFCI: Use `FileEntryRef` in `ModuleMap::InferredModuleAllowedBy`
Jan Svoboda via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 13 13:32:32 PDT 2023
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;
}
More information about the cfe-commits
mailing list