| // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s |
| |
| template<class T> void f(T) { /* ... */ } |
| template<class T> inline void g(T) { /* ... */ } |
| |
| // CHECK: define void @_Z1gIiEvT_ |
| template<> void g<>(int) { /* ... */ } |
| |
| template<class T> |
| struct X { |
| void f() { } |
| void g(); |
| void h(); |
| }; |
| |
| template<class T> |
| void X<T>::g() { |
| } |
| |
| template<class T> |
| inline void X<T>::h() { |
| } |
| |
| // CHECK: define void @_ZN1XIiE1fEv |
| template<> void X<int>::f() { } |
| |
| // CHECK: define void @_ZN1XIiE1hEv |
| template<> void X<int>::h() { } |
| |
| // CHECK: define linkonce_odr void @_Z1fIiEvT_ |
| template<> inline void f<>(int) { /* ... */ } |
| |
| // CHECK: define linkonce_odr void @_ZN1XIiE1gEv |
| template<> inline void X<int>::g() { } |
| |
| void test(X<int> xi) { |
| f(17); |
| g(17); |
| xi.f(); |
| xi.g(); |
| xi.h(); |
| } |