Files
clang-p2996/llvm/test/tools/dsymutil/X86/template_operators.test
shafik 37549464c1 [dsymutil] Fix template stripping in getDIENames(...) to account for overloaded operators
Currently dsymutil when generating accelerator tables will attempt to strip the template parameters from names for subroutines.
For some overload operators which contain < in their names e.g. operator< the current method ends up stripping the operator name as well,
we just end up with the name operator in the table for each case.

Differential Revision: https://reviews.llvm.org/D75545
2020-03-04 14:54:31 -08:00

63 lines
1.3 KiB
Plaintext

RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/templated_operators/template_operators -o %t.apple.dSYM
RUN: llvm-dwarfdump -apple-names %t.apple.dSYM | FileCheck %s -check-prefix=NAMES
The test was compiled from a single source:
$ cat template_operators.cpp
template <typename T>
bool operator<(const T&, const T&){
return true;
}
template <typename T>
bool operator>(const T&, const T&){
return true;
}
template <typename T>
bool operator<<(const T&, const T&){
return true;
}
template <typename T>
bool operator>>(const T&, const T&){
return true;
}
template <typename T>
bool operator==(const T&, const T&){
return true;
}
struct B{};
struct D{};
template <typename T>
bool operator<=>(const T&,const T&){ return true;}
int main() {
B b1;
B b2;
D d1;
D d2;
return b1 < b2 && b1 > b2 && b1 << b2 && b1 >> b2 && b1 == b2 && d1 <=> d2;
}
$ clang++ -std=c++2a -g template_operators.cpp -c -o template_operators.o
$ clang template_operators.o -o template_operators
NAMES-DAG: "operator<"
NAMES-DAG: "operator<<B>"
NAMES-DAG: "operator>"
NAMES-DAG: "operator><B>"
NAMES-DAG: "operator<<"
NAMES-DAG: "operator<<<B>"
NAMES-DAG: "operator>>"
NAMES-DAG: "operator>><B>"
NAMES-DAG: "operator<=>"
NAMES-DAG: "operator<=><D>"
NAMES-DAG: "operator=="
NAMES-DAG: "operator==<B>"