summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-01 14:51:25 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-01 14:51:25 +0000
commitf5b280d8dd04d3499456fd110aa88b96b1ab096d (patch)
tree8c3e80833e54b539f74e427d3ba632104604b561 /gcc
parent7abafbe17f9fe3bc157d75164b37767a8fa50b55 (diff)
downloadgcc-f5b280d8dd04d3499456fd110aa88b96b1ab096d.tar.gz
* tree-cfg.c (cleanup_tree_cfg): Pull a call to
cleanup_control_flow() out of the while loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88395 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-cfg.c12
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d7d99a7887c..9b4c512add6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-01 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-cfg.c (cleanup_tree_cfg): Pull a call to
+ cleanup_control_flow() out of the while loop.
+
2004-10-01 Paolo Bonzini <bonzini@gnu.org>
* tree-vectorizer.c (vectorizable_operation): Fail unless
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 025e677c396..72f73784d60 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -717,16 +717,22 @@ cleanup_tree_cfg (void)
timevar_push (TV_TREE_CLEANUP_CFG);
- /* These three transformations can cascade, so we iterate on them until
+ retval = cleanup_control_flow ();
+
+ /* These two transformations can cascade, so we iterate on them until
nothing changes. */
while (something_changed)
{
- something_changed = cleanup_control_flow ();
- something_changed |= delete_unreachable_blocks ();
+ something_changed = delete_unreachable_blocks ();
something_changed |= thread_jumps ();
retval |= something_changed;
}
+#ifdef ENABLE_CHECKING
+ if (retval)
+ gcc_assert (!cleanup_control_flow ());
+#endif
+
/* Merging the blocks creates no new opportunities for the other
optimizations, so do it here. */
merge_seq_blocks ();