summaryrefslogtreecommitdiffstats
path: root/clang/test/Modules
diff options
context:
space:
mode:
authorVassil Vassilev <v.g.vassilev@gmail.com>2016-10-19 11:19:30 +0000
committerVassil Vassilev <v.g.vassilev@gmail.com>2016-10-19 11:19:30 +0000
commitc774a23bd9b704d0c114378be0cd3a262e5628ce (patch)
tree0f4c47996b40abef13573d4f7d1de6123b7463f6 /clang/test/Modules
parent9122ac994b5e69202b294238540f6847512f4824 (diff)
downloadbcm5719-llvm-c774a23bd9b704d0c114378be0cd3a262e5628ce.tar.gz
bcm5719-llvm-c774a23bd9b704d0c114378be0cd3a262e5628ce.zip
[modules] Do not report missing definitions of demoted constexpr variable templates.
This is a followup to regression introduced in r284284. This should fix our libstdc++ modules builds. https://reviews.llvm.org/D25678 Reviewed by Richard Smith! llvm-svn: 284577
Diffstat (limited to 'clang/test/Modules')
-rw-r--r--clang/test/Modules/Inputs/merge-var-template-def/a.h8
-rw-r--r--clang/test/Modules/Inputs/merge-var-template-def/b1.h9
-rw-r--r--clang/test/Modules/Inputs/merge-var-template-def/b2.h9
-rw-r--r--clang/test/Modules/Inputs/merge-var-template-def/module.modulemap5
-rw-r--r--clang/test/Modules/merge-var-template-def.cpp7
5 files changed, 38 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/merge-var-template-def/a.h b/clang/test/Modules/Inputs/merge-var-template-def/a.h
new file mode 100644
index 00000000000..6b414b3031f
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-var-template-def/a.h
@@ -0,0 +1,8 @@
+#ifndef A_H
+#define A_H
+template<typename T, T v>
+struct S { static constexpr T value = v; };
+template<typename T, T v>
+constexpr T S<T, v>::value;
+
+#endif
diff --git a/clang/test/Modules/Inputs/merge-var-template-def/b1.h b/clang/test/Modules/Inputs/merge-var-template-def/b1.h
new file mode 100644
index 00000000000..35cab9d01c8
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-var-template-def/b1.h
@@ -0,0 +1,9 @@
+#ifndef B1_H
+#define B1_H
+template<typename T, T v>
+struct S { static constexpr T value = v; };
+template<typename T, T v>
+constexpr T S<T, v>::value;
+
+#include "a.h"
+#endif
diff --git a/clang/test/Modules/Inputs/merge-var-template-def/b2.h b/clang/test/Modules/Inputs/merge-var-template-def/b2.h
new file mode 100644
index 00000000000..6ab87c2fa71
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-var-template-def/b2.h
@@ -0,0 +1,9 @@
+#ifndef B2_H
+#define B2_H
+
+template<typename T, T v>
+struct S { static constexpr T value = v; };
+template<typename T, T v>
+constexpr T S<T, v>::value;
+
+#endif
diff --git a/clang/test/Modules/Inputs/merge-var-template-def/module.modulemap b/clang/test/Modules/Inputs/merge-var-template-def/module.modulemap
new file mode 100644
index 00000000000..b2c96bd8217
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-var-template-def/module.modulemap
@@ -0,0 +1,5 @@
+module a { header "a.h" export * }
+module b {
+ module b1 { header "b1.h" export * }
+ module b2 { header "b2.h" export * }
+}
diff --git a/clang/test/Modules/merge-var-template-def.cpp b/clang/test/Modules/merge-var-template-def.cpp
new file mode 100644
index 00000000000..97a72a194d9
--- /dev/null
+++ b/clang/test/Modules/merge-var-template-def.cpp
@@ -0,0 +1,7 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -I%S/Inputs/merge-var-template-def -std=c++11 -verify %s
+// RUN: %clang_cc1 -I%S/Inputs/merge-var-template-def -std=c++11 -verify -fmodules -Werror=undefined-internal -fmodules-local-submodule-visibility -fmodules-cache-path=%t -fimplicit-module-maps %s
+// expected-no-diagnostics
+
+#include "b2.h"
+const bool *y = &S<bool, false>::value;
OpenPOWER on IntegriCloud