forked from OSchip/llvm-project
llvm-undname: Support demangling the spaceship operator
Also add a test for demanling the co_await operator. llvm-svn: 359007
This commit is contained in:
parent
171b74e31c
commit
e8f21b1a6b
|
@ -170,8 +170,8 @@ enum class IntrinsicFunctionKind : uint8_t {
|
|||
VectorCopyCtorIter, // ?__G vector copy constructor iterator
|
||||
VectorVbaseCopyCtorIter, // ?__H vector vbase copy constructor iterator
|
||||
ManVectorVbaseCopyCtorIter, // ?__I managed vector vbase copy constructor
|
||||
CoAwait, // ?__L co_await
|
||||
Spaceship, // operator<=>
|
||||
CoAwait, // ?__L operator co_await
|
||||
Spaceship, // ?__M operator<=>
|
||||
MaxIntrinsic
|
||||
};
|
||||
|
||||
|
|
|
@ -626,8 +626,8 @@ Demangler::translateIntrinsicFunctionCode(char CH,
|
|||
// iter
|
||||
IFK::None, // ?__J local static thread guard
|
||||
IFK::None, // ?__K operator ""_name
|
||||
IFK::CoAwait, // ?__L co_await
|
||||
IFK::None, // ?__M <unused>
|
||||
IFK::CoAwait, // ?__L operator co_await
|
||||
IFK::Spaceship, // ?__M operator<=>
|
||||
IFK::None, // ?__N <unused>
|
||||
IFK::None, // ?__O <unused>
|
||||
IFK::None, // ?__P <unused>
|
||||
|
@ -687,7 +687,6 @@ Demangler::demangleFunctionIdentifierCode(StringView &MangledName,
|
|||
translateIntrinsicFunctionCode(CH, Group));
|
||||
}
|
||||
}
|
||||
// No Mangling Yet: Spaceship, // operator<=>
|
||||
|
||||
DEMANGLE_UNREACHABLE;
|
||||
}
|
||||
|
|
|
@ -337,8 +337,9 @@ void IntrinsicFunctionIdentifierNode::output(OutputStream &OS,
|
|||
"`vector vbase copy constructor iterator'");
|
||||
OUTPUT_ENUM_CLASS_VALUE(IntrinsicFunctionKind, ManVectorVbaseCopyCtorIter,
|
||||
"`managed vector vbase copy constructor iterator'");
|
||||
OUTPUT_ENUM_CLASS_VALUE(IntrinsicFunctionKind, CoAwait, "co_await");
|
||||
OUTPUT_ENUM_CLASS_VALUE(IntrinsicFunctionKind, Spaceship, "operator <=>");
|
||||
OUTPUT_ENUM_CLASS_VALUE(IntrinsicFunctionKind, CoAwait,
|
||||
"operator co_await");
|
||||
OUTPUT_ENUM_CLASS_VALUE(IntrinsicFunctionKind, Spaceship, "operator<=>");
|
||||
case IntrinsicFunctionKind::MaxIntrinsic:
|
||||
case IntrinsicFunctionKind::None:
|
||||
break;
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
; RUN: llvm-undname < %s | FileCheck %s
|
||||
|
||||
; CHECK-NOT: Invalid mangled name
|
||||
|
||||
??__LA@@QEAA?AUno_suspend@@XZ
|
||||
; CHECK: struct no_suspend __cdecl A::operator co_await(void)
|
||||
|
||||
??__MS@@QEAA?AVstrong_ordering@std@@AEBU0@@Z'
|
||||
; CHECK: class std::strong_ordering __cdecl S::operator<=>(struct S const &)
|
Loading…
Reference in New Issue