From b59ab5709ef2cfc6c1cde6ed91f13de3bbe5c54e Mon Sep 17 00:00:00 2001 From: Alexander Monakov Date: Thu, 14 Jan 2010 13:28:47 +0300 Subject: re PR middle-end/42245 (ICE in verify_backedges for 197.parser with sel-sched) 2010-01-14 Andrey Belevantsev Alexander Monakov PR middle-end/42245 * sel-sched-ir.c (sel_recompute_toporder): New. Use it... (maybe_tidy_empty_bb): ... here. Make static. Add new argument. Update all callers. (tidy_control_flow): ... and here. Recompute topological order of basic blocks in region if necessary. (sel_redirect_edge_and_branch): Change return type. Return true if topological order might have been invalidated. (purge_empty_blocks): Export and move from... * sel-sched.c (purge_empty_blocks): ... here. * sel-sched-ir.h (sel_redirect_edge_and_branch): Update prototype. (maybe_tidy_empty_bb): Delete prototype. (purge_empty_blocks): Declare. * gcc.dg/pr42245.c: New. * gcc.dg/pr42245-2.c: New. From-SVN: r155890 --- gcc/sel-sched.c | 18 ------------------ 1 file changed, 18 deletions(-) (limited to 'gcc/sel-sched.c') diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 27c0f21..4ca8ab2 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -6765,24 +6765,6 @@ setup_current_loop_nest (int rgn) gcc_assert (LOOP_MARKED_FOR_PIPELINING_P (current_loop_nest)); } -/* Purge meaningless empty blocks in the middle of a region. */ -static void -purge_empty_blocks (void) -{ - /* Do not attempt to delete preheader. */ - int i = sel_is_loop_preheader_p (BASIC_BLOCK (BB_TO_BLOCK (0))) ? 1 : 0; - - while (i < current_nr_blocks) - { - basic_block b = BASIC_BLOCK (BB_TO_BLOCK (i)); - - if (maybe_tidy_empty_bb (b)) - continue; - - i++; - } -} - /* Compute instruction priorities for current region. */ static void sel_compute_priorities (int rgn) -- cgit v1.1