From: Jeffrey A Law Date: Mon, 18 Jun 2001 19:46:37 +0000 (+0000) Subject: flow.c (find_unreachable_blocks): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1e29ee12f059af6e1451bcd73d72c6f80f8b94c3;p=gcc.git flow.c (find_unreachable_blocks): New function. * flow.c (find_unreachable_blocks): New function. (delete_unreachable_blocks): Use find_unreachable_blocks. * basic-block.h (find_unreachable_blocks): Declare. From-SVN: r43448 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92e79c1a9fd..13daeb5c493 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ Mon Jun 18 12:50:49 2001 Jeffrey A Law (law@cygnus.com) + * flow.c (find_unreachable_blocks): New function. + (delete_unreachable_blocks): Use find_unreachable_blocks. + * basic-block.h (find_unreachable_blocks): Declare. + * dce.c (eliminate_dead_code): Fix formatting glitch. 2001-06-18 Jason Merrill diff --git a/gcc/basic-block.h b/gcc/basic-block.h index c5e30d96805..8d63cefd694 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -555,6 +555,7 @@ extern void debug_bb_n PARAMS ((int)); extern void dump_regset PARAMS ((regset, FILE *)); extern void debug_regset PARAMS ((regset)); extern void allocate_reg_life_data PARAMS ((void)); +extern void find_unreachable_blocks PARAMS ((void)); /* This function is always defined so it can be called from the debugger, and it is declared extern so we don't get warnings about diff --git a/gcc/flow.c b/gcc/flow.c index 77783aa9696..43ed9cc03ff 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -2055,14 +2055,15 @@ flow_call_edges_add (blocks) return blocks_split; } -/* Delete all unreachable basic blocks. */ +/* Find unreachable blocks. An unreachable block will have NULL in + block->aux, a non-NULL value indicates the block is reachable. */ -static void -delete_unreachable_blocks () +void +find_unreachable_blocks () { - basic_block *worklist, *tos; edge e; int i, n; + basic_block *tos, *worklist; n = n_basic_blocks; tos = worklist = (basic_block *) xmalloc (sizeof (basic_block) * n); @@ -2098,11 +2099,20 @@ delete_unreachable_blocks () } } + free (worklist); +} + +/* Delete all unreachable basic blocks. */ +static void +delete_unreachable_blocks () +{ + int i; + /* Delete all unreachable basic blocks. Count down so that we don't interfere with the block renumbering that happens in flow_delete_block. */ - for (i = n - 1; i >= 0; --i) + for (i = n_basic_blocks - 1; i >= 0; --i) { basic_block b = BASIC_BLOCK (i); @@ -2114,8 +2124,6 @@ delete_unreachable_blocks () } tidy_fallthru_edges (); - - free (worklist); } /* Return true if NOTE is not one of the ones that must be kept paired,