[PR c++/87137] GCC-8 Fix
Richard Biener
richard.guenther@gmail.com
Wed Aug 29 17:47:00 GMT 2018
On August 29, 2018 7:36:15 PM GMT+02:00, Nathan Sidwell <nathan@acm.org> wrote:
>This defect concerns bitfield layout in the Microsoft ABI. This is a
>fix for gcc-8.
>
>As well as MINGW targets, MS-ABI can be enabled on PowerPC & SuperH by
>suitable use of attributes or options.
>
>When I folded TYPE_METHODS into TYPE_FIELDS, the 'am I the last field'
>check of place_field could give a false positive in more cases.
>Specifically if two bitfields were separated by a member function
>declaration, they'd now be placed in separate allocation units.
>
>The place_field code was working under the assumption that the only
>things on the TYPE_FIELDS list could be FIELD_DECLs possibly followed
>by
>TYPE_DECLs. That stopped being true some time ago, and as such we
>already had a layout bug.
>
>But, it would be bad to make that particular ABI fix in a point
>release,
>so this patch just reverts the regression I caused. Sadly, because it
>requires understanding TEMPLATE_DECL, we can't simply update
>place_field. Instead I temporarily stitch out undesired DECLs around
>the call to place_field. This seems the least intrusive, and happens
>only when ms_bitfield_layout_p is in effect.
>
>I have manually checked the new testcase behaves the same in gcc-7 and
>patched gcc-8 for an x86_64-mingw32 target. Liu Hao has verified that
>the microsoft compiler gives the same results.
>
>I also attach a change to wwwdocs describing this change.
>
>Thoughts?
If it is that cumbersome to fix just the regression part we might also consider to fix the latent problem as well for GCC 8? We're already breaking the GCC 8 ABI and will be breaking the ABI again for GCC 9.
Richard.
>
>nathan
More information about the Gcc-patches
mailing list