| // 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>); |
| } |
| } |