| // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s | |
| template <typename T> void f(T) {} | |
| template <typename T> void f() { } | |
| void test() { | |
| // CHECK: @_Z1fIiEvT_ | |
| void (*p)(int) = &f; | |
| // CHECK: @_Z1fIiEvv | |
| void (*p2)() = f<int>; | |
| } | |
| // CHECK-LABEL: define linkonce_odr void @_Z1fIiEvT_ | |
| // CHECK-LABEL: define linkonce_odr void @_Z1fIiEvv | |
| namespace PR6973 { | |
| template<typename T> | |
| struct X { | |
| void f(const T&); | |
| }; | |
| template<typename T> | |
| int g(); | |
| void h(X<int (*)()> xf) { | |
| xf.f(&g<int>); | |
| } | |
| } |