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

containing a register that will be clobbered in I3.

From-SVN: r2631
This commit is contained in:
Richard Stallman 1992-10-28 20:15:51 +00:00
parent dc4e989cc8
commit 5f96750d14
1 changed files with 6 additions and 2 deletions

View File

@ -776,11 +776,15 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc)
else if (GET_CODE (dest) != CC0)
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)
for (i = XVECLEN (PATTERN (i3), 0) - 1; i >= 0; i--)
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;
/* If INSN contains anything volatile, or is an `asm' (whether volatile