| // REQUIRES: x86-registered-target |
| // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs -emit-merged-ifs \ |
| // RUN: -interface-stub-version=experimental-ifs-v1 %s | \ |
| // RUN: FileCheck %s |
| |
| // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \ |
| // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s |
| |
| // CHECK: Symbols: |
| // CHECK-DAG: _ZN3qux3barEii: { Type: Func } |
| // CHECK-DAG: _ZN3baz3addIiEET_S1_S1_: { Type: Func } |
| // CHECK-DAG: _Z4fbarff: { Type: Func } |
| // CHECK-DAG: _ZN3baz3addIfEET_S1_S1_: { Type: Func } |
| |
| // Same symbols just different order. |
| // CHECK-SYMBOLS-DAG: _Z4fbarff |
| // CHECK-SYMBOLS-DAG: _ZN3baz3addIfEET_S1_S1_ |
| // CHECK-SYMBOLS-DAG: _ZN3baz3addIiEET_S1_S1_ |
| // CHECK-SYMBOLS-DAG: _ZN3qux3barEii |
| |
| namespace baz { |
| template <typename T> |
| T add(T a, T b) { |
| return a + b; |
| } |
| } // namespace baz |
| |
| namespace qux { |
| int bar(int a, int b) { return baz::add<int>(a, b); } |
| } // namespace qux |
| |
| float fbar(float a, float b) { return baz::add<float>(a, b); } |