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/combine.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/combine.c')
-rw-r--r-- | gcc/combine.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 9f30666..f3dcc96 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -354,7 +354,7 @@ static void do_SUBST PROTO((rtx *, rtx)); static void do_SUBST_INT PROTO((int *, int)); static void init_reg_last_arrays PROTO((void)); static void setup_incoming_promotions PROTO((void)); -static void set_nonzero_bits_and_sign_copies PROTO((rtx, rtx)); +static void set_nonzero_bits_and_sign_copies PROTO((rtx, rtx, void *)); static int can_combine_p PROTO((rtx, rtx, rtx, rtx, rtx *, rtx *)); static int sets_function_arg_p PROTO((rtx)); static int combinable_i3pat PROTO((rtx, rtx *, rtx, rtx, int, rtx *)); @@ -401,12 +401,12 @@ static enum rtx_code simplify_comparison PROTO((enum rtx_code, rtx *, rtx *)); static int reversible_comparison_p PROTO((rtx)); static void update_table_tick PROTO((rtx)); static void record_value_for_reg PROTO((rtx, rtx, rtx)); -static void record_dead_and_set_regs_1 PROTO((rtx, rtx)); +static void record_dead_and_set_regs_1 PROTO((rtx, rtx, void *)); static void record_dead_and_set_regs PROTO((rtx)); static int get_last_value_validate PROTO((rtx *, rtx, int, int)); static rtx get_last_value PROTO((rtx)); static int use_crosses_set_p PROTO((rtx, int)); -static void reg_dead_at_p_1 PROTO((rtx, rtx)); +static void reg_dead_at_p_1 PROTO((rtx, rtx, void *)); static int reg_dead_at_p PROTO((rtx, rtx)); static void move_deaths PROTO((rtx, rtx, int, rtx, rtx *)); static int reg_bitfield_target_p PROTO((rtx, rtx)); @@ -569,13 +569,15 @@ combine_instructions (f, nregs) if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') { - note_stores (PATTERN (insn), set_nonzero_bits_and_sign_copies); + note_stores (PATTERN (insn), set_nonzero_bits_and_sign_copies, + NULL); record_dead_and_set_regs (insn); #ifdef AUTO_INC_DEC for (links = REG_NOTES (insn); links; links = XEXP (links, 1)) if (REG_NOTE_KIND (links) == REG_INC) - set_nonzero_bits_and_sign_copies (XEXP (links, 0), NULL_RTX); + set_nonzero_bits_and_sign_copies (XEXP (links, 0), NULL_RTX, + NULL); #endif } @@ -769,9 +771,10 @@ setup_incoming_promotions () by any set of X. */ static void -set_nonzero_bits_and_sign_copies (x, set) +set_nonzero_bits_and_sign_copies (x, set, data) rtx x; rtx set; + void *data ATTRIBUTE_UNUSED; { int num; @@ -2557,9 +2560,9 @@ try_combine (i3, i2, i1) /* Update reg_nonzero_bits et al for any changes that may have been made to this insn. */ - note_stores (newpat, set_nonzero_bits_and_sign_copies); + note_stores (newpat, set_nonzero_bits_and_sign_copies, NULL); if (newi2pat) - note_stores (newi2pat, set_nonzero_bits_and_sign_copies); + note_stores (newi2pat, set_nonzero_bits_and_sign_copies, NULL); /* If I3 is now an unconditional jump, ensure that it has a BARRIER following it since it may have initially been a @@ -10753,16 +10756,17 @@ record_value_for_reg (reg, insn, value) } } -/* Used for communication between the following two routines. */ -static rtx record_dead_insn; - /* Called via note_stores from record_dead_and_set_regs to handle one - SET or CLOBBER in an insn. */ + SET or CLOBBER in an insn. DATA is the instruction in which the + set is occurring. */ static void -record_dead_and_set_regs_1 (dest, setter) +record_dead_and_set_regs_1 (dest, setter, data) rtx dest, setter; + void *data; { + rtx record_dead_insn = (rtx) data; + if (GET_CODE (dest) == SUBREG) dest = SUBREG_REG (dest); @@ -10840,8 +10844,7 @@ record_dead_and_set_regs (insn) last_call_cuid = mem_last_set = INSN_CUID (insn); } - record_dead_insn = insn; - note_stores (PATTERN (insn), record_dead_and_set_regs_1); + note_stores (PATTERN (insn), record_dead_and_set_regs_1, insn); } /* Utility routine for the following function. Verify that all the registers @@ -11040,9 +11043,10 @@ static int reg_dead_flag; reg_dead_flag to 1 if X is a CLOBBER and to -1 it is a SET. */ static void -reg_dead_at_p_1 (dest, x) +reg_dead_at_p_1 (dest, x, data) rtx dest; rtx x; + void *data ATTRIBUTE_UNUSED; { int regno, endregno; @@ -11094,7 +11098,7 @@ reg_dead_at_p (reg, insn) for (; insn && GET_CODE (insn) != CODE_LABEL && GET_CODE (insn) != BARRIER; insn = prev_nonnote_insn (insn)) { - note_stores (PATTERN (insn), reg_dead_at_p_1); + note_stores (PATTERN (insn), reg_dead_at_p_1, NULL); if (reg_dead_flag) return reg_dead_flag == 1 ? 1 : 0; |