aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-10-18 19:10:20 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-10-18 19:10:20 -0400
commit4dca5ec5b8066d1ba161e3c5c93d6ff383bcf567 (patch)
tree2a0322ab8fd9b71fabe5c9a354a0c2eecfcd0e28
parent9b316aa2e606819d385ef616ac0728af59ff5e8a (diff)
downloadgcc-4dca5ec5b8066d1ba161e3c5c93d6ff383bcf567.zip
gcc-4dca5ec5b8066d1ba161e3c5c93d6ff383bcf567.tar.gz
gcc-4dca5ec5b8066d1ba161e3c5c93d6ff383bcf567.tar.bz2
(can_combine_p): Don't combine into CALL_INSN where DEST is a global
reg. From-SVN: r8305
-rw-r--r--gcc/combine.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 27875e5..4399bb0 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -875,7 +875,11 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc)
/* Can't merge a function call. */
|| GET_CODE (src) == CALL
/* Don't eliminate a function call argument. */
- || (GET_CODE (i3) == CALL_INSN && find_reg_fusage (i3, USE, dest))
+ || (GET_CODE (i3) == CALL_INSN
+ && (find_reg_fusage (i3, USE, dest)
+ || (GET_CODE (dest) == REG
+ && REGNO (dest) < FIRST_PSEUDO_REGISTER
+ && global_regs[REGNO (dest)])))
/* Don't substitute into an incremented register. */
|| FIND_REG_INC_NOTE (i3, dest)
|| (succ && FIND_REG_INC_NOTE (succ, dest))