r210642 - MS ABI: Only class templates get complex nullptr pointer-to-member-functions
David Majnemer
david.majnemer at gmail.com
Wed Jun 11 00:08:37 PDT 2014
Author: majnemer
Date: Wed Jun 11 02:08:37 2014
New Revision: 210642
URL: http://llvm.org/viewvc/llvm-project?rev=210642&view=rev
Log:
MS ABI: Only class templates get complex nullptr pointer-to-member-functions
r210637 regressed CodeGenCXX/mangle-ms-templates-memptrs.cpp because it
did not believe that there is a distinction between class templates and
function templates.
Sadly, there is. Function templates should behave in a compatible
manner with MSVC.
Modified:
cfe/trunk/lib/AST/MicrosoftMangle.cpp
Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=210642&r1=210641&r2=210642&view=diff
==============================================================================
--- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original)
+++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Wed Jun 11 02:08:37 2014
@@ -1156,13 +1156,16 @@ void MicrosoftCXXNameMangler::mangleTemp
QualType T = TA.getNullPtrType();
if (const MemberPointerType *MPT = T->getAs<MemberPointerType>()) {
const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
- if (MPT->isMemberFunctionPointerType())
+ if (MPT->isMemberFunctionPointerType() && isa<ClassTemplateDecl>(TD)) {
mangleMemberFunctionPointer(RD, nullptr);
- else
+ return;
+ }
+ if (MPT->isMemberDataPointer()) {
mangleMemberDataPointer(RD, nullptr);
- } else {
- Out << "$0A@";
+ return;
+ }
}
+ Out << "$0A@";
break;
}
case TemplateArgument::Expression:
More information about the cfe-commits
mailing list