re PR rtl-optimization/62151 (wrong code at -O2 and -O3 on x86_64-linux-gnu)
2014-10-01 Segher Boessenkool <segher@kernel.crashing.org> gcc/ PR rtl-optimization/62151 * combine.c (can_combine_p): Allow the destination register of INSN to be clobbered in I3. (subst): Do not substitute into clobbers of registers. gcc/testsuite/ * gcc.dg/combine-clobber.c: New. From-SVN: r215789
This commit is contained in:
parent
3f4dd27a6e
commit
fef32cf89f
|
@ -1,3 +1,10 @@
|
|||
2014-10-01 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
PR rtl-optimization/62151
|
||||
* combine.c (can_combine_p): Allow the destination register of INSN
|
||||
to be clobbered in I3.
|
||||
(subst): Do not substitute into clobbers of registers.
|
||||
|
||||
2014-10-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/63342
|
||||
|
|
|
@ -1950,11 +1950,7 @@ can_combine_p (rtx_insn *insn, rtx_insn *i3, rtx_insn *pred ATTRIBUTE_UNUSED,
|
|||
for (i = XVECLEN (PATTERN (i3), 0) - 1; i >= 0; i--)
|
||||
if (GET_CODE (XVECEXP (PATTERN (i3), 0, i)) == CLOBBER)
|
||||
{
|
||||
/* Don't substitute for a register intended as a clobberable
|
||||
operand. */
|
||||
rtx reg = XEXP (XVECEXP (PATTERN (i3), 0, i), 0);
|
||||
if (rtx_equal_p (reg, dest))
|
||||
return 0;
|
||||
|
||||
/* If the clobber represents an earlyclobber operand, we must not
|
||||
substitute an expression containing the clobbered register.
|
||||
|
@ -4963,6 +4959,11 @@ subst (rtx x, rtx from, rtx to, int in_dest, int in_cond, int unique_copy)
|
|||
|| (REG_P (X) && REG_P (Y) \
|
||||
&& REGNO (X) == REGNO (Y) && GET_MODE (X) == GET_MODE (Y)))
|
||||
|
||||
/* Do not substitute into clobbers of regs -- this will never result in
|
||||
valid RTL. */
|
||||
if (GET_CODE (x) == CLOBBER && REG_P (XEXP (x, 0)))
|
||||
return x;
|
||||
|
||||
if (! in_dest && COMBINE_RTX_EQUAL_P (x, from))
|
||||
{
|
||||
n_occurrences++;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2014-10-01 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* gcc.dg/combine-clobber.c: New.
|
||||
|
||||
2014-10-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/63342
|
||||
|
|
Loading…
Reference in New Issue