r326971 - [MS] Pass CVRU qualifiers properly in Itanium mangler

Reid Kleckner via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 7 16:55:09 PST 2018


Author: rnk
Date: Wed Mar  7 16:55:09 2018
New Revision: 326971

URL: http://llvm.org/viewvc/llvm-project?rev=326971&view=rev
Log:
[MS] Pass CVRU qualifiers properly in Itanium mangler

We already have a mangling for the __unaligned qualifier, we just have
to call Qualifiers::getFromCVRUMask instead of getFromCVRMask.

PR36638

Modified:
    cfe/trunk/lib/AST/ItaniumMangle.cpp
    cfe/trunk/test/CodeGenCXX/pr33080.cpp

Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=326971&r1=326970&r2=326971&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ItaniumMangle.cpp (original)
+++ cfe/trunk/lib/AST/ItaniumMangle.cpp Wed Mar  7 16:55:09 2018
@@ -2688,7 +2688,7 @@ void CXXNameMangler::mangleType(const Fu
 
   // Mangle CV-qualifiers, if present.  These are 'this' qualifiers,
   // e.g. "const" in "int (A::*)() const".
-  mangleQualifiers(Qualifiers::fromCVRMask(T->getTypeQuals()));
+  mangleQualifiers(Qualifiers::fromCVRUMask(T->getTypeQuals()));
 
   // Mangle instantiation-dependent exception-specification, if present,
   // per cxx-abi-dev proposal on 2016-10-11.

Modified: cfe/trunk/test/CodeGenCXX/pr33080.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/pr33080.cpp?rev=326971&r1=326970&r2=326971&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/pr33080.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/pr33080.cpp Wed Mar  7 16:55:09 2018
@@ -21,6 +21,10 @@ void hb(__unaligned struct A *, __unalig
 void ja(__unaligned struct A *, __unaligned struct A *__unaligned *, __unaligned struct A *__unaligned *__unaligned *) {}
 // CHECK: define {{(dso_local )?}}void @_Z2jaPU11__unaligned1APU11__unalignedS1_PU11__unalignedS3_(
 
+struct A;
+void memptr(void (A::*a)(int) __unaligned) {}
+// CHECK: define {{.*}} @_Z6memptrM1AU11__unalignedFviE(
+
 void jb(__unaligned struct A *, __unaligned struct A **, __unaligned struct A *__unaligned *__unaligned *) {}
 // CHECK: @_Z2jbPU11__unaligned1APS1_PU11__unalignedPU11__unalignedS1_(
 




More information about the cfe-commits mailing list