diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2007-03-20 08:31:13 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2007-03-20 08:31:13 +0000 |
commit | fb4061627b2cd9acb3298d8a7f3ad90ab2615cf7 (patch) | |
tree | ac14daea0ef0dd3b428a5ec40c1293f79e2d5e54 /gcc/df-problems.c | |
parent | 0a85ec2e8c8a0d0632bbfc16ebe2d9eab4010995 (diff) | |
download | gcc-fb4061627b2cd9acb3298d8a7f3ad90ab2615cf7.zip gcc-fb4061627b2cd9acb3298d8a7f3ad90ab2615cf7.tar.gz gcc-fb4061627b2cd9acb3298d8a7f3ad90ab2615cf7.tar.bz2 |
re PR middle-end/30907 (Propagation of addresses within loops pessimizes code)
2007-03-19 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/30907
* fwprop.c (forward_propagate_into): Never propagate inside a loop.
(fwprop_init): Always call loop_optimizer_initialize.
(fwprop_done): Always call loop_optimizer_finalize.
(fwprop): We always have loop info now.
(gate_fwprop_addr): Remove.
(pass_fwprop_addr): Use gate_fwprop as gate.
PR rtl-optimization/30841
* df-problems.c (df_ru_local_compute, df_rd_local_compute,
df_chain_alloc): Call df_reorganize_refs unconditionally.
* df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
refs_organized to refs_organized_size.
(df_ref_create_structure): Use refs_organized_size instead of
bitmap_size if refs had been organized, and keep refs_organized_size
up-to-date.
* df.h (struct df_ref_info): Change refs_organized to
refs_organized_size.
(DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
bitmap_size.
From-SVN: r123084
Diffstat (limited to 'gcc/df-problems.c')
-rw-r--r-- | gcc/df-problems.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/gcc/df-problems.c b/gcc/df-problems.c index ec80bf7..42710b2 100644 --- a/gcc/df-problems.c +++ b/gcc/df-problems.c @@ -586,9 +586,7 @@ df_ru_local_compute (struct dataflow *dflow, bitmap dense_invalidated = problem_data->dense_invalidated_by_call; df_set_seen (); - - if (!df->use_info.refs_organized) - df_reorganize_refs (&df->use_info); + df_reorganize_refs (&df->use_info); EXECUTE_IF_SET_IN_BITMAP (all_blocks, 0, bb_index, bi) { @@ -1109,9 +1107,7 @@ df_rd_local_compute (struct dataflow *dflow, bitmap dense_invalidated = problem_data->dense_invalidated_by_call; df_set_seen (); - - if (!df->def_info.refs_organized) - df_reorganize_refs (&df->def_info); + df_reorganize_refs (&df->def_info); EXECUTE_IF_SET_IN_BITMAP (all_blocks, 0, bb_index, bi) { @@ -2771,8 +2767,7 @@ df_chain_alloc (struct dataflow *dflow, if (dflow->flags & DF_DU_CHAIN) { - if (!df->def_info.refs_organized) - df_reorganize_refs (&df->def_info); + df_reorganize_refs (&df->def_info); /* Clear out the pointers from the refs. */ for (i = 0; i < DF_DEFS_SIZE (df); i++) @@ -2784,8 +2779,7 @@ df_chain_alloc (struct dataflow *dflow, if (dflow->flags & DF_UD_CHAIN) { - if (!df->use_info.refs_organized) - df_reorganize_refs (&df->use_info); + df_reorganize_refs (&df->use_info); for (i = 0; i < DF_USES_SIZE (df); i++) { struct df_ref *ref = df->use_info.refs[i]; |