[PATCH] D19654: PR27132: Proper mangling for __unaligned qualifier (now with PR27367 fixed)

Andrey Bokhanko via cfe-commits cfe-commits at lists.llvm.org
Wed May 4 03:32:05 PDT 2016


andreybokhanko marked 3 inline comments as done.

================
Comment at: lib/AST/MicrosoftMangle.cpp:1583-1584
@@ -1579,2 +1582,4 @@
   case QMM_Result:
+    // Presence of __unaligned qualifier shouldn't affect mangling here.
+    Quals.removeUnaligned();
     if ((!IsPointer && Quals) || isa<TagType>(T)) {
----------------
majnemer wrote:
> andreybokhanko wrote:
> > Done. Test added.
> Hmm, can you give a concrete example why we need this line?
Sure. An example is:

__unaligned int unaligned_foo3() { return 0; }

MS mangles it as

?unaligned_foo3@@YAHXZ

However, if __unaligned is taken into account, "if ((!IsPointer && Quals) || isa<TagType>(T))" computes to true and clang adds "?A", resulting to

?unaligned_foo3@@YA?AHXZ

Yours,
Andrey



http://reviews.llvm.org/D19654





More information about the cfe-commits mailing list