From patchwork Wed Nov 24 10:29:49 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [PR46602] sel-sched: move toporder checking Date: Wed, 24 Nov 2010 00:29:49 -0000 From: Alexander Monakov X-Patchwork-Id: 72829 Message-Id: To: gcc-patches@gcc.gnu.org Cc: "Vladimir N. Makarov" Hi, After the fix for PR 46204, we can enter maybe_tidy_empty_bb with invalid topological order, but will make no attempt to recompute it (instead the caller, tidy_control_flow, will do it later). That leads to an ICE in verify_backedges. Rather than bringing back some complexity into maybe_tidy_empty_bb to allow it to recompute toporder again, I'd like to move verify_backedges into the caller that creates edges between unrelated BBs, thus breaking toporder. Bootstrapped and regtested on x86_64-linux, ia64-linux (+ with sel-sched enabled at -O2), OK for trunk? 2010-11-24 Alexander Monakov PR rtl-optimization/46602 * sel-sched-ir.c (maybe_tidy_empty_bb): Move checking ... (tidy_control_flow): Here. diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 71c02c4..231358b 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -3650,10 +3650,6 @@ maybe_tidy_empty_bb (basic_block bb) remove_empty_bb (bb, true); } -#ifdef ENABLE_CHECKING - verify_backedges (); -#endif - return true; } @@ -3735,6 +3731,11 @@ tidy_control_flow (basic_block xbb, bool full_tidying) if (recompute_toporder_p) sel_recompute_toporder (); } + +#ifdef ENABLE_CHECKING + verify_backedges (); +#endif + return changed; }