On Mon, Apr 23, 2018 at 1:24 PM, Eric Botcazou <ebotca...@adacore.com> wrote: > Hi, > > this is a regression present on all the active branches for targets that > return values in registers using PARALLELs, when optimization is enabled. > store_field changes the mode of a temporary to ensure that it can be used to > create a register, leading to a mode mismatch downstream, but that's not > necessary in this case. The proposed fix is to get back to the previous > version of the code, which changed it only for BLKmode and VOIDmode. > > Tested on x86-64/Linux and SPARC64/Linux, OK for all active branches?
OK. Richard. > > 2018-04-23 Eric Botcazou <ebotca...@adacore.com> > > PR middle-end/85496 > * expr.c (store_field): In the bitfield case, if the value comes from > a function call and is returned in registers by means of a PARALLEL, > do not change the mode of the temporary unless BLKmode and VOIDmode. > > > 2018-04-23 Eric Botcazou <ebotca...@adacore.com> > > * g++.dg/torture/pr85496.C: New test. > > -- > Eric Botcazou