[modules] Fix 37878; Autoload subdirectory modulemaps with specific LangOpts
authorYuka Takahashi <yukatkh@gmail.com>
Tue, 10 Jul 2018 12:17:34 +0000 (12:17 +0000)
committerYuka Takahashi <yukatkh@gmail.com>
Tue, 10 Jul 2018 12:17:34 +0000 (12:17 +0000)
commita15364152cf4d6267a82b616151de301291f2f5b
tree9f0199ce6c9e8187c067e8d5cf45285dde7754f1
parent1ffeb5d7f0a96df2e06b10252092dca3bbe610aa
[modules] Fix 37878; Autoload subdirectory modulemaps with specific LangOpts

Summary:
Reproducer and errors:
https://bugs.llvm.org/show_bug.cgi?id=37878

lookupModule was falling back to loadSubdirectoryModuleMaps when it couldn't
find ModuleName in (proper) search paths. This was causing iteration over all
files in the search path subdirectories for example "/usr/include/foobar" in
bugzilla case.

Users don't expect Clang to load modulemaps in subdirectories implicitly, and
also the disk access is not cheap.

if (AllowExtraModuleMapSearch) true with ObjC with @import ModuleName.

Reviewers: rsmith, aprantl, bruno

Subscribers: cfe-commits, teemperor, v.g.vassilev

Differential Revision: https://reviews.llvm.org/D48367

llvm-svn: 336660
clang/include/clang/Lex/HeaderSearch.h
clang/lib/Frontend/CompilerInstance.cpp
clang/lib/Lex/HeaderSearch.cpp
clang/lib/Serialization/ASTReader.cpp
clang/test/Modules/Inputs/autoload-subdirectory/a.h [new file with mode: 0644]
clang/test/Modules/Inputs/autoload-subdirectory/b.h [new file with mode: 0644]
clang/test/Modules/Inputs/autoload-subdirectory/c.h [new file with mode: 0644]
clang/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap [new file with mode: 0644]
clang/test/Modules/Inputs/autoload-subdirectory/module.modulemap [new file with mode: 0644]
clang/test/Modules/autoload-subdirectory.cpp [new file with mode: 0644]