diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-11-04 19:45:06 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-11-04 19:45:06 +0100 |
commit | 269c80f2a6b982cdc8364e1d2885c7ce5e8d6b9a (patch) | |
tree | d2183e6d142b29a9760fe0f93bd5895f51227ab1 /gcc | |
parent | 86710a8bf2b766e47127566f9e5839997f8ea531 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ipa-pure-const.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr46233.c | 11 |
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 (); +} |