summaryrefslogtreecommitdiffstats
path: root/clang/test/Modules
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2018-07-18 23:21:19 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2018-07-18 23:21:19 +0000
commit52431f39a3232b1d33ad62423ea67094181f684d (patch)
treec2c29d56c85427e36a6aa9ff0a1a63a3a25fdeb7 /clang/test/Modules
parenta327a4c34e3c271c7d108000a65fa94ca0b5368d (diff)
downloadbcm5719-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')
-rw-r--r--clang/test/Modules/Inputs/autoload-subdirectory/a.h9
-rw-r--r--clang/test/Modules/Inputs/autoload-subdirectory/b.h1
-rw-r--r--clang/test/Modules/Inputs/autoload-subdirectory/c.h7
-rw-r--r--clang/test/Modules/Inputs/autoload-subdirectory/include/module.modulemap3
-rw-r--r--clang/test/Modules/Inputs/autoload-subdirectory/module.modulemap3
-rw-r--r--clang/test/Modules/autoload-subdirectory.cpp10
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;
+}
OpenPOWER on IntegriCloud