summaryrefslogtreecommitdiff
path: root/gcc/local-alloc.c
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-10-27 19:27:41 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-10-27 19:27:41 +0000
commitec8895d7f89aeca28ca1ea1ea2145cfc085158eb (patch)
treeea2baf03b5fb6cdb1cb4627f42bbf6bd5341560e /gcc/local-alloc.c
parentbf307050129bbf6822c587772b7babc5c0d4ed0b (diff)
downloadgcc-ec8895d7f89aeca28ca1ea1ea2145cfc085158eb.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30221 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r--gcc/local-alloc.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index bcc8cbbff0e..6b0732695d7 100644
--- a/gcc/local-alloc.c
+++ b/gcc/local-alloc.c
@@ -243,13 +243,13 @@ static rtx *reg_equiv_init_insns;
static int recorded_label_ref;
static void alloc_qty PROTO((int, enum machine_mode, int, int));
-static void validate_equiv_mem_from_store PROTO((rtx, rtx));
+static void validate_equiv_mem_from_store PROTO((rtx, rtx, void *));
static int validate_equiv_mem PROTO((rtx, rtx, rtx));
static int contains_replace_regs PROTO((rtx, char *));
static int memref_referenced_p PROTO((rtx, rtx));
static int memref_used_between_p PROTO((rtx, rtx, rtx));
static void update_equiv_regs PROTO((void));
-static void no_equiv PROTO((rtx, rtx));
+static void no_equiv PROTO((rtx, rtx, void *));
static void block_alloc PROTO((int));
static int qty_sugg_compare PROTO((int, int));
static int qty_sugg_compare_1 PROTO((const PTR, const PTR));
@@ -258,7 +258,7 @@ static int qty_compare_1 PROTO((const PTR, const PTR));
static int combine_regs PROTO((rtx, rtx, int, int, rtx, int));
static int reg_meets_class_p PROTO((int, enum reg_class));
static void update_qty_class PROTO((int, int));
-static void reg_is_set PROTO((rtx, rtx));
+static void reg_is_set PROTO((rtx, rtx, void *));
static void reg_is_born PROTO((rtx, int));
static void wipe_dead_reg PROTO((rtx, int));
static int find_free_reg PROTO((enum reg_class, enum machine_mode,
@@ -436,9 +436,10 @@ static int equiv_mem_modified;
Called via note_stores. */
static void
-validate_equiv_mem_from_store (dest, set)
+validate_equiv_mem_from_store (dest, set, data)
rtx dest;
rtx set ATTRIBUTE_UNUSED;
+ void *data ATTRIBUTE_UNUSED;
{
if ((GET_CODE (dest) == REG
&& reg_overlap_mentioned_p (dest, equiv_mem))
@@ -483,7 +484,7 @@ validate_equiv_mem (start, reg, memref)
&& ! CONST_CALL_P (insn))
return 0;
- note_stores (PATTERN (insn), validate_equiv_mem_from_store);
+ note_stores (PATTERN (insn), validate_equiv_mem_from_store, NULL);
/* If a register mentioned in MEMREF is modified via an
auto-increment, we lose the equivalence. Do the same if one
@@ -708,7 +709,7 @@ update_equiv_regs ()
for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
if (REG_NOTE_KIND (note) == REG_INC)
- no_equiv (XEXP (note, 0), note);
+ no_equiv (XEXP (note, 0), note, NULL);
set = single_set (insn);
@@ -716,7 +717,7 @@ update_equiv_regs ()
only mark all destinations as having no known equivalence. */
if (set == 0)
{
- note_stores (PATTERN (insn), no_equiv);
+ note_stores (PATTERN (insn), no_equiv, NULL);
continue;
}
else if (GET_CODE (PATTERN (insn)) == PARALLEL)
@@ -727,7 +728,7 @@ update_equiv_regs ()
{
rtx part = XVECEXP (PATTERN (insn), 0, i);
if (part != set)
- note_stores (part, no_equiv);
+ note_stores (part, no_equiv, NULL);
}
}
@@ -792,7 +793,7 @@ update_equiv_regs ()
{
/* This might be seting a SUBREG of a pseudo, a pseudo that is
also set somewhere else to a constant. */
- note_stores (set, no_equiv);
+ note_stores (set, no_equiv, NULL);
continue;
}
/* Don't handle the equivalence if the source is in a register
@@ -801,7 +802,7 @@ update_equiv_regs ()
&& REGNO (src) >= FIRST_PSEUDO_REGISTER
&& CLASS_LIKELY_SPILLED_P (reg_preferred_class (REGNO (src))))
{
- no_equiv (dest, set);
+ no_equiv (dest, set, NULL);
continue;
}
@@ -814,7 +815,7 @@ update_equiv_regs ()
&& ! rtx_equal_p (XEXP (note, 0),
reg_equiv_replacement[regno]))))
{
- no_equiv (dest, set);
+ no_equiv (dest, set, NULL);
continue;
}
/* Record this insn as initializing this register. */
@@ -1009,8 +1010,9 @@ update_equiv_regs ()
assignment - a SET, CLOBBER or REG_INC note. It is currently not used,
but needs to be there because this function is called from note_stores. */
static void
-no_equiv (reg, store)
+no_equiv (reg, store, data)
rtx reg, store ATTRIBUTE_UNUSED;
+ void *data ATTRIBUTE_UNUSED;
{
int regno;
rtx list;
@@ -1259,7 +1261,7 @@ block_alloc (b)
that are born (set) in this instruction.
A pseudo that already has a qty is not changed. */
- note_stores (PATTERN (insn), reg_is_set);
+ note_stores (PATTERN (insn), reg_is_set, NULL);
/* If anything is set in this insn and then unused, mark it as dying
after this insn, so it will conflict with our outputs. This
@@ -1802,9 +1804,10 @@ update_qty_class (qty, reg)
carry info from `block_alloc'. */
static void
-reg_is_set (reg, setter)
+reg_is_set (reg, setter, data)
rtx reg;
rtx setter;
+ void *data ATTRIBUTE_UNUSED;
{
/* Note that note_stores will only pass us a SUBREG if it is a SUBREG of
a hard register. These may actually not exist any more. */