diff options
author | Reid Kleckner <rnk@google.com> | 2018-03-08 00:55:09 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-03-08 00:55:09 +0000 |
commit | 267589a966e79b84879628a0735bbb5a2e477cce (patch) | |
tree | d0bd78a2d1cc951b0a727dc97bef161360e68daf | |
parent | 86fb7bf2bca553bc7137e85d0ac0c7a809e16c80 (diff) | |
download | bcm5719-llvm-267589a966e79b84879628a0735bbb5a2e477cce.tar.gz bcm5719-llvm-267589a966e79b84879628a0735bbb5a2e477cce.zip |
[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
llvm-svn: 326971
-rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 2 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/pr33080.cpp | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index d6d3792b6af..3a7b34d271e 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -2688,7 +2688,7 @@ void CXXNameMangler::mangleType(const FunctionProtoType *T) { // 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. diff --git a/clang/test/CodeGenCXX/pr33080.cpp b/clang/test/CodeGenCXX/pr33080.cpp index 782327ec23f..bae47cc2e06 100644 --- a/clang/test/CodeGenCXX/pr33080.cpp +++ b/clang/test/CodeGenCXX/pr33080.cpp @@ -21,6 +21,10 @@ void hb(__unaligned struct A *, __unaligned const struct A *) {} 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_( |