1RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/templated_operators/template_operators -o %t.apple.dSYM 2 3RUN: llvm-dwarfdump -apple-names %t.apple.dSYM | FileCheck %s -check-prefix=NAMES 4 5The test was compiled from a single source: 6$ cat template_operators.cpp 7template <typename T> 8bool operator<(const T&, const T&){ 9 return true; 10} 11 12template <typename T> 13bool operator>(const T&, const T&){ 14 return true; 15} 16 17template <typename T> 18bool operator<<(const T&, const T&){ 19 return true; 20} 21 22template <typename T> 23bool operator>>(const T&, const T&){ 24 return true; 25} 26 27template <typename T> 28bool operator==(const T&, const T&){ 29 return true; 30} 31 32struct B{}; 33 34struct D{}; 35 36template <typename T> 37bool operator<=>(const T&,const T&){ return true;} 38 39int main() { 40 B b1; 41 B b2; 42 D d1; 43 D d2; 44 45 return b1 < b2 && b1 > b2 && b1 << b2 && b1 >> b2 && b1 == b2 && d1 <=> d2; 46} 47$ clang++ -std=c++2a -g template_operators.cpp -c -o template_operators.o 48$ clang template_operators.o -o template_operators 49 50 51NAMES-DAG: "operator<" 52NAMES-DAG: "operator<<B>" 53NAMES-DAG: "operator>" 54NAMES-DAG: "operator><B>" 55NAMES-DAG: "operator<<" 56NAMES-DAG: "operator<<<B>" 57NAMES-DAG: "operator>>" 58NAMES-DAG: "operator>><B>" 59NAMES-DAG: "operator<=>" 60NAMES-DAG: "operator<=><D>" 61NAMES-DAG: "operator==" 62NAMES-DAG: "operator==<B>" 63