diff options
author | Andrey Belevantsev <abel@gcc.gnu.org> | 2010-01-14 14:02:18 +0300 |
---|---|---|
committer | Andrey Belevantsev <abel@gcc.gnu.org> | 2010-01-14 14:02:18 +0300 |
commit | 762bffbac19855194ddcf644c332cee01be701be (patch) | |
tree | 165cee59cff3d4e82367f1cdae0dc08c4edabb65 /gcc/sel-sched-ir.c | |
parent | 14f30b877fe018475154a6e4d8979bc57528232d (diff) | |
download | gcc-762bffbac19855194ddcf644c332cee01be701be.zip gcc-762bffbac19855194ddcf644c332cee01be701be.tar.gz gcc-762bffbac19855194ddcf644c332cee01be701be.tar.bz2 |
re PR rtl-optimization/42388 (ICE in move_bb_info with sel-sched and modulo-sched for 176.gcc)
PR rtl-optimization/42388
* sel-sched-ir.c (maybe_tidy_empty_bb): Do not delete empty blocks
that have no predecessors nor successors. Do not call move_bb_info
for empty blocks outside of current region.
From-SVN: r155894
Diffstat (limited to 'gcc/sel-sched-ir.c')
-rw-r--r-- | gcc/sel-sched-ir.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 218c04e..1353b4c 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -3540,12 +3540,15 @@ maybe_tidy_empty_bb (basic_block bb, bool recompute_toporder_p) bool rescan_p; /* Keep empty bb only if this block immediately precedes EXIT and - has incoming non-fallthrough edge. Otherwise remove it. */ + has incoming non-fallthrough edge, or it has no predecessors or + successors. Otherwise remove it. */ if (!sel_bb_empty_p (bb) || (single_succ_p (bb) && single_succ (bb) == EXIT_BLOCK_PTR && (!single_pred_p (bb) - || !(single_pred_edge (bb)->flags & EDGE_FALLTHRU)))) + || !(single_pred_edge (bb)->flags & EDGE_FALLTHRU))) + || EDGE_COUNT (bb->preds) == 0 + || EDGE_COUNT (bb->succs) == 0) return false; /* Do not attempt to redirect complex edges. */ @@ -3595,7 +3598,8 @@ maybe_tidy_empty_bb (basic_block bb, bool recompute_toporder_p) { gcc_assert (pred_bb != NULL); - move_bb_info (pred_bb, bb); + if (in_current_region_p (pred_bb)) + move_bb_info (pred_bb, bb); remove_empty_bb (bb, true); } |