From a7b01a4bf1537bc20459fbc2467c95bef9147c83 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 29 Aug 2001 02:31:44 -0700 Subject: [PATCH] bb-reorder.c (function_tail_eff_head): New. * bb-reorder.c (function_tail_eff_head): New. (record_effective_endpoints): Set it. (fixup_reorder_chain): Use it. From-SVN: r45255 --- gcc/ChangeLog | 6 ++++++ gcc/bb-reorder.c | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ea82eb5f04f5..657f68aa3418 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-08-29 Richard Henderson + + * bb-reorder.c (function_tail_eff_head): New. + (record_effective_endpoints): Set it. + (fixup_reorder_chain): Use it. + 2001-08-28 Kaveh R. Ghazi * dwarf2asm.c (dw2_asm_output_nstring): Fix typo in previous change. diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index c75ac96988c1..72d3902e7fc6 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -171,6 +171,9 @@ typedef struct reorder_block_def #define RBI(BB) ((reorder_block_def) (BB)->aux) +/* Holds the interesting trailing notes for the function. */ +static rtx function_tail_eff_head; + /* Local function prototypes. */ static rtx skip_insns_after_block PARAMS ((basic_block)); @@ -307,6 +310,7 @@ record_effective_endpoints () RBI (bb)->eff_end = end; next_insn = NEXT_INSN (end); } + function_tail_eff_head = next_insn; } @@ -580,8 +584,18 @@ fixup_reorder_chain () last_bb = bb; bb = RBI (bb)->next; } - NEXT_INSN (RBI (last_bb)->eff_end) = NULL_RTX; - set_last_insn (RBI (last_bb)->eff_end); + + { + rtx insn = RBI (last_bb)->eff_end; + + NEXT_INSN (insn) = function_tail_eff_head; + if (function_tail_eff_head) + PREV_INSN (function_tail_eff_head) = insn; + + while (NEXT_INSN (insn)) + insn = NEXT_INSN (insn); + set_last_insn (insn); + } /* Now add jumps and labels as needed to match the blocks new outgoing edges. */ -- 2.47.2