From 1b513b771182dcaf9d849d73cf43624074f54ff5 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 27 Apr 2000 15:34:16 +0000 Subject: [PATCH] * function.c (epilogue_done): Pass whole insn to record_insns. From-SVN: r33488 --- gcc/ChangeLog | 4 ++++ gcc/flow.c | 2 ++ gcc/function.c | 6 ++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b485d4f1cda..e309f7eea63 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Thu Apr 27 17:33:05 MET DST 2000 Jan Hubicka + + * function.c (epilogue_done): Pass whole insn to record_insns. + Thu Apr 27 16:55:28 MET DST 2000 Jan Hubicka * cse.c (CSE_ADDRESS_COST): Remove. diff --git a/gcc/flow.c b/gcc/flow.c index 5c8252e843e..131d88bf46e 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 5aee650fce2..756f5fcb8b4 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 }