On Wed, Nov 30, 2016 at 1:04 PM, Jakub Jelinek <ja...@redhat.com> wrote:
> Hi!
>
> This is another RTL sharing bug, tmp is created through gen_rtx_SUBREG
> and so shouldn't be shared by the move insn with the following insn that
> uses it.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux
> (--enable-checking=yes,rtl,extra), ok for trunk?
>
> 2016-11-30  Jakub Jelinek  <ja...@redhat.com>
>
>         * config/i386/i386.c (dimode_scalar_chain::convert_op): Avoid
>         sharing the SUBREG rtx between move and following insn.

Uh, OK for mainline and backports.

Thanks,
Uros.

> --- gcc/config/i386/i386.c.jj   2016-11-30 10:07:26.000000000 +0100
> +++ gcc/config/i386/i386.c      2016-11-30 11:10:21.009991127 +0100
> @@ -3723,7 +3723,7 @@ dimode_scalar_chain::convert_op (rtx *op
>           emit_insn_before (seq, insn);
>         }
>
> -      emit_insn_before (gen_move_insn (tmp, vec_cst), insn);
> +      emit_insn_before (gen_move_insn (copy_rtx (tmp), vec_cst), insn);
>        *op = tmp;
>      }
>    else
>
>         Jakub

Reply via email to