forked from OSchip/llvm-project
[ms-cxxabi] Mangle nullptr template arguments
MSVC mangles nullptr template arguments identically to zero literals. llvm-svn: 187741
This commit is contained in:
parent
0c37cfd8b8
commit
ae465ef7cc
|
@ -889,6 +889,9 @@ void MicrosoftCXXNameMangler::mangleTemplateArg(const TemplateDecl *TD,
|
|||
mangleIntegerLiteral(TA.getAsIntegral(),
|
||||
TA.getIntegralType()->isBooleanType());
|
||||
break;
|
||||
case TemplateArgument::NullPtr:
|
||||
Out << "$0A@";
|
||||
break;
|
||||
case TemplateArgument::Expression:
|
||||
mangleExpression(TA.getAsExpr());
|
||||
break;
|
||||
|
@ -901,8 +904,7 @@ void MicrosoftCXXNameMangler::mangleTemplateArg(const TemplateDecl *TD,
|
|||
mangleTemplateArg(TD, *I, ArgIndex);
|
||||
break;
|
||||
case TemplateArgument::Template:
|
||||
case TemplateArgument::TemplateExpansion:
|
||||
case TemplateArgument::NullPtr: {
|
||||
case TemplateArgument::TemplateExpansion: {
|
||||
// Issue a diagnostic.
|
||||
DiagnosticsEngine &Diags = Context.getDiags();
|
||||
unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
|
||||
// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=x86_64-pc-win32 | FileCheck -check-prefix X64 %s
|
||||
// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
|
||||
// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -cxx-abi microsoft -triple=x86_64-pc-win32 | FileCheck -check-prefix X64 %s
|
||||
|
||||
template<typename T>
|
||||
class Class {
|
||||
|
@ -156,3 +156,8 @@ void variadic_class_instantiate() {
|
|||
}
|
||||
// CHECK: call {{.*}} @"\01??0?$VariadicClass@HD_N@@QAE@XZ"
|
||||
// CHECK: call {{.*}} @"\01??0?$VariadicClass@_NDH@@QAE@XZ"
|
||||
|
||||
// PR16788
|
||||
template <decltype(nullptr)> struct S1 {};
|
||||
void f(S1<nullptr>) {}
|
||||
// CHECK: "\01?f@@YAXU?$S1@$0A@@@@Z"
|
||||
|
|
Loading…
Reference in New Issue