diff options
author | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-26 12:28:53 +0000 |
---|---|---|
committer | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-26 12:28:53 +0000 |
commit | 2e81afe57232d323f4fb4c44c4b81863fbc77f19 (patch) | |
tree | ba68c087a6658019b7bd358d32f6fa131ac208c8 /gcc/df-scan.c | |
parent | 5c758b8341b16fd0a1473be817e40c29f8906840 (diff) | |
download | gcc-2e81afe57232d323f4fb4c44c4b81863fbc77f19.tar.gz |
* df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
not new but only being rescanned.
* gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
alloc_reg_set_mem, free_reg_set_mem, record_one_set,
record_set_info, compute_set, grealloc): Remove.
(recompute_all_luids): New function.
(gcse_main): Don't compute sets, and don't do related memory
allocations/free-ing. If something changed before the end of the
pass, update LUIDs using recompute_all_luids.
(alloc_gcse_mem): Don't compute LUIDs. Don't allocate reg_set memory.
(free_gcse_mem): Don't free it either.
(oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
Use the df insn LUIDs.
(load_killed_in_block): Likewise.
(compute_hash_table_work): Don't compute reg_set_in_block.
(compute_transp): Use DF_REG_DEF_CHAINs.
(local_cprop_pass): Don't use compute_sets and related functions.
(one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
Use get_max_uid() instead of max_cuid.
(insert_insn_end_basic_block, pre_insert_copy_insn,
update_ld_motion_stores): Don't try to
keep reg_set tables up to date.
(pre_insert_copies): Use df insn LUIDs.
(sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
(reg_set_info): Don't use extra bitmap argument.
(compute_store_table): Don't compute reg_set_in_block. Use DF scan
information to compute regs_set_in_block.
(free_store_memory, store_motion): Don't nullify reg_set_in_block.
(bypass_jumps): Don't use compute_sets and friends.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146799 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/df-scan.c')
-rw-r--r-- | gcc/df-scan.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/df-scan.c b/gcc/df-scan.c index 181994d6465..7ffaa668c51 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -1258,6 +1258,7 @@ df_insn_rescan (rtx insn) bitmap_clear_bit (df->insns_to_notes_rescan, uid); if (insn_info) { + int luid; bool the_same = df_insn_refs_verify (&collection_rec, bb, insn, false); /* If there's no change, return false. */ if (the_same) @@ -1270,9 +1271,12 @@ df_insn_rescan (rtx insn) if (dump_file) fprintf (dump_file, "rescanning insn with uid = %d.\n", uid); - /* There's change - we need to delete the existing info. */ + /* There's change - we need to delete the existing info. + Since the insn isn't moved, we can salvage its LUID. */ + luid = DF_INSN_LUID (insn); df_insn_delete (NULL, uid); df_insn_create_insn_record (insn); + DF_INSN_LUID (insn) = luid; } else { |