On 02/28/2018 12:26 AM, Jakub Jelinek wrote: > Hi! > > The following patch fixes the reported ms_struct/-mms-bitfields structure > layout issues from PR52991. > > There are multiple issues, two of them introduced by the > https://gcc.gnu.org/ml/gcc-patches/2006-04/msg01064.html -mms-bitfields > revamp from Eric and follow-up fix r114552, the rest has been introduced > later when the known_align < desired_align case has been enabled for the ms > bitfield layout. > > The first 2 hunks fix alignment of packed non-bitfield fields, we can't > ignore all the alignment updates for them, just should use only > desired_align which takes DECL_PACKED into account, rather than > MAX (type_align, desired_align). Similarly, the last hunk in stor-layout.c > makes sure that for DECL_PACKED fields we use BITS_PER_UNIT alignment rather > than the type alignment. > > The rest attempts to unbreak r184409 which enabled known_align < desired_align > case; doing that if rli->prev_field and ms layout is wrong, we first need to > deal with the bitfield packing and if we are within a bitfield word, we > shouldn't do any realignment, only in between them. > > The patch reverts changes to bf-ms-layout{,-2}.c tests done in 2012, which > were done just to match the r184409 changes, and adds 2 new tests. All of > these 4 I've tested (slightly tweaked, so that it compiles with VC) with > the online VC compiler http://rextester.com/l/c_online_compiler_visual . > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? >
No objections.
signature.asc
Description: OpenPGP digital signature