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