aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2000-04-27 15:34:16 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2000-04-27 15:34:16 +0000
commit1b513b771182dcaf9d849d73cf43624074f54ff5 (patch)
tree2a937fa2d4d674c2fa40f6bc9a6b243a9de188de /gcc
parent8e02c4d08d74b07290d9f18eae923e5a77914f62 (diff)
downloadgcc-1b513b771182dcaf9d849d73cf43624074f54ff5.zip
gcc-1b513b771182dcaf9d849d73cf43624074f54ff5.tar.gz
gcc-1b513b771182dcaf9d849d73cf43624074f54ff5.tar.bz2
* function.c (epilogue_done): Pass whole insn to record_insns.
From-SVN: r33488
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/flow.c2
-rw-r--r--gcc/function.c6
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b485d4f..e309f7e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Thu Apr 27 17:33:05 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * function.c (epilogue_done): Pass whole insn to record_insns.
+
Thu Apr 27 16:55:28 MET DST 2000 Jan Hubicka <jh@suse.cz>
* cse.c (CSE_ADDRESS_COST): Remove.
diff --git a/gcc/flow.c b/gcc/flow.c
index 5c8252e..131d88b 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -4000,6 +4000,8 @@ mark_set_1 (pbi, code, reg, cond, insn, flags)
|| GET_CODE (reg) == ZERO_EXTRACT
|| GET_CODE (reg) == SIGN_EXTRACT
|| GET_CODE (reg) == STRICT_LOW_PART);
+ if (GET_CODE (reg) == MEM)
+ break;
not_dead = REGNO_REG_SET_P (pbi->reg_live, REGNO (reg));
/* FALLTHRU */
diff --git a/gcc/function.c b/gcc/function.c
index 5aee650..756f5fc 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -7025,6 +7025,7 @@ epilogue_done:
basic_block bb = e->src;
rtx insn = bb->end;
rtx i;
+ rtx newinsn;
if (GET_CODE (insn) != CALL_INSN
|| ! SIBLING_CALL_P (insn))
@@ -7035,7 +7036,7 @@ epilogue_done:
end_sequence ();
i = PREV_INSN (insn);
- emit_insn_before (seq, insn);
+ newinsn = emit_insn_before (seq, insn);
/* Update the UID to basic block map. */
for (i = NEXT_INSN (i); i != insn; i = NEXT_INSN (i))
@@ -7043,7 +7044,8 @@ epilogue_done:
/* Retain a map of the epilogue insns. Used in life analysis to
avoid getting rid of sibcall epilogue insns. */
- record_insns (seq, &sibcall_epilogue);
+ record_insns (GET_CODE (seq) == SEQUENCE
+ ? seq : newinsn, &sibcall_epilogue);
}
#endif
}