diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tree-ssa/pr23164.C | 16 | ||||
-rw-r--r-- | gcc/tree-cfgcleanup.c | 14 |
4 files changed, 29 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c4665db..a323b8f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-08-02 Diego Novillo <dnovillo@redhat.com> + + PR 23164 + * tree-cfgcleanup.c (cleanup_tree_cfg): Do not limit the + number of calls to cleanup_tree_cfg_1. + 2005-08-02 Martin Reinecke <martin@mpa-garching.mpg.de> * doc/invoke.texi: document file extensions .F90 and .F95 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2ec8fdb..595becb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2005-08-02 Diego Novillo <dnovillo@redhat.com> + PR 23164 + * g++.dg/tree-ssa/pr23164.C: New test. + +2005-08-02 Diego Novillo <dnovillo@redhat.com> + * gcc.dg/tree-ssa/pr23192.c: New test. 2005-08-02 James A. Morrison <phython@gcc.gnu.org> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr23164.C b/gcc/testsuite/g++.dg/tree-ssa/pr23164.C new file mode 100644 index 0000000..2318a30 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr23164.C @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +bool f(); +struct S { + S(); + ~S(); +}; +void g() { + for (;;) { + S s1, s2, s3, s4, s5, s6; + if (f()) + continue; + if (f()) + return; + } +} diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index f2454b0..f8bca03 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -529,22 +529,12 @@ bool cleanup_tree_cfg (void) { bool retval; - int i; timevar_push (TV_TREE_CLEANUP_CFG); - for (retval = true, i = 0; i < 5 && retval; i++) + do retval = cleanup_tree_cfg_1 (); - -#ifdef ENABLE_CHECKING - if (retval) - { - gcc_assert (!cleanup_control_flow ()); - gcc_assert (!delete_unreachable_blocks ()); - if (optimize > 0) - gcc_assert (!cleanup_forwarder_blocks ()); - } -#endif + while (retval); compact_blocks (); |