[cfe-dev] Microsoft ABI Support vs. ms_struct & Removing -mms-bitfields

Eli Friedman eli.friedman at gmail.com
Sun Sep 1 17:11:15 PDT 2013


On Fri, Aug 30, 2013 at 1:36 PM, Warren Hunt <whunt at google.com> wrote:

> Now that I'm putting finishing touches on the Microsoft Record Layout
> patch (http://llvm-reviews.chandlerc.com/D1026) there are some subtle
> issues that are cropping up with respect to compatibility with the
> ms_struct pragma/mms-bitfields flag.
>
> The issues is that behavior of ms_struct/mms-bitfields is to use the
> Itanium layout rules for everything except alignment of long long,
> bitfields and bitfield padding.  This results in something that is Win32
> ABI compatible for standard layout C++ structures but not otherwise.
>
> It would be a maintenance win if we could remove all Microsoft related
> layout code from the Itanium builder and simply use the Microsoft builder
> when ms_struct or mms-bitfields is set.
>
> Does anyone object to making mms-bitfields/ms_struct mean "use Microsoft
> record layout" so we can deprecate the hybrid code?
>

These are equivalent for standard-layout classes, right?


> When using mms-bitfields/ms_struct should we throw an error if the record
> is not standard layout?
>

Please be cautious here; even if we just consider clang on the Mac,
ms_struct is widely used, and some people probably use it on
non-standard-layout classes, either by accident or just without thinking
about it.  And I'm sure a few people who haven't really considered the
consequences use -mms-bitfields as well.

-Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130901/ff953ff7/attachment.html>


More information about the cfe-dev mailing list