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

Reply via email to