| // REQUIRES: x86-registered-target |
| // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs %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: - { Name: "_ZN3qux3barEii", Type: Func } |
| // CHECK-DAG: - { Name: "_ZN3baz3addIiEET_S1_S1_", Type: Func } |
| // CHECK-DAG: - { Name: "_Z4fbarff", Type: Func } |
| // CHECK-DAG: - { Name: "_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); } |