<div dir="ltr">On Fri, Aug 30, 2013 at 1:36 PM, Warren Hunt <span dir="ltr"><<a href="mailto:whunt@google.com" target="_blank">whunt@google.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-family:arial,sans-serif;font-size:13px">Now that I'm putting finishing touches on the Microsoft Record Layout patch (<a href="http://llvm-reviews.chandlerc.com/D1026" target="_blank">http://llvm-reviews.chandlerc.com/D1026</a>) there are some subtle issues that are cropping up with respect to compatibility with the ms_struct pragma/mms-bitfields flag.<div>

<br></div><div>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.</div>

<div><br></div><div>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.</div><div><br></div>

</div><div style="font-family:arial,sans-serif;font-size:13px">Does anyone object to making mms-bitfields/ms_struct mean "use Microsoft record layout" so we can deprecate the hybrid code?</div></div></blockquote>
<div><br></div><div>These are equivalent for standard-layout classes, right?<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-family:arial,sans-serif;font-size:13px">

<div><br></div><div>When using mms-bitfields/ms_struct should we throw an error if the record is not standard layout?<br></div></div></div></blockquote><div><br></div><div>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.<br>
</div><div><br></div><div>-Eli<br></div></div></div></div>