// RUN: %clang_cc1 -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();
}
