diff options
author | Andrew Pinski <pinskia@gmail.com> | 2006-11-19 20:51:47 -0800 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2006-11-19 20:51:47 -0800 |
commit | f81c1b60f257f47b08ed9e03585b81922b9ec31e (patch) | |
tree | 8f0d473dbf3e7ac02950c8f90bc7545a3ffab15d /gcc/fwprop.c | |
parent | 7f420d0d6459fdef0017363d95837cdaee9384fa (diff) | |
download | gcc-f81c1b60f257f47b08ed9e03585b81922b9ec31e.zip gcc-f81c1b60f257f47b08ed9e03585b81922b9ec31e.tar.gz gcc-f81c1b60f257f47b08ed9e03585b81922b9ec31e.tar.bz2 |
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
Diffstat (limited to 'gcc/fwprop.c')
-rw-r--r-- | gcc/fwprop.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/gcc/fwprop.c b/gcc/fwprop.c index fb601e1..9dbf474 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -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); |