summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-03-11 14:07:00 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-03-11 14:07:00 +0000
commit4d5c3d99e50cc58bce2520941d005e4f2a4e248f (patch)
tree398ea728663a3d34582a1ab74d54190c8bb0832b /clang/test
parent45d878b0f0f50664ea93a905021f094142a07243 (diff)
downloadbcm5719-llvm-4d5c3d99e50cc58bce2520941d005e4f2a4e248f.tar.gz
bcm5719-llvm-4d5c3d99e50cc58bce2520941d005e4f2a4e248f.zip
Correctly mangle address of member in template arguments. Fixes PR6460
llvm-svn: 98254
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGenCXX/mangle.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/mangle.cpp b/clang/test/CodeGenCXX/mangle.cpp
index e18ca03d1be..3f966902a21 100644
--- a/clang/test/CodeGenCXX/mangle.cpp
+++ b/clang/test/CodeGenCXX/mangle.cpp
@@ -414,3 +414,42 @@ namespace test3 {
get_p_2(obj);
}
}
+
+// CHECK: define void @_ZN5test41gEPNS_3zedIXadL_ZNS_3foo3barEEEEE
+namespace test4 {
+ struct foo { int bar; };
+ template <int (foo::*)>
+ struct zed {};
+ void g(zed<&foo::bar>*)
+ {}
+}
+// CHECK: define void @_ZN5test51gEPNS_3zedIXadL_ZNS_3foo3barEEEEE
+namespace test5 {
+ struct foo { static int bar; };
+ template <int *>
+ struct zed {};
+ void g(zed<&foo::bar>*)
+ {}
+}
+// CHECK: define void @_ZN5test61gEPNS_3zedIXadL_ZNS_3foo3barEvEEEE
+namespace test6 {
+ struct foo { int bar(); };
+ template <int (foo::*)()>
+ struct zed {};
+ void g(zed<&foo::bar>*)
+ {}
+}
+// CHECK: define void @_ZN5test71gEPNS_3zedIXadL_ZNS_3foo3barEvEEEE
+namespace test7 {
+ struct foo { static int bar(); };
+ template <int (*f)()>
+ struct zed {};
+ void g(zed<&foo::bar>*)
+ {}
+}
+// CHECK: define void @_ZN5test81AILZNS_1B5valueEEE3incEv
+namespace test8 {
+ template <int &counter> class A { void inc() { counter++; } };
+ class B { static int value; };
+ template class A<B::value>;
+}
OpenPOWER on IntegriCloud