aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-pre.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index df18afa..a89927f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-16 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (insert_aux): Break out if we hit
+ a critical edge.
+
2004-07-16 Richard Henderson <rth@redhat.com>
* basic-block.h (remove_fake_exit_edges): Declare.
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index ba4be7b..a694398 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -1457,6 +1457,15 @@ insert_aux (basic_block block)
{
tree vprime;
tree edoubleprime;
+
+ /* This can happen in the very weird case
+ that our fake infinite loop edges have caused a
+ critical edge to appear. */
+ if (EDGE_CRITICAL_P (pred))
+ {
+ cant_insert = true;
+ break;
+ }
bprime = pred->src;
eprime = phi_translate (node->expr,
ANTIC_IN (block),