From 2a6fa433d0daa3b07eb2b75f65a9ff72adf29b68 Mon Sep 17 00:00:00 2001 From: Jason Eckhardt Date: Thu, 4 May 2000 02:37:49 +0000 Subject: [PATCH] bb-reorder.c (struct reorder_block_def): Member succ removed. Wed May 3 21:01:46 2000 Jason Eckhardt * bb-reorder.c (struct reorder_block_def): Member succ removed. (REORDER_BLOCK_SUCC): Removed. (enum reorder_skip_type): Removed. (skip_insns_between_block): Renamed to skip_insns_after_block. Removed second argument. Removed dead code and cleaned up. (make_reorder_chain): Removed use of REORDER_BLOCK_SUCC. (reorder_basic_blocks): Remove use of REORDER_SKIP_AFTER. Removed second parameter to skip_insns_after_block. From-SVN: r33655 --- gcc/ChangeLog | 11 ++++ gcc/bb-reorder.c | 143 ++++++++++++----------------------------------- 2 files changed, 46 insertions(+), 108 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78035c1e225..622b76f83d7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +Wed May 3 21:01:46 2000 Jason Eckhardt + + * bb-reorder.c (struct reorder_block_def): Member succ removed. + (REORDER_BLOCK_SUCC): Removed. + (enum reorder_skip_type): Removed. + (skip_insns_between_block): Renamed to skip_insns_after_block. + Removed second argument. Removed dead code and cleaned up. + (make_reorder_chain): Removed use of REORDER_BLOCK_SUCC. + (reorder_basic_blocks): Remove use of REORDER_SKIP_AFTER. Removed + second parameter to skip_insns_after_block. + Wed May 3 13:29:54 2000 Richard Kenner * tree.c (staticp, case LABEL_DECL): New case. diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index f6e226e4ac3..0b1a77ff935 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -103,7 +103,6 @@ typedef struct reorder_block_def { int flags; int index; basic_block add_jump; - edge succ; rtx eff_head; rtx eff_end; scope scope; @@ -114,7 +113,6 @@ static struct reorder_block_def rbd_init 0, /* flags */ 0, /* index */ NULL, /* add_jump */ - NULL, /* succ */ NULL_RTX, /* eff_head */ NULL_RTX, /* eff_end */ NULL /* scope */ @@ -133,9 +131,6 @@ static struct reorder_block_def rbd_init #define REORDER_BLOCK_ADD_JUMP(bb) \ ((reorder_block_def) (bb)->aux)->add_jump -#define REORDER_BLOCK_SUCC(bb) \ - ((reorder_block_def) (bb)->aux)->succ - #define REORDER_BLOCK_EFF_HEAD(bb) \ ((reorder_block_def) (bb)->aux)->eff_head @@ -149,13 +144,9 @@ static struct reorder_block_def rbd_init static int reorder_index; static basic_block reorder_last_visited; -enum reorder_skip_type {REORDER_SKIP_BEFORE, REORDER_SKIP_AFTER, - REORDER_SKIP_BLOCK_END}; - /* Local function prototypes. */ -static rtx skip_insns_between_block PARAMS ((basic_block, - enum reorder_skip_type)); +static rtx skip_insns_after_block PARAMS ((basic_block)); static basic_block get_common_dest PARAMS ((basic_block, basic_block)); static basic_block chain_reorder_blocks PARAMS ((edge, basic_block)); static void make_reorder_chain PARAMS ((basic_block)); @@ -176,113 +167,52 @@ static void free_scope_forest PARAMS ((scope_forest_info *)); void dump_scope_forest PARAMS ((scope_forest_info *)); static void dump_scope_forest_1 PARAMS ((scope, int)); -/* Skip over insns BEFORE or AFTER BB which are typically associated with - basic block BB. */ +/* Skip over inter-block insns occurring after BB which are typically + associated with BB (e.g., barriers). If there are any such insns, + we return the last one. Otherwise, we return the end of BB. */ static rtx -skip_insns_between_block (bb, skip_type) +skip_insns_after_block (bb) basic_block bb; - enum reorder_skip_type skip_type; { rtx insn, last_insn; - if (skip_type == REORDER_SKIP_BEFORE) - { - if (bb == ENTRY_BLOCK_PTR) - return 0; + last_insn = bb->end; - last_insn = bb->head; - for (insn = PREV_INSN (bb->head); - insn && insn != BASIC_BLOCK (bb->index - 1)->end; - last_insn = insn, insn = PREV_INSN (insn)) - { - if (NEXT_INSN (insn) != last_insn) - break; - - if (GET_CODE (insn) == NOTE - && NOTE_LINE_NUMBER (insn) != NOTE_INSN_LOOP_END - && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK - && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BLOCK_END) - continue; - - break; - } - } - else - { - last_insn = bb->end; + if (bb == EXIT_BLOCK_PTR) + return 0; - if (bb == EXIT_BLOCK_PTR) - return 0; + for (insn = NEXT_INSN (bb->end); + insn; + last_insn = insn, insn = NEXT_INSN (insn)) + { + if (bb->index + 1 != n_basic_blocks + && insn == BASIC_BLOCK (bb->index + 1)->head) + break; + + if (GET_CODE (insn) == BARRIER + || GET_CODE (insn) == JUMP_INSN + || (GET_CODE (insn) == NOTE + && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END + || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END))) + continue; - for (insn = NEXT_INSN (bb->end); - insn; - last_insn = insn, insn = NEXT_INSN (insn)) + if (GET_CODE (insn) == CODE_LABEL + && GET_CODE (NEXT_INSN (insn)) == JUMP_INSN + && (GET_CODE (PATTERN (NEXT_INSN (insn))) == ADDR_VEC + || GET_CODE (PATTERN (NEXT_INSN (insn))) == ADDR_DIFF_VEC)) { - if (bb->index + 1 != n_basic_blocks - && insn == BASIC_BLOCK (bb->index + 1)->head) - break; - - if (GET_CODE (insn) == BARRIER - || GET_CODE (insn) == JUMP_INSN - || (GET_CODE (insn) == NOTE - && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END - || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END))) - continue; - - if (GET_CODE (insn) == CODE_LABEL - && GET_CODE (NEXT_INSN (insn)) == JUMP_INSN - && (GET_CODE (PATTERN (NEXT_INSN (insn))) == ADDR_VEC - || GET_CODE (PATTERN - (NEXT_INSN (insn))) == ADDR_DIFF_VEC)) - { - insn = NEXT_INSN (insn); - continue; - } - - /* Skip to next non-deleted insn. */ - if (GET_CODE (insn) == NOTE - && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED - || NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL)) - continue; - - break; + insn = NEXT_INSN (insn); + continue; } - if (skip_type == REORDER_SKIP_BLOCK_END) - { - int found_block_end = 0; - - for (; insn; last_insn = insn, insn = NEXT_INSN (insn)) - { - if (bb->index + 1 != n_basic_blocks - && insn == BASIC_BLOCK (bb->index + 1)->head) - break; - - if (GET_CODE (insn) == NOTE - && NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END) - { - found_block_end = 1; - continue; - } - - if (GET_CODE (insn) == NOTE - && NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED) - continue; - - if (GET_CODE (insn) == NOTE - && NOTE_LINE_NUMBER (insn) >= 0 - && NEXT_INSN (insn) - && GET_CODE (NEXT_INSN (insn)) == NOTE - && (NOTE_LINE_NUMBER (NEXT_INSN (insn)) - == NOTE_INSN_BLOCK_END)) - continue; - break; - } + /* Skip to next non-deleted insn. */ + if (GET_CODE (insn) == NOTE + && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED + || NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL)) + continue; - if (! found_block_end) - last_insn = 0; - } + break; } return last_insn; @@ -566,8 +496,6 @@ make_reorder_chain (bb) if (REORDER_BLOCK_FLAGS (e->dest) & REORDER_BLOCK_VISITED) REORDER_BLOCK_FLAGS (e->dest) &= ~REORDER_BLOCK_HEAD; - REORDER_BLOCK_SUCC (bb) = e; - visited_edge = e->dest; reorder_last_visited = chain_reorder_blocks (e, bb); @@ -1410,8 +1338,7 @@ reorder_basic_blocks () for (i = 0; i < n_basic_blocks; i++) { basic_block bbi = BASIC_BLOCK (i); - REORDER_BLOCK_EFF_END (bbi) - = skip_insns_between_block (bbi, REORDER_SKIP_AFTER); + REORDER_BLOCK_EFF_END (bbi) = skip_insns_after_block (bbi); if (i == 0) REORDER_BLOCK_EFF_HEAD (bbi) = get_insns (); else -- 2.30.2