On Mon, 30 Jan 2017, Uros Bizjak wrote: > > 2017-01-30 Richard Biener <rguent...@suse.de> > > > > PR target/79277 > > * config/i386/i386-modes.def: Align DFmode properly. > > Index: gcc/config/i386/i386-modes.def > =================================================================== > --- gcc/config/i386/i386-modes.def (revision 245021) > +++ gcc/config/i386/i386-modes.def (working copy) > @@ -33,6 +33,7 @@ ADJUST_FLOAT_FORMAT (XF, (TARGET_128BIT_ > : &ieee_extended_intel_96_format)); > ADJUST_BYTESIZE (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 12); > ADJUST_ALIGNMENT (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 4); > +ADJUST_ALIGNMENT (DF, !TARGET_64BIT ? 4 : 8); > > Please avoid negative logic, just swap arms of the conditional around.
It was just meant as an example fix. I don't think this is appropriate at this stage nor is it complete. A full fix would basically make x86_field_alignment unnecessary which limits most modes alignment to 32bit (but not vector or 128bit float modes). And the conditional needs updating to honor TARGET_ALIGN_DOUBLE. So I leave such change to target maintainers and continue papering over this issue in the middle-end (at least for GCC 7). Thanks, Richard.