1 | // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple %s -o %t |
2 | |
3 | template<typename T> |
4 | struct X { |
5 | void f(T) { } |
6 | void f(char) { } |
7 | |
8 | void g(T) { } |
9 | |
10 | void h(T) { } |
11 | }; |
12 | |
13 | void foo(X<int> &xi, X<float> *xfp, int i, float f) { |
14 | // RUN: grep "linkonce_odr.*_ZN1XIiE1fEi" %t | count 1 |
15 | xi.f(i); |
16 | |
17 | // RUN: grep "linkonce_odr.*_ZN1XIiE1gEi" %t | count 1 |
18 | xi.g(f); |
19 | |
20 | // RUN: grep "linkonce_odr.*_ZN1XIfE1fEf" %t | count 1 |
21 | xfp->f(f); |
22 | |
23 | // RUN: not grep "linkonce_odr.*_ZN1XIfE1hEf" %t |
24 | |
25 | } |
26 | |
27 | |
28 | |
29 | |