diff options
| author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2018-07-18 23:21:19 +0000 |
|---|---|---|
| committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2018-07-18 23:21:19 +0000 |
| commit | 52431f39a3232b1d33ad62423ea67094181f684d (patch) | |
| tree | c2c29d56c85427e36a6aa9ff0a1a63a3a25fdeb7 /clang/test/Modules | |
| parent | a327a4c34e3c271c7d108000a65fa94ca0b5368d (diff) | |
| download | bcm5719-llvm-52431f39a3232b1d33ad62423ea67094181f684d.tar.gz bcm5719-llvm-52431f39a3232b1d33ad62423ea67094181f684d.zip | |
Reapply r336660: [Modules] 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: 337430
Diffstat (limited to 'clang/test/Modules')
6 files changed, 33 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/autoload-subdirectory/a.h b/clang/test/Modules/Inputs/autoload-subdirectory/a.h new file mode 100644 index 00000000000..8be94312e3e --- /dev/null +++ b/clang/test/Modules/Inputs/autoload-subdirectory/a.h @@ -0,0 +1,9 @@ +#include "b.h" + +class foo { + int x, y; + +public: + foo(){}; + ~foo(){}; +}; diff --git a/clang/test/Modules/Inputs/autoload-subdirectory/b.h b/clang/test/Modules/Inputs/autoload-subdirectory/b.h new file mode 100644 index 00000000000..bfde5bf79f8 --- /dev/null +++ b/clang/test/Modules/Inputs/autoload-subdirectory/b.h @@ -0,0 +1 @@ +class bar {}; diff --git a/clang/test/Modules/Inputs/autoload-subdirectory/c.h b/clang/test/Modules/Inputs/autoload-subdirectory/c.h new file mode 100644 index 00000000000..e5a45250f9f --- /dev/null +++ b/clang/test/Modules/Inputs/autoload-subdirectory/c.h @@ -0,0 +1,7 @@ +class nyan { + bool x, y; + +public: + nyan(){}; + ~nyan(){}; +}; diff --git a/clang/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap b/clang/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap new file mode 100644 index 00000000000..880ae38b97a --- /dev/null +++ b/clang/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap @@ -0,0 +1,3 @@ +module a { header "a.h" } +module b { header "b.h" } +module c { header "c.h" } diff --git a/clang/test/Modules/Inputs/autoload-subdirectory/module.modulemap b/clang/test/Modules/Inputs/autoload-subdirectory/module.modulemap new file mode 100644 index 00000000000..880ae38b97a --- /dev/null +++ b/clang/test/Modules/Inputs/autoload-subdirectory/module.modulemap @@ -0,0 +1,3 @@ +module a { header "a.h" } +module b { header "b.h" } +module c { header "c.h" } diff --git a/clang/test/Modules/autoload-subdirectory.cpp b/clang/test/Modules/autoload-subdirectory.cpp new file mode 100644 index 00000000000..e76f7056abe --- /dev/null +++ b/clang/test/Modules/autoload-subdirectory.cpp @@ -0,0 +1,10 @@ +// 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; +} |

