diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-10-27 19:27:41 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-10-27 19:27:41 +0000 |
commit | 848323170b9b9d7ce1a3ab19dcd945700f37b36a (patch) | |
tree | ea2baf03b5fb6cdb1cb4627f42bbf6bd5341560e /gcc/cse.c | |
parent | 6ead9ba5a235459ceb3e3d4f6e963d38efd6c6a8 (diff) | |
download | gcc-848323170b9b9d7ce1a3ab19dcd945700f37b36a.zip gcc-848323170b9b9d7ce1a3ab19dcd945700f37b36a.tar.gz gcc-848323170b9b9d7ce1a3ab19dcd945700f37b36a.tar.bz2 |
rtl.h (note_stores): Add additional paramter.
* rtl.h (note_stores): Add additional paramter.
* rtlanal.c (reg_set_p_1): Take additional paramter.
(reg_set_last_1): Likewise.
(reg_set_p): Adjust call to note_stores.
(reg_set_last): Likewise.
(note_stores): Pass data parameter to worker function.
* alias.c (record_set): Take additional parameter.
(init_alias_analysis): Pass it.
* caller-save.c (mark_set_regs): Take additional parameter.
(save_call_clobbered_regs): Pass NULL to note_stores.
* combine.c (set_nonzero_bits_and_sign_copies): Take additional
parameter.
(record_dead_and_set_regs_1): Likewise.
(reg_dead_at_p_1): Likewise.
(combine_instructions): Adjust calls to note_stores.
(try_combine): Likewise.
(record_dead_insn): Remove.
(record_dead_and_set_regs): Adjust calls to note_stores.
(reg_dead_at_p): Likewise.
* cse.c (invalidate_skipped_set): Take additional parameter.
(cse_check_loop_start): Likewise.
(cse_check_loop_start_value): Remove.
(cse_set_around_loop): Adjust calls to note_stores.
* flow.c (notice_stack_pointer_modification): Take additional
parameter. Remove duplicate declaration.
(record_volatile_insns): Adjust calls to note_stores.
* gcse.c (record_set_info): Take additional parameter.
(record_last_set_info): Likewise.
(invalidate_nonnull_info): Likewise.
(record_set_insn): Remove.
(compute_sets): Adjust calls to note_stores.
(last_set_insn): Remove.
(compute_hash_table): Adjust calls to note_stores.
(insert_insn_end_bb): Likewise.
(delete_null_pointer_checks): Likewise.
* global.c (mark_reg_store): Take additional parameter.
(mark_reg_clobber): Likewise.
(reg_becomes_live): Likewise.
(global_conflicts): Adjust calls to note_stores.
(build_insn_chain): Likewise.
* integrate.c (note_modified_parmregs): Take additional parameter.
(mark_stores): Likewise. Make it static.
(save_for_inline_nocopy): Adjust calls to note_stores.
(try_constants): Likewise.
* integrate.h (mark_stores): Remove declaration.
* jump.c (mark_modified_reg): Take additional parameter.
(thread_jumps): Adjust calls to note_stores.
* local-alloc.c (validate_equiv_mem_from_store): Take additional
parameter.
(no_equiv): Likewise.
(reg_is_set): Likewise.
(validate_equiv_mem): Adjust calls to note_stores.
(update_equiv_regs): Likewise.
(block_alloc): Likewise.
* loop.c (note_set_pseudo_multiple_uses_retval): Remove.
(note_addr_stored): Take additional parameter.
(note_set_pseudo_multiple_uses): Likewise.
(record_initial): Likewise.
(prescan_loop): Adjust calls to note_stores.
(strength_reduce): Likewise.
(check_dbra_loop): Likewise.
* regmove.c (flags_set_1): Take additional paramter.
(mark_flags_life_zones): Adjust calls to note_stores.
* reload1.c (mark_not_eliminable): Take additional parameter.
(forget_old_reloads_1): Likewise.
(reload_cse_invalidate_rtx): Likewise.
(reload_cse_check_clobber): Likewise.
(reload_combine_note_store): Likewise.
(move2add_note_store): Likewise.
(reload): Adjust calls to note_stores.
(reload_as_needed): Likewise.
(emit_reload_insns): Likewise.
(reload_cse_regs_1): Likewise.
(reload_cse_record_set): Adjust calls to reload_cse_invalidate_rtx.
(reload_combine): Adjust calls to note_stores.
* resource.c (update_live_status): Take additional paramter.
(mark_target_live_regs): Adjust calls to note_stores.
* stupid.c (find_clobbered_regs): Take additional parameter.
(stupid_life_analysis): Adjust calls to note_stores.
From-SVN: r30221
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 39 |
1 files changed, 20 insertions, 19 deletions
@@ -693,9 +693,9 @@ static int note_mem_written PROTO((rtx)); static void invalidate_from_clobbers PROTO((rtx)); static rtx cse_process_notes PROTO((rtx, rtx)); static void cse_around_loop PROTO((rtx)); -static void invalidate_skipped_set PROTO((rtx, rtx)); +static void invalidate_skipped_set PROTO((rtx, rtx, void *)); static void invalidate_skipped_block PROTO((rtx)); -static void cse_check_loop_start PROTO((rtx, rtx)); +static void cse_check_loop_start PROTO((rtx, rtx, void *)); static void cse_set_around_loop PROTO((rtx, rtx, rtx)); static rtx cse_basic_block PROTO((rtx, rtx, struct branch_path *, int)); static void count_reg_usage PROTO((rtx, int *, rtx, int)); @@ -8205,9 +8205,10 @@ cse_around_loop (loop_start) since they are done elsewhere. This function is called via note_stores. */ static void -invalidate_skipped_set (dest, set) +invalidate_skipped_set (dest, set, data) rtx set; rtx dest; + void *data ATTRIBUTE_UNUSED; { enum rtx_code code = GET_CODE (dest); @@ -8262,30 +8263,29 @@ invalidate_skipped_block (start) } invalidate_from_clobbers (PATTERN (insn)); - note_stores (PATTERN (insn), invalidate_skipped_set); + note_stores (PATTERN (insn), invalidate_skipped_set, NULL); } } -/* Used for communication between the following two routines; contains a - value to be checked for modification. */ - -static rtx cse_check_loop_start_value; - -/* If modifying X will modify the value in CSE_CHECK_LOOP_START_VALUE, - indicate that fact by setting CSE_CHECK_LOOP_START_VALUE to 0. */ +/* If modifying X will modify the value in *DATA (which is really an + `rtx *'), indicate that fact by setting the pointed to value to + NULL_RTX. */ static void -cse_check_loop_start (x, set) +cse_check_loop_start (x, set, data) rtx x; rtx set ATTRIBUTE_UNUSED; + void *data; { - if (cse_check_loop_start_value == 0 + rtx *cse_check_loop_start_value = (rtx *) data; + + if (*cse_check_loop_start_value == NULL_RTX || GET_CODE (x) == CC0 || GET_CODE (x) == PC) return; - if ((GET_CODE (x) == MEM && GET_CODE (cse_check_loop_start_value) == MEM) - || reg_overlap_mentioned_p (x, cse_check_loop_start_value)) - cse_check_loop_start_value = 0; + if ((GET_CODE (x) == MEM && GET_CODE (*cse_check_loop_start_value) == MEM) + || reg_overlap_mentioned_p (x, *cse_check_loop_start_value)) + *cse_check_loop_start_value = NULL_RTX; } /* X is a SET or CLOBBER contained in INSN that was found near the start of @@ -8350,11 +8350,12 @@ cse_set_around_loop (x, insn, loop_start) can modify it, or we would have invalidated it in the hash table. */ rtx q; - - cse_check_loop_start_value = SET_SRC (x); + rtx cse_check_loop_start_value = SET_SRC (x); for (q = p; q != loop_start; q = NEXT_INSN (q)) if (GET_RTX_CLASS (GET_CODE (q)) == 'i') - note_stores (PATTERN (q), cse_check_loop_start); + note_stores (PATTERN (q), + cse_check_loop_start, + &cse_check_loop_start_value); /* If nothing was changed and we can replace our SET_SRC, add an insn after P to copy its destination |