[clang] f097290 - [clang] NFCI: Use `FileEntryRef` in `ModuleMapCallbacks`
Jan Svoboda via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 1 10:10:49 PDT 2023
Author: Jan Svoboda
Date: 2023-06-01T10:10:00-07:00
New Revision: f09729042d8f99e1b896f6a04ebf6f842f6cc7ad
URL: https://github.com/llvm/llvm-project/commit/f09729042d8f99e1b896f6a04ebf6f842f6cc7ad
DIFF: https://github.com/llvm/llvm-project/commit/f09729042d8f99e1b896f6a04ebf6f842f6cc7ad.diff
LOG: [clang] NFCI: Use `FileEntryRef` in `ModuleMapCallbacks`
This patch removes path hackery from `ModuleMapCallbacks` by adopting `FileEntryRef`. No functional change intended.
Reviewed By: benlangmuir
Differential Revision: https://reviews.llvm.org/D151852
Added:
Modified:
clang/include/clang/Lex/ModuleMap.h
clang/lib/Frontend/ModuleDependencyCollector.cpp
clang/lib/Lex/ModuleMap.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Lex/ModuleMap.h b/clang/include/clang/Lex/ModuleMap.h
index e28147c7be080..6f584caf63a78 100644
--- a/clang/include/clang/Lex/ModuleMap.h
+++ b/clang/include/clang/Lex/ModuleMap.h
@@ -67,10 +67,8 @@ class ModuleMapCallbacks {
/// Called when an umbrella header is added during module map parsing.
///
- /// \param FileMgr FileManager instance
/// \param Header The umbrella header to collect.
- virtual void moduleMapAddUmbrellaHeader(FileManager *FileMgr,
- const FileEntry *Header) {}
+ virtual void moduleMapAddUmbrellaHeader(FileEntryRef Header) {}
};
class ModuleMap {
diff --git a/clang/lib/Frontend/ModuleDependencyCollector.cpp b/clang/lib/Frontend/ModuleDependencyCollector.cpp
index b4b312bc93b94..939e611e54899 100644
--- a/clang/lib/Frontend/ModuleDependencyCollector.cpp
+++ b/clang/lib/Frontend/ModuleDependencyCollector.cpp
@@ -72,37 +72,12 @@ struct ModuleDependencyMMCallbacks : public ModuleMapCallbacks {
if (llvm::sys::path::is_absolute(HeaderPath))
Collector.addFile(HeaderPath);
}
- void moduleMapAddUmbrellaHeader(FileManager *FileMgr,
- const FileEntry *Header) override {
- StringRef HeaderFilename = Header->getName();
- moduleMapAddHeader(HeaderFilename);
- // The FileManager can find and cache the symbolic link for a framework
- // header before its real path, this means a module can have some of its
- // headers to use other paths. Although this is usually not a problem, it's
- // inconsistent, and not collecting the original path header leads to
- // umbrella clashes while rebuilding modules in the crash reproducer. For
- // example:
- // ApplicationServices.framework/Frameworks/ImageIO.framework/ImageIO.h
- // instead of:
- // ImageIO.framework/ImageIO.h
- //
- // FIXME: this shouldn't be necessary once we have FileName instances
- // around instead of FileEntry ones. For now, make sure we collect all
- // that we need for the reproducer to work correctly.
- StringRef UmbreallDirFromHeader =
- llvm::sys::path::parent_path(HeaderFilename);
- StringRef UmbrellaDir = Header->getDir()->getName();
- if (!UmbrellaDir.equals(UmbreallDirFromHeader)) {
- SmallString<128> AltHeaderFilename;
- llvm::sys::path::append(AltHeaderFilename, UmbrellaDir,
- llvm::sys::path::filename(HeaderFilename));
- if (FileMgr->getFile(AltHeaderFilename))
- moduleMapAddHeader(AltHeaderFilename);
- }
+ void moduleMapAddUmbrellaHeader(FileEntryRef Header) override {
+ moduleMapAddHeader(Header.getNameAsRequested());
}
};
-}
+} // namespace
void ModuleDependencyCollector::attachToASTReader(ASTReader &R) {
R.addListener(
diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp
index bfd4890e3a97b..93f770fda5bfc 100644
--- a/clang/lib/Lex/ModuleMap.cpp
+++ b/clang/lib/Lex/ModuleMap.cpp
@@ -1180,7 +1180,7 @@ void ModuleMap::setUmbrellaHeaderAsWritten(
// Notify callbacks that we just added a new header.
for (const auto &Cb : Callbacks)
- Cb->moduleMapAddUmbrellaHeader(&SourceMgr.getFileManager(), UmbrellaHeader);
+ Cb->moduleMapAddUmbrellaHeader(UmbrellaHeader);
}
void ModuleMap::setUmbrellaDirAsWritten(
More information about the cfe-commits
mailing list