summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/mangle.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-07-14 06:43:17 +0000
committerJohn McCall <rjmccall@apple.com>2010-07-14 06:43:17 +0000
commitb6f532e2b03dbbfd97a37a7bb845fe23f8136889 (patch)
tree6d34af39f9c1f8cb8624d83e4609d0d4be6bda50 /test/CodeGenCXX/mangle.cpp
parent5495f37302f7c82192dab1ce8d9c9fe76ed0ee37 (diff)
Fix the mangling of template template arguments, which do not always
follow <name>; instead they follow <type>, which has <name> as a subset. Fixes PR7446. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108326 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/mangle.cpp')
-rw-r--r--test/CodeGenCXX/mangle.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/test/CodeGenCXX/mangle.cpp b/test/CodeGenCXX/mangle.cpp
index 54a4060352..814a7592fa 100644
--- a/test/CodeGenCXX/mangle.cpp
+++ b/test/CodeGenCXX/mangle.cpp
@@ -495,4 +495,15 @@ namespace test12 {
// CHECK: _ZN6test121fENS_1AILt33000EEE
template <unsigned short> struct A { };
void f(A<33000>) { }
-} \ No newline at end of file
+}
+
+// PR7446
+namespace test13 {
+ template <template <class> class T> class A {};
+ template <class U> class B {};
+
+ template <template<class> class T> void foo(const A<T> &a) {}
+
+ // CHECK: define weak_odr void @_ZN6test133fooINS_1BEEEvRKNS_1AIT_EE(
+ template void foo(const A<B> &a);
+}