From 79ade4e028932fcb9dab15e2fb2305ca15ab0f14 Mon Sep 17 00:00:00 2001 From: Roman Divacky Date: Wed, 3 Mar 2010 17:28:16 +0000 Subject: Update clang to 97654. --- test/CodeGenCXX/mangle-template.cpp | 40 ++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'test/CodeGenCXX/mangle-template.cpp') diff --git a/test/CodeGenCXX/mangle-template.cpp b/test/CodeGenCXX/mangle-template.cpp index c8296f3c4bd7..57f30a762ed0 100644 --- a/test/CodeGenCXX/mangle-template.cpp +++ b/test/CodeGenCXX/mangle-template.cpp @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s - namespace test1 { int x; template class T { }; @@ -66,3 +65,42 @@ template class T { }; // CHECK-FAIL: void @_ZN5test62f0ENS_1TIXadL_ZNS_1A3im0EfEEEE( void f0(T<&A::im0> a0) {} } + +namespace test7 { + template + struct meta { + static const unsigned value = sizeof(T); + }; + + template struct int_c { + typedef float type; + }; + + template + struct X { + template + X(U*, typename int_c<(meta::value + meta::value)>::type *) { } + }; + + // CHECK: define void @_ZN5test71XIiEC1IdEEPT_PNS_5int_cIXplL_ZNS_4metaIiE5valueEEsrNS6_IS3_EE5valueEE4typeE + template X::X(double*, float*); +} + +namespace test8 { + template + struct meta { + struct type { + static const unsigned value = sizeof(T); + }; + }; + + template struct int_c { + typedef float type; + }; + + template + void f(int_c::type::value>) { } + + // CHECK: define void @_ZN5test81fIiEEvNS_5int_cIXsrNS_4metaIT_E4typeE5valueEEE + template void f(int_c); +} -- cgit v1.3