summaryrefslogtreecommitdiff
path: root/test/CodeGenCXX/function-template-specialization.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGenCXX/function-template-specialization.cpp')
-rw-r--r--test/CodeGenCXX/function-template-specialization.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/CodeGenCXX/function-template-specialization.cpp b/test/CodeGenCXX/function-template-specialization.cpp
index eb099df14d00..7728f3dc7462 100644
--- a/test/CodeGenCXX/function-template-specialization.cpp
+++ b/test/CodeGenCXX/function-template-specialization.cpp
@@ -1,4 +1,8 @@
// RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple %s -o - | FileCheck %s
+
+// CHECK-DAG: _ZZN7PR219047GetDataIiEERKibE1i = internal global i32 4
+// CHECK-DAG: _ZZN7PR219047GetDataIiEERKibE1i_0 = internal global i32 2
+
template<typename T, typename U>
T* next(T* ptr, const U& diff);
@@ -24,3 +28,18 @@ void test2(int *iptr, double *dptr, int diff) {
// CHECK: _Z4nextIdiEPT_S1_RKT0_
dptr = next(dptr, diff);
}
+
+namespace PR21904 {
+template <typename>
+const int &GetData(bool);
+
+template <>
+const int &GetData<int>(bool b) {
+ static int i = 4;
+ if (b) {
+ static int i = 2;
+ return i;
+ }
+ return i;
+}
+}