aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-03-16 12:31:38 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-03-16 12:31:38 +0000
commit7686fb74efd6744c19e457f7e72bdc714ba5ec3e (patch)
tree3cdfddcdbbc35835c57fd03ff638ed4bbd456263 /gcc
parent7a1817642b2da6c3163533bf367bf6ba1a878f52 (diff)
downloadgcc-7686fb74efd6744c19e457f7e72bdc714ba5ec3e.zip
gcc-7686fb74efd6744c19e457f7e72bdc714ba5ec3e.tar.gz
gcc-7686fb74efd6744c19e457f7e72bdc714ba5ec3e.tar.bz2
re PR tree-optimization/43379 (ICE: error: SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set with -O2 -ftracer)
2010-03-16 Richard Guenther <rguenther@suse.de> PR middle-end/43379 * tree-cfg.c (gimple_merge_blocks): When propagating virtual PHI operands make sure to merge SSA_NAME_OCCURS_IN_ABNORMAL_PHI properly. * gcc.dg/pr43379.c: New testcase. From-SVN: r157478
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr43379.c11
-rw-r--r--gcc/tree-cfg.c3
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fda7e80..cd624b5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2010-03-16 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/43379
+ * tree-cfg.c (gimple_merge_blocks): When propagating virtual
+ PHI operands make sure to merge SSA_NAME_OCCURS_IN_ABNORMAL_PHI
+ properly.
+
2010-03-16 Aldy Hernandez <aldyh@redhat.com>
Alexandre Oliva <aoliva@redhat.com>
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dfe0246..37d0765 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-16 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/43379
+ * gcc.dg/pr43379.c: New testcase.
+
2010-03-16 Jakub Jelinek <jakub@redhat.com>
PR debug/43051
diff --git a/gcc/testsuite/gcc.dg/pr43379.c b/gcc/testsuite/gcc.dg/pr43379.c
new file mode 100644
index 0000000..de9bf66
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr43379.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftracer" } */
+
+void *foo(int i, int *p)
+{
+lab:
+ if (p) *p = i;
+ goto *p;
+ return &&lab;
+}
+
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 6f4e416..01fefc30 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -1617,6 +1617,9 @@ gimple_merge_blocks (basic_block a, basic_block b)
FOR_EACH_IMM_USE_STMT (stmt, iter, def)
FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
SET_USE (use_p, use);
+
+ if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (def))
+ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (use) = 1;
}
else
replace_uses_by (def, use);