Commit 5f96750d by Richard Stallman

(can_combine_p): Don't don't substitute an expression

containing a register that will be clobbered in I3.

From-SVN: r2631
parent dc4e989c
...@@ -776,11 +776,15 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc) ...@@ -776,11 +776,15 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc)
else if (GET_CODE (dest) != CC0) else if (GET_CODE (dest) != CC0)
return 0; return 0;
/* Don't substitute for a register intended as a clobberable operand. */ /* Don't substitute for a register intended as a clobberable operand.
Similarly, don't substitute an expression containing a register that
will be clobbered in I3. */
if (GET_CODE (PATTERN (i3)) == PARALLEL) if (GET_CODE (PATTERN (i3)) == PARALLEL)
for (i = XVECLEN (PATTERN (i3), 0) - 1; i >= 0; i--) for (i = XVECLEN (PATTERN (i3), 0) - 1; i >= 0; i--)
if (GET_CODE (XVECEXP (PATTERN (i3), 0, i)) == CLOBBER if (GET_CODE (XVECEXP (PATTERN (i3), 0, i)) == CLOBBER
&& rtx_equal_p (XEXP (XVECEXP (PATTERN (i3), 0, i), 0), dest)) && (reg_overlap_mentioned_p (XEXP (XVECEXP (PATTERN (i3), 0, i), 0),
src)
|| rtx_equal_p (XEXP (XVECEXP (PATTERN (i3), 0, i), 0), dest)))
return 0; return 0;
/* If INSN contains anything volatile, or is an `asm' (whether volatile /* If INSN contains anything volatile, or is an `asm' (whether volatile
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment