summaryrefslogtreecommitdiff
path: root/gcc/init-regs.c
diff options
context:
space:
mode:
authorzadeck <zadeck@138bc75d-0d04-0410-961f-82ee72b054a4>2007-06-19 19:04:52 +0000
committerzadeck <zadeck@138bc75d-0d04-0410-961f-82ee72b054a4>2007-06-19 19:04:52 +0000
commitdeb2741b38fe5c3702de0139b72df56eb72ebe35 (patch)
treefa9997fc4e323fc1d4610bbda7d845966152ff14 /gcc/init-regs.c
parenta650636a6229f762a28f3316815082c269a10e7e (diff)
downloadgcc-deb2741b38fe5c3702de0139b72df56eb72ebe35.tar.gz
2007-06-15 Kenneth Zadeck <zadeck@naturalbridge.com>
* df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed. (struct df_problem.free_blocks_on_set_blocks): New field. (struct dataflow.optional_p): New field. (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed. (df_live_set_all_dirty): New function. * df-scan.c (df_scan_alloc): Initialize optional_p. (problem_SCAN): Initialize free_blocks_on_set_blocks. * df-core.c (df_set_blocks): Removed use of DF_FIRST_OPTIONAL_PROBLEM. Now uses df_problem.free_blocks_on_set_blocks to determine which blocks are recycled. (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM. (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM. Now uses dataflow.optional_p to determine if problem should be deleted. (rest_of_handle_df_initialize): Only start live problem if -02 or above. (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed. * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc, df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p. (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN, problem_NOTE): Initialize free_blocks_on_set_blocks. (df_lr_bb_local_compute): Recompute luids if df_live problem is not active. (df_live_set_all_dirty, df_note_alloc): New function. * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to df_get_live_*. * sched_ebb.c (compute_jump_reg_dependencies): Ditto. * postreload.c (reload_combine): Ditto. * cse.c (cse_extended_basic_block): Ditto. * regmove.c (mark_flags_life_zones): Ditto. * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq, erase_matching_seqs): Ditto. * bt-load.c (compute_defs_uses_and_gen): Ditto. * integrate (allocate_initial_values): Ditto. * combine.c (reg_dead_at_p): Ditto. * resource.c (mark_target_live_regs): Ditto. * sched-rgn.c (check_live_1, update_live_1): Ditto. * config/sh/sh.c (find_r0_life_regions): Ditto. * global.c (rest_of_handle_global_alloc): Only add back df_live for -O > 1. * local-alloc.c (rest_of_handle_local_alloc): Only remove df_live for -O > 1. * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to df_get_live_*. (if_convert): Make sure df_live is there at -O == 1. (pass_if_after_combine): Cleanup flags. * init-regs.c (initialize_uninitialized_regs): Make sure df_live is there at -O == 1. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125857 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/init-regs.c')
-rw-r--r--gcc/init-regs.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/init-regs.c b/gcc/init-regs.c
index adde3fa2cd7..7e4d0565122 100644
--- a/gcc/init-regs.c
+++ b/gcc/init-regs.c
@@ -53,6 +53,12 @@ initialize_uninitialized_regs (void)
basic_block bb;
bitmap already_genned = BITMAP_ALLOC (NULL);
+ if (optimize == 1)
+ {
+ df_live_add_problem ();
+ df_live_set_all_dirty ();
+ }
+
df_analyze ();
FOR_EACH_BB (bb)
@@ -111,6 +117,9 @@ initialize_uninitialized_regs (void)
}
}
+ if (optimize == 1)
+ df_remove_problem (df_live);
+
BITMAP_FREE (already_genned);
}