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

David Majnemer via cfe-commits cfe-commits at lists.llvm.org
Fri May 6 09:40:52 PDT 2016


majnemer added a comment.

In http://reviews.llvm.org/D19654#423382, @andreybokhanko wrote:

> David, thank you for the thorough review! -- it definitely made the patch stronger and me even more paranoid than the rest of Intel. :-)


Thanks for implementing this :)

> 

> 

> In http://reviews.llvm.org/D19654#422445, @majnemer wrote:

> 

> > FYI, we will also want to update `getAddrOfCXXCatchHandler` and `getThrowInfo` to correctly handle `__unaligned`.

> 

> 

> Do you want me to implement this (I have no idea how EH works on Windows, but can try...) or plan to implement yourself?


I have no plans to implement this but I don't think it is very difficult.  The way I'd go about this is to see what happens when the following occur:

  throw (int *__unaligned)nullptr;

MSVC should emit a ThrowInfo object, _TI... which points to a CatchableTypeArray, _CTA... which will point to two CatchableTypes, _CT...: one for pointer-to-void and the other for pointer-to-int.
Both of the CatchableTypes have a bitfield containing qualifiers, among other things.  One of these are where __unaligned should go, see `getThrowInfo` for more details.

> Yours,

> Andrey



Repository:
  rL LLVM

http://reviews.llvm.org/D19654





More information about the cfe-commits mailing list