aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-11-04 19:45:06 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-11-04 19:45:06 +0100
commit269c80f2a6b982cdc8364e1d2885c7ce5e8d6b9a (patch)
treed2183e6d142b29a9760fe0f93bd5895f51227ab1 /gcc
parent86710a8bf2b766e47127566f9e5839997f8ea531 (diff)
downloadgcc-269c80f2a6b982cdc8364e1d2885c7ce5e8d6b9a.zip
gcc-269c80f2a6b982cdc8364e1d2885c7ce5e8d6b9a.tar.gz
gcc-269c80f2a6b982cdc8364e1d2885c7ce5e8d6b9a.tar.bz2
re PR tree-optimization/46233 (ICE: verify_flow_info failed: control flow in the middle of basic block 3 with -foptimize-sibling-calls)
PR tree-optimization/46233 * ipa-pure-const.c (local_pure_const): Do noreturn discovery after calling analyze_function, not before. * gcc.dg/pr46233.c: New test. From-SVN: r166324
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/ipa-pure-const.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr46233.c11
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7351294..8c46368 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2010-11-04 Jakub Jelinek <jakub@redhat.com>
+ PR tree-optimization/46233
+ * ipa-pure-const.c (local_pure_const): Do noreturn discovery
+ after calling analyze_function, not before.
+
PR target/46234
* config/rs6000/rs6000.c (rs6000_va_start): Use build_simple_mem_ref
instead of build_va_arg_indirect_ref.
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index d671643..c122435 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -1571,7 +1571,9 @@ local_pure_const (void)
&& skip)
return 0;
- /* First do NORETURN discovery. */
+ l = analyze_function (node, false);
+
+ /* Do NORETURN discovery. */
if (!skip && !TREE_THIS_VOLATILE (current_function_decl)
&& EDGE_COUNT (EXIT_BLOCK_PTR->preds) == 0)
{
@@ -1587,7 +1589,6 @@ local_pure_const (void)
changed = true;
}
- l = analyze_function (node, false);
switch (l->pure_const_state)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ddff9cf..90c2ed2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/46233
+ * gcc.dg/pr46233.c: New test.
+
2010-11-04 Iain Sandoe <iains@gcc.gnu.org>
* objc.dg/property/property-2.m: Deleted.
diff --git a/gcc/testsuite/gcc.dg/pr46233.c b/gcc/testsuite/gcc.dg/pr46233.c
new file mode 100644
index 0000000..8916e4b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr46233.c
@@ -0,0 +1,11 @@
+/* PR tree-optimization/46233 */
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-dce" } */
+
+int
+foo ()
+{
+ int i = 0;
+ while (1)
+ i += foo ();
+}