1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2 template<typename T
> struct A
{
7 // Explicit instantiations have external linkage.
9 // CHECK: define weak_odr void @_ZN1AIiE1gEv(
10 template void A
<int>::g();
12 // CHECK: define weak_odr void @_ZN1AIfE1fEf(
13 // CHECK: define weak_odr void @_ZN1AIfE1gEv(
14 // FIXME: This should also emit the vtable.
15 template struct A
<float>;
17 // CHECK: define weak_odr void @_Z1fIiEvT_
18 template <typename T
> void f(T
) { }
19 template void f
<int>(int);
21 // CHECK: define weak_odr void @_Z1gIiEvT_
22 template <typename T
> inline void g(T
) { }
23 template void g
<int>(int);
35 template<typename T
> void X1
<T
>::blarg() { }
37 extern template struct X0
<char>;
38 extern template struct X1
<char>;
40 // CHECK: define linkonce_odr void @_ZN2X1IcED1Ev(