1*67e74705SXin Li // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // CHECK: ; ModuleID 4*67e74705SXin Li struct A { 5*67e74705SXin Li template<typename T> 6*67e74705SXin Li A(T); 7*67e74705SXin Li }; 8*67e74705SXin Li A(T)9*67e74705SXin Litemplate<typename T> A::A(T) {} 10*67e74705SXin Li 11*67e74705SXin Li struct B { 12*67e74705SXin Li template<typename T> 13*67e74705SXin Li B(T); 14*67e74705SXin Li }; 15*67e74705SXin Li B(T)16*67e74705SXin Litemplate<typename T> B::B(T) {} 17*67e74705SXin Li 18*67e74705SXin Li // CHECK-LABEL: define weak_odr void @_ZN1BC2IiEET_(%struct.B* %this, i32) unnamed_addr 19*67e74705SXin Li // CHECK-LABEL: define weak_odr void @_ZN1BC1IiEET_(%struct.B* %this, i32) unnamed_addr 20*67e74705SXin Li template B::B(int); 21*67e74705SXin Li 22*67e74705SXin Li template<typename T> 23*67e74705SXin Li struct C { fC24*67e74705SXin Li void f() { 25*67e74705SXin Li int a[] = { 1, 2, 3 }; 26*67e74705SXin Li } 27*67e74705SXin Li }; 28*67e74705SXin Li f(C<int> & c)29*67e74705SXin Livoid f(C<int>& c) { 30*67e74705SXin Li c.f(); 31*67e74705SXin Li } 32