From 269c80f2a6b982cdc8364e1d2885c7ce5e8d6b9a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 4 Nov 2010 19:45:06 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/ipa-pure-const.c | 5 +++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr46233.c | 11 +++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr46233.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7351294329b..8c463683805 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2010-11-04 Jakub Jelinek + 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 d671643116e..c122435391f 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 ddff9cf6ec5..90c2ed22046 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-11-04 Jakub Jelinek + + PR tree-optimization/46233 + * gcc.dg/pr46233.c: New test. + 2010-11-04 Iain Sandoe * 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 00000000000..8916e4bdd37 --- /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 (); +}