diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-10-18 19:10:20 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-10-18 19:10:20 -0400 |
commit | 4dca5ec5b8066d1ba161e3c5c93d6ff383bcf567 (patch) | |
tree | 2a0322ab8fd9b71fabe5c9a354a0c2eecfcd0e28 | |
parent | 9b316aa2e606819d385ef616ac0728af59ff5e8a (diff) | |
download | gcc-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.c | 6 |
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)) |