aboutsummaryrefslogtreecommitdiff
path: root/gcc/df-problems.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2007-03-20 08:31:13 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2007-03-20 08:31:13 +0000
commitfb4061627b2cd9acb3298d8a7f3ad90ab2615cf7 (patch)
treeac14daea0ef0dd3b428a5ec40c1293f79e2d5e54 /gcc/df-problems.c
parent0a85ec2e8c8a0d0632bbfc16ebe2d9eab4010995 (diff)
downloadgcc-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.c14
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];