aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2004-07-16 22:51:48 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2004-07-16 22:51:48 +0000
commit3f7d210dfb6639949b9b2f0f6dc04cb4124d85b6 (patch)
tree17780a64a3a502b08cf76f16cfb78be263315d05 /gcc
parent6809cbf90dffd5a6fccf96d67c5f520e1a162eb6 (diff)
downloadgcc-3f7d210dfb6639949b9b2f0f6dc04cb4124d85b6.zip
gcc-3f7d210dfb6639949b9b2f0f6dc04cb4124d85b6.tar.gz
gcc-3f7d210dfb6639949b9b2f0f6dc04cb4124d85b6.tar.bz2
tree-ssa-pre.c (insert_aux): Break out if we hit a critical edge.
2004-07-16 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-pre.c (insert_aux): Break out if we hit a critical edge. From-SVN: r84841
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),