summaryrefslogtreecommitdiff
path: root/gcc/cfghooks.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-09-05 09:17:49 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-09-05 09:17:49 +0000
commit08c13199cf5568393fd46481d99cf1729480548a (patch)
tree498eb05797e1926e45952564278499d1d7db531b /gcc/cfghooks.c
parentf65586dcd19846071fd94fed4fb1bf91843887d1 (diff)
cfgloop.c (mark_loop_for_removal): New function.
2014-09-05 Richard Biener <rguenther@suse.de> * cfgloop.c (mark_loop_for_removal): New function. * cfgloop.h (mark_loop_for_removal): Declare. * cfghooks.c (delete_basic_block): Use mark_loop_for_removal. (merge_blocks): Likewise. (duplicate_block): Likewise. * except.c (sjlj_emit_dispatch_table): Likewise. * tree-eh.c (cleanup_empty_eh_merge_phis): Likewise. * tree-ssa-threadupdate.c (ssa_redirect_edges): Likewise. (thread_through_loop_header): Likewise. From-SVN: r214942
Diffstat (limited to 'gcc/cfghooks.c')
-rw-r--r--gcc/cfghooks.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c
index 90bc6cf1e9f..fa18214e1ff 100644
--- a/gcc/cfghooks.c
+++ b/gcc/cfghooks.c
@@ -569,14 +569,10 @@ delete_basic_block (basic_block bb)
struct loop *loop = bb->loop_father;
/* If we remove the header or the latch of a loop, mark the loop for
- removal by setting its header and latch to NULL. */
+ removal. */
if (loop->latch == bb
|| loop->header == bb)
- {
- loop->header = NULL;
- loop->latch = NULL;
- loops_state_set (LOOPS_NEED_FIXUP);
- }
+ mark_loop_for_removal (loop);
remove_bb_from_loops (bb);
}
@@ -760,11 +756,7 @@ merge_blocks (basic_block a, basic_block b)
/* ... we merge two loop headers, in which case we kill
the inner loop. */
if (b->loop_father->header == b)
- {
- b->loop_father->header = NULL;
- b->loop_father->latch = NULL;
- loops_state_set (LOOPS_NEED_FIXUP);
- }
+ mark_loop_for_removal (b->loop_father);
}
/* If we merge a loop header into its predecessor, update the loop
structure. */
@@ -1099,9 +1091,7 @@ duplicate_block (basic_block bb, edge e, basic_block after)
&& cloop->header == bb)
{
add_bb_to_loop (new_bb, loop_outer (cloop));
- cloop->header = NULL;
- cloop->latch = NULL;
- loops_state_set (LOOPS_NEED_FIXUP);
+ mark_loop_for_removal (cloop);
}
else
{