template-namespace-function.cpp 1008 B

1234567891011121314151617181920212223242526272829303132
  1. // REQUIRES: x86-registered-target
  2. // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs -emit-merged-ifs \
  3. // RUN: -interface-stub-version=experimental-ifs-v1 %s | \
  4. // RUN: FileCheck %s
  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. // CHECK: Symbols:
  8. // CHECK-DAG: _ZN3qux3barEii: { Type: Func }
  9. // CHECK-DAG: _ZN3baz3addIiEET_S1_S1_: { Type: Func }
  10. // CHECK-DAG: _Z4fbarff: { Type: Func }
  11. // CHECK-DAG: _ZN3baz3addIfEET_S1_S1_: { Type: Func }
  12. // Same symbols just different order.
  13. // CHECK-SYMBOLS-DAG: _Z4fbarff
  14. // CHECK-SYMBOLS-DAG: _ZN3baz3addIfEET_S1_S1_
  15. // CHECK-SYMBOLS-DAG: _ZN3baz3addIiEET_S1_S1_
  16. // CHECK-SYMBOLS-DAG: _ZN3qux3barEii
  17. namespace baz {
  18. template <typename T>
  19. T add(T a, T b) {
  20. return a + b;
  21. }
  22. } // namespace baz
  23. namespace qux {
  24. int bar(int a, int b) { return baz::add<int>(a, b); }
  25. } // namespace qux
  26. float fbar(float a, float b) { return baz::add<float>(a, b); }