Check no unreachable blocks in inverted_post_order_compute 2015-10-12 Tom de Vries * cfganal.c (verify_no_unreachable_blocks): New function. (inverted_post_order_compute) [ENABLE_CHECKING]: Call verify_no_unreachable_blocks. cfganal.h (verify_no_unreachable_blocks): Declare. --- gcc/cfganal.c | 17 +++++++++++++++++ gcc/cfganal.h | 1 + 2 files changed, 18 insertions(+) diff --git a/gcc/cfganal.c b/gcc/cfganal.c index 279c3b5..1f935eb 100644 --- a/gcc/cfganal.c +++ b/gcc/cfganal.c @@ -193,6 +193,19 @@ find_unreachable_blocks (void) free (worklist); } + +/* Verify that there are no unreachable blocks in the current function. */ + +void +verify_no_unreachable_blocks (void) +{ + find_unreachable_blocks (); + + basic_block bb; + FOR_EACH_BB_FN (bb, cfun) + gcc_assert ((bb->flags & BB_REACHABLE) != 0); +} + /* Functions to access an edge list with a vector representation. Enough data is kept such that given an index number, the @@ -772,6 +785,10 @@ inverted_post_order_compute (int *post_order) int post_order_num = 0; sbitmap visited; +#if ENABLE_CHECKING + verify_no_unreachable_blocks (); +#endif + /* Allocate stack for back-tracking up CFG. */ stack = XNEWVEC (edge_iterator, n_basic_blocks_for_fn (cfun) + 1); sp = 0; diff --git a/gcc/cfganal.h b/gcc/cfganal.h index 3eb4764..2ad00c0 100644 --- a/gcc/cfganal.h +++ b/gcc/cfganal.h @@ -49,6 +49,7 @@ private: extern bool mark_dfs_back_edges (void); extern void find_unreachable_blocks (void); +extern void verify_no_unreachable_blocks (void); struct edge_list * create_edge_list (void); void free_edge_list (struct edge_list *); void print_edge_list (FILE *, struct edge_list *); -- 1.9.1