1 // REQUIRES: x86-registered-target
2 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
3 // RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
4 // RUN: FileCheck %s
5 
6 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \
7 // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s
8 
9 // CHECK: Symbols:
10 // CHECK-DAG:  _ZN3qux3barEii: { Type: Func }
11 // CHECK-DAG:  _ZN3baz3addIiEET_S1_S1_: { Type: Func }
12 // CHECK-DAG:  _Z4fbarff: { Type: Func }
13 // CHECK-DAG:  _ZN3baz3addIfEET_S1_S1_: { Type: Func }
14 
15 // Same symbols just different order.
16 // CHECK-SYMBOLS-DAG:  _Z4fbarff
17 // CHECK-SYMBOLS-DAG:  _ZN3baz3addIfEET_S1_S1_
18 // CHECK-SYMBOLS-DAG:  _ZN3baz3addIiEET_S1_S1_
19 // CHECK-SYMBOLS-DAG:  _ZN3qux3barEii
20 
21 namespace baz {
22 template <typename T>
23 T add(T a, T b) {
24   return a + b;
25 }
26 } // namespace baz
27 
28 namespace qux {
29 int bar(int a, int b) { return baz::add<int>(a, b); }
30 } // namespace qux
31 
32 float fbar(float a, float b) { return baz::add<float>(a, b); }
33