summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-12-01 19:13:51 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-12-01 19:13:51 +0000
commitf3027177bc87b69344a929e840350ba49fbb81f3 (patch)
tree5162aeff0a16b0d96ec8a7aa3cb186dcb283703c /clang/lib
parente830f5427bce45b462c927dc997b4e1c408a2f3e (diff)
downloadbcm5719-llvm-f3027177bc87b69344a929e840350ba49fbb81f3.tar.gz
bcm5719-llvm-f3027177bc87b69344a929e840350ba49fbb81f3.zip
[MS ABI] Correctly mangle nullptr member pointers for variable templates
Variable templates behave the same as class templates with regard to nullptr memeber pointers. llvm-svn: 254439
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/MicrosoftMangle.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp
index 01e17588feb..c1c2d2d1a45 100644
--- a/clang/lib/AST/MicrosoftMangle.cpp
+++ b/clang/lib/AST/MicrosoftMangle.cpp
@@ -697,7 +697,6 @@ void MicrosoftCXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
// Function templates aren't considered for name back referencing. This
// makes sense since function templates aren't likely to occur multiple
// times in a symbol.
- // FIXME: Test alias template mangling with MSVC 2013.
if (!isa<ClassTemplateDecl>(TD)) {
mangleTemplateInstantiationName(TD, *TemplateArgs);
Out << '@';
@@ -1226,12 +1225,13 @@ void MicrosoftCXXNameMangler::mangleTemplateArg(const TemplateDecl *TD,
QualType T = TA.getNullPtrType();
if (const MemberPointerType *MPT = T->getAs<MemberPointerType>()) {
const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
- if (MPT->isMemberFunctionPointerType() && isa<ClassTemplateDecl>(TD)) {
+ if (MPT->isMemberFunctionPointerType() &&
+ !isa<FunctionTemplateDecl>(TD)) {
mangleMemberFunctionPointer(RD, nullptr);
return;
}
if (MPT->isMemberDataPointer()) {
- if (isa<ClassTemplateDecl>(TD)) {
+ if (!isa<FunctionTemplateDecl>(TD)) {
mangleMemberDataPointer(RD, nullptr);
return;
}
OpenPOWER on IntegriCloud