forked from OSchip/llvm-project
Mangle std::nullptr_t as specified by the Itanium C++ ABI.
llvm-svn: 118236
This commit is contained in:
parent
9a94d9b876
commit
2683fd6f8c
|
@ -1219,9 +1219,8 @@ void CXXNameMangler::mangleType(const BuiltinType *T) {
|
|||
// UNSUPPORTED: ::= Dh # IEEE 754r half-precision floating point (16 bits)
|
||||
// ::= Di # char32_t
|
||||
// ::= Ds # char16_t
|
||||
// ::= Dn # std::nullptr_t (i.e., decltype(nullptr))
|
||||
// ::= u <source-name> # vendor extended type
|
||||
// From our point of view, std::nullptr_t is a builtin, but as far as mangling
|
||||
// is concerned, it's a type called std::nullptr_t.
|
||||
switch (T->getKind()) {
|
||||
case BuiltinType::Void: Out << 'v'; break;
|
||||
case BuiltinType::Bool: Out << 'b'; break;
|
||||
|
@ -1244,7 +1243,7 @@ void CXXNameMangler::mangleType(const BuiltinType *T) {
|
|||
case BuiltinType::Float: Out << 'f'; break;
|
||||
case BuiltinType::Double: Out << 'd'; break;
|
||||
case BuiltinType::LongDouble: Out << 'e'; break;
|
||||
case BuiltinType::NullPtr: Out << "St9nullptr_t"; break;
|
||||
case BuiltinType::NullPtr: Out << "Dn"; break;
|
||||
|
||||
case BuiltinType::Overload:
|
||||
case BuiltinType::Dependent:
|
||||
|
|
|
@ -630,3 +630,8 @@ namespace test21 {
|
|||
// CHECK: define void @_ZN6test2112vla_arg_funcEiPA_i(
|
||||
void vla_arg_func(int X, int a[X][X]) {}
|
||||
}
|
||||
|
||||
namespace test22 {
|
||||
// CHECK: define void @_ZN6test221fEDn(
|
||||
void f(decltype(nullptr)) { }
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue