xref: /llvm-project/clang/test/InterfaceStubs/template-namespace-function.cpp (revision e3033c0ce5517efddbf92a079ad1e0ca4868591f)
1678e19d8SPuyan Lotfi // REQUIRES: x86-registered-target
2e782192dSPuyan Lotfi // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs %s | \
368f29dacSPuyan Lotfi // RUN: FileCheck %s
468f29dacSPuyan Lotfi 
568f29dacSPuyan Lotfi // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \
668f29dacSPuyan Lotfi // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s
768f29dacSPuyan Lotfi 
868f29dacSPuyan Lotfi // CHECK: Symbols:
9*e3033c0cSPuyan Lotfi // CHECK-DAG:  - { Name: "_ZN3qux3barEii", Type: Func }
10*e3033c0cSPuyan Lotfi // CHECK-DAG:  - { Name: "_ZN3baz3addIiEET_S1_S1_",  Type: Func }
11*e3033c0cSPuyan Lotfi // CHECK-DAG:  - { Name: "_Z4fbarff", Type: Func }
12*e3033c0cSPuyan Lotfi // CHECK-DAG:  - { Name: "_ZN3baz3addIfEET_S1_S1_", Type: Func }
1368f29dacSPuyan Lotfi 
1468f29dacSPuyan Lotfi // Same symbols just different order.
1568f29dacSPuyan Lotfi // CHECK-SYMBOLS-DAG:  _Z4fbarff
1668f29dacSPuyan Lotfi // CHECK-SYMBOLS-DAG:  _ZN3baz3addIfEET_S1_S1_
1768f29dacSPuyan Lotfi // CHECK-SYMBOLS-DAG:  _ZN3baz3addIiEET_S1_S1_
1868f29dacSPuyan Lotfi // CHECK-SYMBOLS-DAG:  _ZN3qux3barEii
1968f29dacSPuyan Lotfi 
2068f29dacSPuyan Lotfi namespace baz {
2168f29dacSPuyan Lotfi template <typename T>
add(T a,T b)2268f29dacSPuyan Lotfi T add(T a, T b) {
2368f29dacSPuyan Lotfi   return a + b;
2468f29dacSPuyan Lotfi }
2568f29dacSPuyan Lotfi } // namespace baz
2668f29dacSPuyan Lotfi 
2768f29dacSPuyan Lotfi namespace qux {
bar(int a,int b)2868f29dacSPuyan Lotfi int bar(int a, int b) { return baz::add<int>(a, b); }
2968f29dacSPuyan Lotfi } // namespace qux
3068f29dacSPuyan Lotfi 
fbar(float a,float b)3168f29dacSPuyan Lotfi float fbar(float a, float b) { return baz::add<float>(a, b); }
32