re PR rtl-optimization/29879 (ICE: verify_flow_info: loop_father but no loops)

2006-11-19  Andrew Pinski  <pinskia@gmail.com>

        PR rtl-opt/29879
        * fwprop.c (loops): Remove.
        (forward_propagate_into): Use current_loops instead of
        loops.
        (fwprop_init): Call loop_optimizer_init instead of
        flow_loops_find.
        (fwprop_done): Call loop_optimizer_finalize instead of
        flow_loops_free.
        (fwprop): Use current_loops instead of loo

From-SVN: r119010
This commit is contained in:
Andrew Pinski 2006-11-19 20:51:47 -08:00 committed by Andrew Pinski
parent 7f420d0d64
commit f81c1b60f2
2 changed files with 16 additions and 8 deletions

View File

@ -1,3 +1,15 @@
2006-11-19 Andrew Pinski <pinskia@gmail.com>
PR rtl-opt/29879
* fwprop.c (loops): Remove.
(forward_propagate_into): Use current_loops instead of
loops.
(fwprop_init): Call loop_optimizer_init instead of
flow_loops_find.
(fwprop_done): Call loop_optimizer_finalize instead of
flow_loops_free.
(fwprop): Use current_loops instead of loops.
2006-11-19 Gabriel Dos Reis <gdr@integrable-solutions.net>
PR c++/8586

View File

@ -104,7 +104,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
where the first two insns are now dead. */
static struct loops loops;
static struct df *df;
static int num_changes;
@ -859,7 +858,7 @@ forward_propagate_into (struct df_ref *use)
/* Do not propagate loop invariant definitions inside the loop if
we are going to unroll. */
if (loops.num > 0
if (current_loops
&& DF_REF_BB (def)->loop_father != DF_REF_BB (use)->loop_father)
return;
@ -896,7 +895,7 @@ fwprop_init (void)
before df_analyze, because flow_loops_find may introduce new jump
insns (sadly) if we are not working in cfglayout mode. */
if (flag_rerun_cse_after_loop && (flag_unroll_loops || flag_peel_loops))
flow_loops_find (&loops);
loop_optimizer_init (0);
/* Now set up the dataflow problem (we only want use-def chains) and
put the dataflow solver to work. */
@ -912,10 +911,7 @@ fwprop_done (void)
df_finish (df);
if (flag_rerun_cse_after_loop && (flag_unroll_loops || flag_peel_loops))
{
flow_loops_free (&loops);
loops.num = 0;
}
loop_optimizer_finalize ();
free_dominance_info (CDI_DOMINATORS);
cleanup_cfg (0);
@ -955,7 +951,7 @@ fwprop (void)
{
struct df_ref *use = DF_USES_GET (df, i);
if (use)
if (loops.num == 0
if (!current_loops
|| DF_REF_TYPE (use) == DF_REF_REG_USE
|| DF_REF_BB (use)->loop_father == NULL)
forward_propagate_into (use);