diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2014-06-15 07:32:28 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2014-06-15 07:32:28 +0000 |
commit | bfac633a90588e96050f8767052d59efd7307cb1 (patch) | |
tree | 00fa07671c5adda4b362c1895d5e45e61ae0175b /gcc/ira.c | |
parent | 2c73339ae90070d7b33cb64a6d7461fbf676a53e (diff) | |
download | gcc-bfac633a90588e96050f8767052d59efd7307cb1.zip gcc-bfac633a90588e96050f8767052d59efd7307cb1.tar.gz gcc-bfac633a90588e96050f8767052d59efd7307cb1.tar.bz2 |
df.h (DF_INSN_INFO_MWS, [...]): New macros.
gcc/
* df.h (DF_INSN_INFO_MWS, FOR_EACH_INSN_INFO_DEF): New macros.
(FOR_EACH_INSN_INFO_USE, FOR_EACH_INSN_INFO_EQ_USE): Likewise.
(FOR_EACH_INSN_DEF, FOR_EACH_INSN_USE, FOR_EACH_INSN_EQ_USE): Likewise.
* auto-inc-dec.c (find_inc, merge_in_block): Use them.
* combine.c (create_log_links): Likewise.
* compare-elim.c (find_flags_uses_in_insn): Likewise.
(try_eliminate_compare): Likewise.
* cprop.c (make_set_regs_unavailable, mark_oprs_set): Likewise.
* dce.c (deletable_insn_p, find_call_stack_args): Likewise.
(remove_reg_equal_equiv_notes_for_defs): Likewise.
(reset_unmarked_insns_debug_uses, mark_reg_dependencies): Likewise.
(word_dce_process_block, dce_process_block): Likewise.
* ddg.c (def_has_ccmode_p): Likewise.
* df-core.c (df_bb_regno_first_def_find): Likewise.
(df_bb_regno_last_def_find, df_find_def, df_find_use): Likewise.
* df-problems.c (df_rd_simulate_one_insn): Likewise.
(df_lr_bb_local_compute, df_live_bb_local_compute): Likewise.
(df_chain_remove_problem, df_chain_insn_top_dump): Likewise.
(df_chain_insn_bottom_dump, df_word_lr_bb_local_compute): Likewise.
(df_word_lr_simulate_defs, df_word_lr_simulate_uses): Likewise.
(df_remove_dead_eq_notes, df_note_bb_compute): Likewise.
(df_simulate_find_defs, df_simulate_find_uses): Likewise.
(df_simulate_find_noclobber_defs, df_simulate_defs): Likewise.
(df_simulate_uses, df_md_simulate_one_insn): Likewise.
* df-scan.c (df_reorganize_refs_by_reg_by_insn): Likewise.
* fwprop.c (local_ref_killed_between_p): Likewise.
(all_uses_available_at, free_load_extend): Likewise.
* gcse.c (update_bb_reg_pressure, calculate_bb_reg_pressure): Likewise.
* hw-doloop.c (scan_loop): Likewise.
* ifcvt.c (dead_or_predicable): Likewise.
* init-regs.c (initialize_uninitialized_regs): Likewise.
* ira-lives.c (mark_hard_reg_early_clobbers): Likewise.
(process_bb_node_lives): Likewise.
* ira.c (compute_regs_asm_clobbered, build_insn_chain): Likewise.
(find_moveable_pseudos): Likewise.
* loop-invariant.c (check_dependencies, record_uses): Likewise.
* recog.c (peep2_find_free_register): Likewise.
* ree.c (get_defs): Likewise.
* regstat.c (regstat_bb_compute_ri): Likewise.
(regstat_bb_compute_calls_crossed): Likewise.
* sched-deps.c (find_inc, find_mem): Likewise.
* sel-sched-ir.c (maybe_downgrade_id_to_use): Likewise.
(maybe_downgrade_id_to_use, setup_id_reg_sets): Likewise.
* shrink-wrap.c (requires_stack_frame_p): Likewise.
(prepare_shrink_wrap): Likewise.
* store-motion.c (compute_store_table, build_store_vectors): Likewise.
* web.c (union_defs, pass_web::execute): Likewise.
* config/i386/i386.c (increase_distance, insn_defines_reg): Likewise.
(insn_uses_reg_mem, ix86_ok_to_clobber_flags): Likewise.
From-SVN: r211678
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 39 |
1 files changed, 16 insertions, 23 deletions
@@ -2251,12 +2251,11 @@ compute_regs_asm_clobbered (void) rtx insn; FOR_BB_INSNS_REVERSE (bb, insn) { - df_ref *def_rec; + df_ref def; if (insn_contains_asm (insn)) - for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++) + FOR_EACH_INSN_DEF (def, insn) { - df_ref def = *def_rec; unsigned int dregno = DF_REF_REGNO (def); if (HARD_REGISTER_NUM_P (dregno)) add_to_hard_reg_set (&crtl->asm_clobbers, @@ -4041,9 +4040,8 @@ build_insn_chain (void) { if (!NOTE_P (insn) && !BARRIER_P (insn)) { - unsigned int uid = INSN_UID (insn); - df_ref *def_rec; - df_ref *use_rec; + struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn); + df_ref def, use; c = new_insn_chain (); c->next = next; @@ -4055,9 +4053,8 @@ build_insn_chain (void) c->block = bb->index; if (NONDEBUG_INSN_P (insn)) - for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++) + FOR_EACH_INSN_INFO_DEF (def, insn_info) { - df_ref def = *def_rec; unsigned int regno = DF_REF_REGNO (def); /* Ignore may clobbers because these are generated @@ -4146,9 +4143,8 @@ build_insn_chain (void) bitmap_copy (&c->live_throughout, live_relevant_regs); if (NONDEBUG_INSN_P (insn)) - for (use_rec = DF_INSN_UID_USES (uid); *use_rec; use_rec++) + FOR_EACH_INSN_INFO_USE (use, insn_info) { - df_ref use = *use_rec; unsigned int regno = DF_REF_REGNO (use); rtx reg = DF_REF_REG (use); @@ -4440,12 +4436,14 @@ find_moveable_pseudos (void) FOR_BB_INSNS (bb, insn) if (NONDEBUG_INSN_P (insn)) { + df_insn_info *insn_info = DF_INSN_INFO_GET (insn); df_ref *u_rec, *d_rec; + df_ref def, use; uid_luid[INSN_UID (insn)] = i++; - u_rec = DF_INSN_USES (insn); - d_rec = DF_INSN_DEFS (insn); + u_rec = DF_INSN_INFO_USES (insn_info); + d_rec = DF_INSN_INFO_DEFS (insn_info); if (d_rec[0] != NULL && d_rec[1] == NULL && u_rec[0] != NULL && u_rec[1] == NULL && DF_REF_REGNO (*u_rec) == DF_REF_REGNO (*d_rec) @@ -4459,22 +4457,20 @@ find_moveable_pseudos (void) bitmap_clear_bit (transp, regno); continue; } - while (*u_rec) + FOR_EACH_INSN_INFO_USE (use, insn_info) { - unsigned regno = DF_REF_REGNO (*u_rec); + unsigned regno = DF_REF_REGNO (use); bitmap_set_bit (&used, regno); if (bitmap_clear_bit (moveable, regno)) bitmap_clear_bit (transp, regno); - u_rec++; } - while (*d_rec) + FOR_EACH_INSN_INFO_DEF (def, insn_info) { - unsigned regno = DF_REF_REGNO (*d_rec); + unsigned regno = DF_REF_REGNO (def); bitmap_set_bit (&set, regno); bitmap_clear_bit (transp, regno); bitmap_clear_bit (moveable, regno); - d_rec++; } } } @@ -4612,7 +4608,7 @@ find_moveable_pseudos (void) bitmap def_bb_transp = bb_transp_live + def_block->index; bool local_to_bb_p = bitmap_bit_p (def_bb_local, i); rtx use_insn = closest_uses[i]; - df_ref *def_insn_use_rec = DF_INSN_USES (def_insn); + df_ref use; bool all_ok = true; bool all_transp = true; @@ -4643,9 +4639,8 @@ find_moveable_pseudos (void) if (dump_file) fprintf (dump_file, "Examining insn %d, def for %d\n", INSN_UID (def_insn), i); - while (*def_insn_use_rec != NULL) + FOR_EACH_INSN_USE (use, def_insn) { - df_ref use = *def_insn_use_rec; unsigned regno = DF_REF_REGNO (use); if (bitmap_bit_p (&unusable_as_input, regno)) { @@ -4688,8 +4683,6 @@ find_moveable_pseudos (void) else all_transp = false; } - - def_insn_use_rec++; } if (!all_ok) continue; |