summaryrefslogtreecommitdiffstats
path: root/clang/test/Modules
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-07-10 22:27:17 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-07-10 22:27:17 +0000
commite70dadd67b0d1e7db10ef8d0cda711f10bfd7768 (patch)
tree2b6841fd5a385db0b371f05657247606f692ee8a /clang/test/Modules
parent0bb1fc410bf249ee9f8369e0219405804d68cba6 (diff)
downloadbcm5719-llvm-e70dadd67b0d1e7db10ef8d0cda711f10bfd7768.tar.gz
bcm5719-llvm-e70dadd67b0d1e7db10ef8d0cda711f10bfd7768.zip
[modules] When checking the include guard for a header, check whether it's
visible in the module we're considering entering. Previously we assumed that if we knew the include guard for a modular header, we'd already parsed it, but that need not be the case if a header is present in the current module and one of its dependencies; the result of getting this wrong was that the current module's submodule for the header would end up empty. llvm-svn: 241953
Diffstat (limited to 'clang/test/Modules')
-rw-r--r--clang/test/Modules/Inputs/multiple-include/a.h1
-rw-r--r--clang/test/Modules/Inputs/multiple-include/b.h3
-rw-r--r--clang/test/Modules/Inputs/multiple-include/c.h4
-rw-r--r--clang/test/Modules/Inputs/multiple-include/module.modulemap2
-rw-r--r--clang/test/Modules/Inputs/multiple-include/x.h0
-rw-r--r--clang/test/Modules/multiple-include.cpp5
6 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/multiple-include/a.h b/clang/test/Modules/Inputs/multiple-include/a.h
new file mode 100644
index 00000000000..82661908588
--- /dev/null
+++ b/clang/test/Modules/Inputs/multiple-include/a.h
@@ -0,0 +1 @@
+#include "x.h"
diff --git a/clang/test/Modules/Inputs/multiple-include/b.h b/clang/test/Modules/Inputs/multiple-include/b.h
new file mode 100644
index 00000000000..f56ab64da6b
--- /dev/null
+++ b/clang/test/Modules/Inputs/multiple-include/b.h
@@ -0,0 +1,3 @@
+#pragma clang __debug macro C_H
+#include "c.h"
+inline int get() { return c; }
diff --git a/clang/test/Modules/Inputs/multiple-include/c.h b/clang/test/Modules/Inputs/multiple-include/c.h
new file mode 100644
index 00000000000..4e7d4b742dc
--- /dev/null
+++ b/clang/test/Modules/Inputs/multiple-include/c.h
@@ -0,0 +1,4 @@
+#ifndef C_H
+#define C_H
+extern int c;
+#endif
diff --git a/clang/test/Modules/Inputs/multiple-include/module.modulemap b/clang/test/Modules/Inputs/multiple-include/module.modulemap
new file mode 100644
index 00000000000..1228ae6cbb7
--- /dev/null
+++ b/clang/test/Modules/Inputs/multiple-include/module.modulemap
@@ -0,0 +1,2 @@
+module A { module a { header "a.h" } module b { header "b.h" } module c { header "c.h" } }
+module X { module x { header "x.h" } module c { header "c.h" } }
diff --git a/clang/test/Modules/Inputs/multiple-include/x.h b/clang/test/Modules/Inputs/multiple-include/x.h
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Modules/Inputs/multiple-include/x.h
diff --git a/clang/test/Modules/multiple-include.cpp b/clang/test/Modules/multiple-include.cpp
new file mode 100644
index 00000000000..7cbeefc8178
--- /dev/null
+++ b/clang/test/Modules/multiple-include.cpp
@@ -0,0 +1,5 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -I%S/Inputs/multiple-include -fmodules-cache-path=%t -fimplicit-module-maps -verify %s -fmodules-local-submodule-visibility
+// expected-no-diagnostics
+#include "b.h"
+int c = get();
OpenPOWER on IntegriCloud