xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenCXX/implicit-instantiation-1.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple %s -o %t
2f4a2713aSLionel Sambuc 
3f4a2713aSLionel Sambuc template<typename T>
4f4a2713aSLionel Sambuc struct X {
fX5f4a2713aSLionel Sambuc   void f(T) { }
fX6f4a2713aSLionel Sambuc   void f(char) { }
7f4a2713aSLionel Sambuc 
gX8f4a2713aSLionel Sambuc   void g(T) { }
9f4a2713aSLionel Sambuc 
hX10f4a2713aSLionel Sambuc   void h(T) { }
11f4a2713aSLionel Sambuc };
12f4a2713aSLionel Sambuc 
foo(X<int> & xi,X<float> * xfp,int i,float f)13f4a2713aSLionel Sambuc void foo(X<int> &xi, X<float> *xfp, int i, float f) {
14f4a2713aSLionel Sambuc   // RUN: grep "linkonce_odr.*_ZN1XIiE1fEi" %t | count 1
15f4a2713aSLionel Sambuc   xi.f(i);
16f4a2713aSLionel Sambuc 
17f4a2713aSLionel Sambuc   // RUN: grep "linkonce_odr.*_ZN1XIiE1gEi" %t | count 1
18f4a2713aSLionel Sambuc   xi.g(f);
19f4a2713aSLionel Sambuc 
20f4a2713aSLionel Sambuc   // RUN: grep "linkonce_odr.*_ZN1XIfE1fEf" %t | count 1
21f4a2713aSLionel Sambuc   xfp->f(f);
22f4a2713aSLionel Sambuc 
23f4a2713aSLionel Sambuc   // RUN: not grep "linkonce_odr.*_ZN1XIfE1hEf" %t
24f4a2713aSLionel Sambuc 
25f4a2713aSLionel Sambuc }
26f4a2713aSLionel Sambuc 
27f4a2713aSLionel Sambuc 
28f4a2713aSLionel Sambuc 
29