1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s f(T)2*67e74705SXin Litemplate <typename T> void f(T) {} f()3*67e74705SXin Litemplate <typename T> void f() { } 4*67e74705SXin Li test()5*67e74705SXin Livoid test() { 6*67e74705SXin Li // CHECK: @_Z1fIiEvT_ 7*67e74705SXin Li void (*p)(int) = &f; 8*67e74705SXin Li 9*67e74705SXin Li // CHECK: @_Z1fIiEvv 10*67e74705SXin Li void (*p2)() = f<int>; 11*67e74705SXin Li } 12*67e74705SXin Li // CHECK-LABEL: define linkonce_odr {{.*}}void @_Z1fIiEvT_ 13*67e74705SXin Li // CHECK-LABEL: define linkonce_odr {{.*}}void @_Z1fIiEvv 14*67e74705SXin Li 15*67e74705SXin Li namespace PR6973 { 16*67e74705SXin Li template<typename T> 17*67e74705SXin Li struct X { 18*67e74705SXin Li void f(const T&); 19*67e74705SXin Li }; 20*67e74705SXin Li 21*67e74705SXin Li template<typename T> 22*67e74705SXin Li int g(); 23*67e74705SXin Li h(X<int (*)()> xf)24*67e74705SXin Li void h(X<int (*)()> xf) { 25*67e74705SXin Li xf.f(&g<int>); 26*67e74705SXin Li } 27*67e74705SXin Li } 28