From 5f96750d14e28200c13fb15d88edc77ecc8cbafc Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Wed, 28 Oct 1992 20:15:51 +0000 Subject: [PATCH] (can_combine_p): Don't don't substitute an expression containing a register that will be clobbered in I3. From-SVN: r2631 --- gcc/combine.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/combine.c b/gcc/combine.c index de46091a89d..89383a46ce6 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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 -- 2.30.2