Author: bruno Date: Thu Jul 12 10:38:48 2018 New Revision: 336920 URL: http://llvm.org/viewvc/llvm-project?rev=336920&view=rev Log: Revert "[modules] Fix 37878; Autoload subdirectory modulemaps with specific LangOpts"
This reverts commit f40124d4f05ecf4f880cf4e8f26922d861f705f3 / r336660. This change shouldn't be affecting `@import` behavior, but turns out it is: https://ci.swift.org/view/swift-master-next/job/oss-swift-incremental-RA-osx-master-next/2800/consoleFull#-12570166563122a513-f36a-4c87-8ed7-cbc36a1ec144 Working on a reduced testcase for this, reverting in the meantime. rdar://problem/42102222 Removed: cfe/trunk/test/Modules/Inputs/autoload-subdirectory/a.h cfe/trunk/test/Modules/Inputs/autoload-subdirectory/b.h cfe/trunk/test/Modules/Inputs/autoload-subdirectory/c.h cfe/trunk/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap cfe/trunk/test/Modules/Inputs/autoload-subdirectory/module.modulemap cfe/trunk/test/Modules/autoload-subdirectory.cpp Modified: cfe/trunk/include/clang/Lex/HeaderSearch.h cfe/trunk/lib/Frontend/CompilerInstance.cpp cfe/trunk/lib/Lex/HeaderSearch.cpp cfe/trunk/lib/Serialization/ASTReader.cpp Modified: cfe/trunk/include/clang/Lex/HeaderSearch.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/HeaderSearch.h?rev=336920&r1=336919&r2=336920&view=diff ============================================================================== --- cfe/trunk/include/clang/Lex/HeaderSearch.h (original) +++ cfe/trunk/include/clang/Lex/HeaderSearch.h Thu Jul 12 10:38:48 2018 @@ -529,12 +529,8 @@ public: /// search directories to produce a module definition. If not, this lookup /// will only return an already-known module. /// - /// \param AllowExtraModuleMapSearch Whether we allow to search modulemaps - /// in subdirectories. - /// /// \returns The module with the given name. - Module *lookupModule(StringRef ModuleName, bool AllowSearch = true, - bool AllowExtraModuleMapSearch = false); + Module *lookupModule(StringRef ModuleName, bool AllowSearch = true); /// Try to find a module map file in the given directory, returning /// \c nullptr if none is found. @@ -599,12 +595,8 @@ private: /// but for compatibility with some buggy frameworks, additional attempts /// may be made to find the module under a related-but-different search-name. /// - /// \param AllowExtraModuleMapSearch Whether we allow to search modulemaps - /// in subdirectories. - /// /// \returns The module named ModuleName. - Module *lookupModule(StringRef ModuleName, StringRef SearchName, - bool AllowExtraModuleMapSearch = false); + Module *lookupModule(StringRef ModuleName, StringRef SearchName); /// Retrieve a module with the given name, which may be part of the /// given framework. Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=336920&r1=336919&r2=336920&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Thu Jul 12 10:38:48 2018 @@ -1653,10 +1653,8 @@ CompilerInstance::loadModule(SourceLocat // Retrieve the cached top-level module. Module = Known->second; } else if (ModuleName == getLangOpts().CurrentModule) { - // This is the module we're building. - Module = PP->getHeaderSearchInfo().lookupModule( - ModuleName, /*AllowSearch*/ true, - /*AllowExtraModuleMapSearch*/ !IsInclusionDirective); + // This is the module we're building. + Module = PP->getHeaderSearchInfo().lookupModule(ModuleName); /// FIXME: perhaps we should (a) look for a module using the module name // to file map (PrebuiltModuleFiles) and (b) diagnose if still not found? //if (Module == nullptr) { @@ -1668,8 +1666,7 @@ CompilerInstance::loadModule(SourceLocat Known = KnownModules.insert(std::make_pair(Path[0].first, Module)).first; } else { // Search for a module with the given name. - Module = PP->getHeaderSearchInfo().lookupModule(ModuleName, true, - !IsInclusionDirective); + Module = PP->getHeaderSearchInfo().lookupModule(ModuleName); HeaderSearchOptions &HSOpts = PP->getHeaderSearchInfo().getHeaderSearchOpts(); @@ -1746,8 +1743,7 @@ CompilerInstance::loadModule(SourceLocat ImportLoc, ARRFlags)) { case ASTReader::Success: { if (Source != ModuleCache && !Module) { - Module = PP->getHeaderSearchInfo().lookupModule(ModuleName, true, - !IsInclusionDirective); + Module = PP->getHeaderSearchInfo().lookupModule(ModuleName); if (!Module || !Module->getASTFile() || FileMgr->getFile(ModuleFileName) != Module->getASTFile()) { // Error out if Module does not refer to the file in the prebuilt @@ -1878,8 +1874,7 @@ CompilerInstance::loadModule(SourceLocat PrivateModule, PP->getIdentifierInfo(Module->Name)->getTokenID()); PrivPath.push_back(std::make_pair(&II, Path[0].second)); - if (PP->getHeaderSearchInfo().lookupModule(PrivateModule, true, - !IsInclusionDirective)) + if (PP->getHeaderSearchInfo().lookupModule(PrivateModule)) Sub = loadModule(ImportLoc, PrivPath, Visibility, IsInclusionDirective); if (Sub) { Modified: cfe/trunk/lib/Lex/HeaderSearch.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/HeaderSearch.cpp?rev=336920&r1=336919&r2=336920&view=diff ============================================================================== --- cfe/trunk/lib/Lex/HeaderSearch.cpp (original) +++ cfe/trunk/lib/Lex/HeaderSearch.cpp Thu Jul 12 10:38:48 2018 @@ -198,15 +198,14 @@ std::string HeaderSearch::getCachedModul return Result.str().str(); } -Module *HeaderSearch::lookupModule(StringRef ModuleName, bool AllowSearch, - bool AllowExtraModuleMapSearch) { +Module *HeaderSearch::lookupModule(StringRef ModuleName, bool AllowSearch) { // Look in the module map to determine if there is a module by this name. Module *Module = ModMap.findModule(ModuleName); if (Module || !AllowSearch || !HSOpts->ImplicitModuleMaps) return Module; StringRef SearchName = ModuleName; - Module = lookupModule(ModuleName, SearchName, AllowExtraModuleMapSearch); + Module = lookupModule(ModuleName, SearchName); // The facility for "private modules" -- adjacent, optional module maps named // module.private.modulemap that are supposed to define private submodules -- @@ -217,14 +216,13 @@ Module *HeaderSearch::lookupModule(Strin // could force building unwanted dependencies into the parent module and cause // dependency cycles. if (!Module && SearchName.consume_back("_Private")) - Module = lookupModule(ModuleName, SearchName, AllowExtraModuleMapSearch); + Module = lookupModule(ModuleName, SearchName); if (!Module && SearchName.consume_back("Private")) - Module = lookupModule(ModuleName, SearchName, AllowExtraModuleMapSearch); + Module = lookupModule(ModuleName, SearchName); return Module; } -Module *HeaderSearch::lookupModule(StringRef ModuleName, StringRef SearchName, - bool AllowExtraModuleMapSearch) { +Module *HeaderSearch::lookupModule(StringRef ModuleName, StringRef SearchName) { Module *Module = nullptr; // Look through the various header search paths to load any available module @@ -283,9 +281,8 @@ Module *HeaderSearch::lookupModule(Strin continue; // Load all module maps in the immediate subdirectories of this search - // directory if ModuleName was from @import. - if (AllowExtraModuleMapSearch) - loadSubdirectoryModuleMaps(SearchDirs[Idx]); + // directory. + loadSubdirectoryModuleMaps(SearchDirs[Idx]); // Look again for the module. Module = ModMap.findModule(ModuleName); Modified: cfe/trunk/lib/Serialization/ASTReader.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=336920&r1=336919&r2=336920&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTReader.cpp (original) +++ cfe/trunk/lib/Serialization/ASTReader.cpp Thu Jul 12 10:38:48 2018 @@ -2626,9 +2626,7 @@ ASTReader::ReadControlBlock(ModuleFile & "MODULE_DIRECTORY found before MODULE_NAME"); // If we've already loaded a module map file covering this module, we may // have a better path for it (relative to the current build). - Module *M = PP.getHeaderSearchInfo().lookupModule( - F.ModuleName, /*AllowSearch*/ true, - /*AllowExtraModuleMapSearch*/ true); + Module *M = PP.getHeaderSearchInfo().lookupModule(F.ModuleName); if (M && M->Directory) { // If we're implicitly loading a module, the base directory can't // change between the build and use. Removed: cfe/trunk/test/Modules/Inputs/autoload-subdirectory/a.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/autoload-subdirectory/a.h?rev=336919&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/autoload-subdirectory/a.h (original) +++ cfe/trunk/test/Modules/Inputs/autoload-subdirectory/a.h (removed) @@ -1,9 +0,0 @@ -#include "b.h" - -class foo { - int x, y; - -public: - foo(){}; - ~foo(){}; -}; Removed: cfe/trunk/test/Modules/Inputs/autoload-subdirectory/b.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/autoload-subdirectory/b.h?rev=336919&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/autoload-subdirectory/b.h (original) +++ cfe/trunk/test/Modules/Inputs/autoload-subdirectory/b.h (removed) @@ -1 +0,0 @@ -class bar {}; Removed: cfe/trunk/test/Modules/Inputs/autoload-subdirectory/c.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/autoload-subdirectory/c.h?rev=336919&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/autoload-subdirectory/c.h (original) +++ cfe/trunk/test/Modules/Inputs/autoload-subdirectory/c.h (removed) @@ -1,7 +0,0 @@ -class nyan { - bool x, y; - -public: - nyan(){}; - ~nyan(){}; -}; Removed: cfe/trunk/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap?rev=336919&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap (original) +++ cfe/trunk/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap (removed) @@ -1,3 +0,0 @@ -module a { header "a.h" } -module b { header "b.h" } -module c { header "c.h" } Removed: cfe/trunk/test/Modules/Inputs/autoload-subdirectory/module.modulemap URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/autoload-subdirectory/module.modulemap?rev=336919&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/autoload-subdirectory/module.modulemap (original) +++ cfe/trunk/test/Modules/Inputs/autoload-subdirectory/module.modulemap (removed) @@ -1,3 +0,0 @@ -module a { header "a.h" } -module b { header "b.h" } -module c { header "c.h" } Removed: cfe/trunk/test/Modules/autoload-subdirectory.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/autoload-subdirectory.cpp?rev=336919&view=auto ============================================================================== --- cfe/trunk/test/Modules/autoload-subdirectory.cpp (original) +++ cfe/trunk/test/Modules/autoload-subdirectory.cpp (removed) @@ -1,10 +0,0 @@ -// RUN: %clang_cc1 -fmodules -fmodule-name=Foo -I %S/Inputs/autoload-subdirectory/ %s -verify -// expected-no-diagnostics - -#include "a.h" -#import "c.h" - -int main() { - foo neko; - return 0; -} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits