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