From 9c5fbd8dbb8762c6d75c24f90d137fa18f926271 Mon Sep 17 00:00:00 2001 From: dnovillo Date: Tue, 2 Aug 2005 19:12:52 +0000 Subject: [PATCH 1/1] PR 23164 * tree-cfgcleanup.c (cleanup_tree_cfg): Do not limit the number of calls to cleanup_tree_cfg_1. testsuite/ChangeLog PR 23164 * g++.dg/tree-ssa/pr23164.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102666 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/tree-ssa/pr23164.C | 16 ++++++++++++++++ gcc/tree-cfgcleanup.c | 14 ++------------ 4 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 gcc/testsuite/g++.dg/tree-ssa/pr23164.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c4665db2257..a323b8fbeec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-08-02 Diego Novillo + + 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 * doc/invoke.texi: document file extensions .F90 and .F95 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2ec8fdb9bc1..595becbf48a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2005-08-02 Diego Novillo + PR 23164 + * g++.dg/tree-ssa/pr23164.C: New test. + +2005-08-02 Diego Novillo + * gcc.dg/tree-ssa/pr23192.c: New test. 2005-08-02 James A. Morrison 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 00000000000..2318a309cec --- /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 f2454b01119..f8bca03e9df 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 (); -- 2.11.0