summaryrefslogtreecommitdiffstats
path: root/clang/test/Modules
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-07-21 04:10:40 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-07-21 04:10:40 +0000
commit57721ac5916c52a13d518bdb24aa479417c5beb3 (patch)
tree9027b6aef220efc69351d8128ce073e0758b602c /clang/test/Modules
parentae1ec299df110b938168150158f6f618e5c86491 (diff)
downloadbcm5719-llvm-57721ac5916c52a13d518bdb24aa479417c5beb3.tar.gz
bcm5719-llvm-57721ac5916c52a13d518bdb24aa479417c5beb3.zip
[modules] Fix some of the confusion when computing the override set for a macro
introduced by finalization. This is still not entirely correct; more fixes to follow. llvm-svn: 213498
Diffstat (limited to 'clang/test/Modules')
-rw-r--r--clang/test/Modules/Inputs/macro-hiding/e1.h1
-rw-r--r--clang/test/Modules/Inputs/macro-hiding/e2.h2
-rw-r--r--clang/test/Modules/Inputs/macro-hiding/module.modulemap4
-rw-r--r--clang/test/Modules/macro-hiding.cpp12
-rw-r--r--clang/test/Modules/macro-reexport/a1.h1
-rw-r--r--clang/test/Modules/macro-reexport/a2.h0
-rw-r--r--clang/test/Modules/macro-reexport/b1.h0
-rw-r--r--clang/test/Modules/macro-reexport/b2.h2
-rw-r--r--clang/test/Modules/macro-reexport/c1.h2
-rw-r--r--clang/test/Modules/macro-reexport/d1.h2
-rw-r--r--clang/test/Modules/macro-reexport/d2.h1
-rw-r--r--clang/test/Modules/macro-reexport/macro-reexport.cpp13
-rw-r--r--clang/test/Modules/macro-reexport/module.modulemap15
13 files changed, 54 insertions, 1 deletions
diff --git a/clang/test/Modules/Inputs/macro-hiding/e1.h b/clang/test/Modules/Inputs/macro-hiding/e1.h
new file mode 100644
index 00000000000..bd01708c5e3
--- /dev/null
+++ b/clang/test/Modules/Inputs/macro-hiding/e1.h
@@ -0,0 +1 @@
+#include "a1.h"
diff --git a/clang/test/Modules/Inputs/macro-hiding/e2.h b/clang/test/Modules/Inputs/macro-hiding/e2.h
new file mode 100644
index 00000000000..f3a49c70aea
--- /dev/null
+++ b/clang/test/Modules/Inputs/macro-hiding/e2.h
@@ -0,0 +1,2 @@
+#include "a1.h"
+inline void e1() { assert(true); }
diff --git a/clang/test/Modules/Inputs/macro-hiding/module.modulemap b/clang/test/Modules/Inputs/macro-hiding/module.modulemap
index 14ca9af86ab..20632d35aeb 100644
--- a/clang/test/Modules/Inputs/macro-hiding/module.modulemap
+++ b/clang/test/Modules/Inputs/macro-hiding/module.modulemap
@@ -12,3 +12,7 @@ module c {
module d {
module d1 { header "d1.h" export * }
}
+module e {
+ module e1 { header "e1.h" export * }
+ module e2 { header "e2.h" export * }
+}
diff --git a/clang/test/Modules/macro-hiding.cpp b/clang/test/Modules/macro-hiding.cpp
index d0dadf319f3..b166f4b194c 100644
--- a/clang/test/Modules/macro-hiding.cpp
+++ b/clang/test/Modules/macro-hiding.cpp
@@ -62,6 +62,8 @@
// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I%S/Inputs/macro-hiding %s -DA1 -DA2 -DB1 -DB2 -DD1
// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I%S/Inputs/macro-hiding %s -DA1 -DA2 -DB1 -DB2 -DC1
// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I%S/Inputs/macro-hiding %s -DA1 -DA2 -DB1 -DB2 -DC1 -DD1
+//
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I%S/Inputs/macro-hiding %s -DE1
#ifdef A1
#include "a1.h"
@@ -87,7 +89,15 @@
#include "d1.h"
#endif
-#if defined(A1) || defined(B2) || defined(C1) || defined(D1)
+#ifdef E1
+#include "e1.h"
+#endif
+
+#ifdef E2
+#include "e2.h"
+#endif
+
+#if defined(A1) || defined(B2) || defined(C1) || defined(D1) || defined(E1) || defined(E2)
void h() { assert(true); }
#else
void assert() {}
diff --git a/clang/test/Modules/macro-reexport/a1.h b/clang/test/Modules/macro-reexport/a1.h
new file mode 100644
index 00000000000..39933315f7e
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/a1.h
@@ -0,0 +1 @@
+#define assert(x) a
diff --git a/clang/test/Modules/macro-reexport/a2.h b/clang/test/Modules/macro-reexport/a2.h
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/a2.h
diff --git a/clang/test/Modules/macro-reexport/b1.h b/clang/test/Modules/macro-reexport/b1.h
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/b1.h
diff --git a/clang/test/Modules/macro-reexport/b2.h b/clang/test/Modules/macro-reexport/b2.h
new file mode 100644
index 00000000000..26150458d35
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/b2.h
@@ -0,0 +1,2 @@
+#include "a2.h"
+#define assert(x) b
diff --git a/clang/test/Modules/macro-reexport/c1.h b/clang/test/Modules/macro-reexport/c1.h
new file mode 100644
index 00000000000..d6a20e7419c
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/c1.h
@@ -0,0 +1,2 @@
+#include "b1.h"
+#define assert(x) c
diff --git a/clang/test/Modules/macro-reexport/d1.h b/clang/test/Modules/macro-reexport/d1.h
new file mode 100644
index 00000000000..fbd68d5de58
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/d1.h
@@ -0,0 +1,2 @@
+#include "c1.h"
+#define assert(x) d
diff --git a/clang/test/Modules/macro-reexport/d2.h b/clang/test/Modules/macro-reexport/d2.h
new file mode 100644
index 00000000000..688f2d98a13
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/d2.h
@@ -0,0 +1 @@
+#include "b2.h"
diff --git a/clang/test/Modules/macro-reexport/macro-reexport.cpp b/clang/test/Modules/macro-reexport/macro-reexport.cpp
new file mode 100644
index 00000000000..47b15c2740b
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/macro-reexport.cpp
@@ -0,0 +1,13 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fsyntax-only -DD2 -I. %s -fmodules-cache-path=%t -verify
+// RUN: %clang_cc1 -fsyntax-only -DD2 -I. -fmodules %s -fmodules-cache-path=%t -verify
+// RUN: %clang_cc1 -fsyntax-only -DC1 -I. %s -fmodules-cache-path=%t -verify
+// RUN: %clang_cc1 -fsyntax-only -DC1 -I. -fmodules %s -fmodules-cache-path=%t -verify
+
+#ifdef D2
+#include "d2.h"
+void f() { return assert(true); } // expected-error {{undeclared identifier 'b'}}
+#else
+#include "c1.h"
+void f() { return assert(true); } // expected-error {{undeclared identifier 'c'}}
+#endif
diff --git a/clang/test/Modules/macro-reexport/module.modulemap b/clang/test/Modules/macro-reexport/module.modulemap
new file mode 100644
index 00000000000..21585b692e3
--- /dev/null
+++ b/clang/test/Modules/macro-reexport/module.modulemap
@@ -0,0 +1,15 @@
+module b {
+ module b2 { header "b2.h" export * }
+ module b1 { header "b1.h" export * }
+}
+module a {
+ module a1 { header "a1.h" export * }
+ module a2 { header "a2.h" export * }
+}
+module c {
+ module c1 { header "c1.h" export * }
+}
+module d {
+ module d1 { header "d1.h" export * }
+ module d2 { header "d2.h" export * }
+}
OpenPOWER on IntegriCloud