llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Cyndy Ishida (cyndyishida) <details> <summary>Changes</summary> `DirectoryLookup`'s flag is only set once the module maps in all of a search directory's immediate subdirectories are parsed and loaded, and callers rely on it to skip loading them again. Name it for that. --- Full diff: https://github.com/llvm/llvm-project/pull/237053.diff 2 Files Affected: - (modified) clang/include/clang/Lex/DirectoryLookup.h (+11-13) - (modified) clang/lib/Lex/HeaderSearch.cpp (+3-3) ``````````diff diff --git a/clang/include/clang/Lex/DirectoryLookup.h b/clang/include/clang/Lex/DirectoryLookup.h index bb703dfad2b28f..6b07c999232ab3 100644 --- a/clang/include/clang/Lex/DirectoryLookup.h +++ b/clang/include/clang/Lex/DirectoryLookup.h @@ -58,10 +58,10 @@ class DirectoryLookup { LLVM_PREFERRED_TYPE(LookupType_t) unsigned LookupType : 2; - /// Whether we've performed an exhaustive search for module maps - /// within the subdirectories of this directory. + /// Whether we've performed an exhaustive search and loaded all of the module + /// maps within the subdirectories of this directory. LLVM_PREFERRED_TYPE(bool) - unsigned SearchedAllModuleMaps : 1; + unsigned LoadedAllModuleMaps : 1; public: /// This ctor *does not take ownership* of 'Dir'. @@ -69,12 +69,12 @@ class DirectoryLookup { bool isFramework) : u(Dir), DirCharacteristic(DT), LookupType(isFramework ? LT_Framework : LT_NormalDir), - SearchedAllModuleMaps(false) {} + LoadedAllModuleMaps(false) {} /// This ctor *does not take ownership* of 'Map'. DirectoryLookup(const HeaderMap *Map, SrcMgr::CharacteristicKind DT) : u(Map), DirCharacteristic(DT), LookupType(LT_HeaderMap), - SearchedAllModuleMaps(false) {} + LoadedAllModuleMaps(false) {} /// getLookupType - Return the kind of directory lookup that this is: either a /// normal directory, a framework path, or a HeaderMap. @@ -120,15 +120,13 @@ class DirectoryLookup { /// isHeaderMap - Return true if this is a header map, not a normal directory. bool isHeaderMap() const { return getLookupType() == LT_HeaderMap; } - /// Determine whether we have already searched this entire - /// directory for module maps. - bool haveSearchedAllModuleMaps() const { return SearchedAllModuleMaps; } + /// Determine whether we have already searched and loaded all of the module + /// maps within this entire directory. + bool haveLoadedAllModuleMaps() const { return LoadedAllModuleMaps; } - /// Specify whether we have already searched all of the subdirectories - /// for module maps. - void setSearchedAllModuleMaps(bool SAMM) { - SearchedAllModuleMaps = SAMM; - } + /// Specify whether we have already loaded all of the module maps within the + /// subdirectories of this directory. + void setLoadedAllModuleMaps(bool LAMM) { LoadedAllModuleMaps = LAMM; } /// DirCharacteristic - The type of directory this is, one of the DirType enum /// values. diff --git a/clang/lib/Lex/HeaderSearch.cpp b/clang/lib/Lex/HeaderSearch.cpp index 906ce07b96a797..6c47765cbad0df 100644 --- a/clang/lib/Lex/HeaderSearch.cpp +++ b/clang/lib/Lex/HeaderSearch.cpp @@ -388,7 +388,7 @@ Module *HeaderSearch::lookupModule(StringRef ModuleName, StringRef SearchName, if (HSOpts.AllowModuleMapSubdirectorySearch) { // If we've already performed the exhaustive search for module maps in // this search directory, don't do it again. - if (Dir.haveSearchedAllModuleMaps()) + if (Dir.haveLoadedAllModuleMaps()) continue; // Load all module maps in the immediate subdirectories of this search @@ -2407,7 +2407,7 @@ void HeaderSearch::loadSubdirectoryModuleMaps(DirectoryLookup &SearchDir) { assert(HSOpts.ImplicitModuleMaps && "Should not be loading subdirectory module maps"); - if (SearchDir.haveSearchedAllModuleMaps()) + if (SearchDir.haveLoadedAllModuleMaps()) return; std::error_code EC; @@ -2427,7 +2427,7 @@ void HeaderSearch::loadSubdirectoryModuleMaps(DirectoryLookup &SearchDir) { /*ImplicitlyDiscovered=*/true, SearchDir.isFramework()); } - SearchDir.setSearchedAllModuleMaps(true); + SearchDir.setLoadedAllModuleMaps(true); } std::string HeaderSearch::suggestPathToFileForDiagnostics( `````````` </details> https://github.com/llvm/llvm-project/pull/237053 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
