[PATCH] D19654: PR27132: Proper mangling for __unaligned qualifier (now with PR27367 fixed)
David Majnemer via cfe-commits
cfe-commits at lists.llvm.org
Wed May 4 15:42:36 PDT 2016
majnemer added inline comments.
================
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)) {
----------------
andreybokhanko wrote:
> 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
>
Wait, I thought __unaligned can only apply to pointer types. Is this not so?!
Does `__unaligned int x;` really keep it's `__unaligned` qualifier?
http://reviews.llvm.org/D19654
More information about the cfe-commits
mailing list