From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20413 invoked by alias); 30 Jul 2007 16:35:12 -0000 Received: (qmail 20355 invoked by uid 22791); 30 Jul 2007 16:35:08 -0000 X-Spam-Check-By: sourceware.org Received: from caip.rutgers.edu (HELO caip.rutgers.edu) (128.6.236.16) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 30 Jul 2007 16:34:56 +0000 Received: from caipclassic.rutgers.edu (caipclassic.rutgers.edu [128.6.237.54]) by caip.rutgers.edu (8.13.8/8.13.5) with ESMTP id l6UGYnNh029820 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 30 Jul 2007 12:34:49 -0400 Date: Mon, 30 Jul 2007 17:08:00 -0000 From: "Kaveh R. GHAZI" To: gcc-patches@gcc.gnu.org Subject: [PATCH INSTALLED]: const typedefs part 12/N Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2007-07/txt/msg02118.txt.bz2 The purpose of this patch is to constify note_stores(). However in constifying its first rtx parameter, I also had to constify one of the other parameters note_stores has, because it's a function pointer that note_stores eventually passes that constified parameter to. I.e. the note_stores prototype changed from: void (*)(rtx,void (*)(rtx,rtx,void*),void*) to: void (*)(const_rtx, void (*)(rtx,const_rtx,void*), void*). It passes this^^^ over to this one ^^^. Anyway, there were many callers and custom functions passed into the function pointer parameter so it required touching more places than the true_dependence patch. Tested on sparc-sun-solaris2.10, no regressions. To test for typos in the various config/ directory changes, I also built cc1 for cross-compilers targetted to several platforms: frv-unknown-linux-gnu, mips-sgi-irix6.5, mt-unknown-elf, s390-unknown-linux-gnu, sh-unknown-linux-gnu. I tried to grep for all the places where note_stores was called and make sure that any function pointer passed in had its prototype updated. Apologies in advance if I missed something on your favorite triplet. Installed. --Kaveh 2007-07-29 Kaveh R. Ghazi * alias.c (record_set, memory_modified_1): Constify. * bt-load.c (note_btr_set): Likewise. * caller-save.c (mark_set_regs, add_stored_regs): Likewise. * combine.c (set_nonzero_bits_and_sign_copies, expand_field_assignment, record_dead_and_set_regs_1, use_crosses_set_p, reg_dead_at_p_1, can_combine_p, likely_spilled_retval_1): Likewise. * config/frv/frv.c (frv_registers_update_1, frv_io_check_address, frv_io_handle_set): Likewise. * config/mips/mips.c (mips_sim_record_set, vr4130_true_reg_dependence_p_1): Likewise. * config/mt/mt.c (insn_dependent_p_1): Likewise. * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise. * config/sh/sh.c (flow_dependent_p_1): Likewise. * cselib.c (cselib_invalidate_rtx_note_stores): Likewise. * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise. * ddg.c (mark_mem_store): Likewise. * df-problems.c (df_urec_mark_reg_change): Likewise. * function.c (update_epilogue_consts): Likewise. * gcse.c (record_set_info, record_last_set_info, mems_conflict_for_gcse_p, canon_list_insert, reg_set_info, reg_clear_last_set): Likewise. * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live): Likewise. * jump.c (reversed_comparison_code_parts): Likewise. * local-alloc.c (validate_equiv_mem_from_store, no_equiv, reg_is_set): Likewise. * loop-iv.c (mark_altered): Likewise. * mode-switching.c (reg_becomes_live): Likewise. * optabs.c (no_conflict_move_test): Likewise. * postreload-gcse.c (record_last_set_info, find_mem_conflicts): Likewise. * postreload.c (reload_combine_note_store, move2add_note_store): Likewise. * regmove.c (flags_set_1): Likewise. * regrename.c (note_sets, kill_clobbered_value, kill_set_value): Likewise. * reload1.c (mark_not_eliminable, forget_old_reloads_1): Likewise. * resource.c (update_live_status): Likewise. * rtl.h (set_of, note_stores): Likewise. * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of, note_stores, parms_set): Likewise. * sched-rgn.c (sets_likely_spilled_1): Likewise. * stack-ptr-mod.c (notice_stack_pointer_modification_1): Likewise. * var-tracking.c (count_stores, add_stores): Likewise. diff -rup orig/egcc-SVN20070729/gcc/alias.c egcc-SVN20070729/gcc/alias.c --- orig/egcc-SVN20070729/gcc/alias.c 2007-07-29 17:25:39.667531813 -0400 +++ egcc-SVN20070729/gcc/alias.c 2007-07-29 19:34:39.882716705 -0400 @@ -150,7 +150,7 @@ typedef struct alias_set_entry *alias_se static int rtx_equal_for_memref_p (rtx, rtx); static int memrefs_conflict_p (int, rtx, int, rtx, HOST_WIDE_INT); -static void record_set (rtx, rtx, void *); +static void record_set (rtx, const_rtx, void *); static int base_alias_check (rtx, rtx, enum machine_mode, enum machine_mode); static rtx find_base_value (rtx); @@ -167,7 +167,7 @@ static rtx adjust_offset_for_component_r static int nonoverlapping_memrefs_p (const_rtx, const_rtx); static int write_dependence_p (const_rtx, const_rtx, int); -static void memory_modified_1 (rtx, rtx, void *); +static void memory_modified_1 (rtx, const_rtx, void *); static void record_alias_subset (HOST_WIDE_INT, HOST_WIDE_INT); /* Set up all info needed to perform alias analysis on memory references. */ @@ -978,7 +978,7 @@ static char *reg_seen; static int unique_id; static void -record_set (rtx dest, rtx set, void *data ATTRIBUTE_UNUSED) +record_set (rtx dest, const_rtx set, void *data ATTRIBUTE_UNUSED) { unsigned regno; rtx src; @@ -2353,7 +2353,7 @@ init_alias_once (void) to be memory reference. */ static bool memory_modified; static void -memory_modified_1 (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +memory_modified_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { if (MEM_P (x)) { diff -rup orig/egcc-SVN20070729/gcc/bt-load.c egcc-SVN20070729/gcc/bt-load.c --- orig/egcc-SVN20070729/gcc/bt-load.c 2007-07-26 23:03:58.000000000 -0400 +++ egcc-SVN20070729/gcc/bt-load.c 2007-07-29 19:26:02.623233709 -0400 @@ -141,7 +141,7 @@ static void move_btr_def (basic_block, i static int migrate_btr_def (btr_def, int); static void migrate_btr_defs (enum reg_class, int); static int can_move_up (basic_block, rtx, int); -static void note_btr_set (rtx, rtx, void *); +static void note_btr_set (rtx, const_rtx, void *); /* The following code performs code motion of target load instructions (instructions that set branch target registers), to move them @@ -423,7 +423,7 @@ typedef struct { straightforward definitions. DATA points to information about the current basic block that needs updating. */ static void -note_btr_set (rtx dest, rtx set ATTRIBUTE_UNUSED, void *data) +note_btr_set (rtx dest, const_rtx set ATTRIBUTE_UNUSED, void *data) { defs_uses_info *info = data; int regno, end_regno; diff -rup orig/egcc-SVN20070729/gcc/caller-save.c egcc-SVN20070729/gcc/caller-save.c --- orig/egcc-SVN20070729/gcc/caller-save.c 2007-07-26 23:03:45.000000000 -0400 +++ egcc-SVN20070729/gcc/caller-save.c 2007-07-29 19:25:17.763558201 -0400 @@ -86,7 +86,7 @@ static int n_regs_saved; static HARD_REG_SET referenced_regs; -static void mark_set_regs (rtx, rtx, void *); +static void mark_set_regs (rtx, const_rtx, void *); static void mark_referenced_regs (rtx); static int insert_save (struct insn_chain *, int, int, HARD_REG_SET *, enum machine_mode *); @@ -94,7 +94,7 @@ static int insert_restore (struct insn_c enum machine_mode *); static struct insn_chain *insert_one_insn (struct insn_chain *, int, int, rtx); -static void add_stored_regs (rtx, rtx, void *); +static void add_stored_regs (rtx, const_rtx, void *); static GTY(()) rtx savepat; static GTY(()) rtx restpat; @@ -511,7 +511,7 @@ save_call_clobbered_regs (void) been assigned hard regs have had their register number changed already, so we can ignore pseudos. */ static void -mark_set_regs (rtx reg, rtx setter ATTRIBUTE_UNUSED, void *data) +mark_set_regs (rtx reg, const_rtx setter ATTRIBUTE_UNUSED, void *data) { int regno, endregno, i; HARD_REG_SET *this_insn_sets = data; @@ -542,7 +542,7 @@ mark_set_regs (rtx reg, rtx setter ATTRI been assigned hard regs have had their register number changed already, so we can ignore pseudos. */ static void -add_stored_regs (rtx reg, rtx setter, void *data) +add_stored_regs (rtx reg, const_rtx setter, void *data) { int regno, endregno, i; enum machine_mode mode = GET_MODE (reg); diff -rup orig/egcc-SVN20070729/gcc/combine.c egcc-SVN20070729/gcc/combine.c --- orig/egcc-SVN20070729/gcc/combine.c 2007-07-29 17:25:39.685651482 -0400 +++ egcc-SVN20070729/gcc/combine.c 2007-07-29 19:33:36.122298020 -0400 @@ -379,7 +379,7 @@ static void do_SUBST (rtx *, rtx); static void do_SUBST_INT (int *, int); static void init_reg_last (void); static void setup_incoming_promotions (rtx); -static void set_nonzero_bits_and_sign_copies (rtx, rtx, void *); +static void set_nonzero_bits_and_sign_copies (rtx, const_rtx, void *); static int cant_combine_insn_p (rtx); static int can_combine_p (rtx, rtx, rtx, rtx, rtx *, rtx *); static int combinable_i3pat (rtx, rtx *, rtx, rtx, int, rtx *); @@ -394,7 +394,7 @@ static rtx simplify_if_then_else (rtx); static rtx simplify_set (rtx); static rtx simplify_logical (rtx); static rtx expand_compound_operation (rtx); -static rtx expand_field_assignment (rtx); +static const_rtx expand_field_assignment (const_rtx); static rtx make_extraction (enum machine_mode, rtx, HOST_WIDE_INT, rtx, unsigned HOST_WIDE_INT, int, int, int); static rtx extract_left_shift (rtx, int); @@ -425,12 +425,12 @@ static enum rtx_code simplify_comparison static void update_table_tick (rtx); static void record_value_for_reg (rtx, rtx, rtx); static void check_conversions (rtx, rtx); -static void record_dead_and_set_regs_1 (rtx, rtx, void *); +static void record_dead_and_set_regs_1 (rtx, const_rtx, void *); static void record_dead_and_set_regs (rtx); static int get_last_value_validate (rtx *, rtx, int, int); static rtx get_last_value (const_rtx); -static int use_crosses_set_p (rtx, int); -static void reg_dead_at_p_1 (rtx, rtx, void *); +static int use_crosses_set_p (const_rtx, int); +static void reg_dead_at_p_1 (rtx, const_rtx, void *); static int reg_dead_at_p (rtx, rtx); static void move_deaths (rtx, rtx, int, rtx, rtx *); static int reg_bitfield_target_p (rtx, rtx); @@ -1361,7 +1361,7 @@ setup_incoming_promotions (rtx first) by any set of X. */ static void -set_nonzero_bits_and_sign_copies (rtx x, rtx set, void *data) +set_nonzero_bits_and_sign_copies (rtx x, const_rtx set, void *data) { rtx insn = (rtx) data; unsigned int num; @@ -1483,7 +1483,8 @@ can_combine_p (rtx insn, rtx i3, rtx pre rtx *pdest, rtx *psrc) { int i; - rtx set = 0, src, dest; + const_rtx set = 0; + rtx src, dest; rtx p; #ifdef AUTO_INC_DEC rtx link; @@ -1992,7 +1993,7 @@ struct likely_spilled_retval_info /* Called via note_stores by likely_spilled_retval_p. Remove from info->mask hard registers that are known to be written to / clobbered in full. */ static void -likely_spilled_retval_1 (rtx x, rtx set, void *data) +likely_spilled_retval_1 (rtx x, const_rtx set, void *data) { struct likely_spilled_retval_info *info = data; unsigned regno, nregs; @@ -6169,8 +6170,8 @@ expand_compound_operation (rtx x) We half-heartedly support variable positions, but do not at all support variable lengths. */ -static rtx -expand_field_assignment (rtx x) +static const_rtx +expand_field_assignment (const_rtx x) { rtx inner; rtx pos; /* Always counts from low bit. */ @@ -11357,7 +11358,7 @@ record_value_for_reg (rtx reg, rtx insn, set is occurring. */ static void -record_dead_and_set_regs_1 (rtx dest, rtx setter, void *data) +record_dead_and_set_regs_1 (rtx dest, const_rtx setter, void *data) { rtx record_dead_insn = (rtx) data; @@ -11787,7 +11788,7 @@ get_last_value (const_rtx x) that is set in an instruction more recent than FROM_LUID. */ static int -use_crosses_set_p (rtx x, int from_luid) +use_crosses_set_p (const_rtx x, int from_luid) { const char *fmt; int i; @@ -11848,7 +11849,7 @@ 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 (rtx dest, rtx x, void *data ATTRIBUTE_UNUSED) +reg_dead_at_p_1 (rtx dest, const_rtx x, void *data ATTRIBUTE_UNUSED) { unsigned int regno, endregno; diff -rup orig/egcc-SVN20070729/gcc/config/frv/frv.c egcc-SVN20070729/gcc/config/frv/frv.c --- orig/egcc-SVN20070729/gcc/config/frv/frv.c 2007-06-19 23:02:39.000000000 -0400 +++ egcc-SVN20070729/gcc/config/frv/frv.c 2007-07-29 20:11:52.120953832 -0400 @@ -331,7 +331,7 @@ static int frv_cond_flags (rtx); static bool frv_regstate_conflict_p (regstate_t, regstate_t); static int frv_registers_conflict_p_1 (rtx *, void *); static bool frv_registers_conflict_p (rtx); -static void frv_registers_update_1 (rtx, rtx, void *); +static void frv_registers_update_1 (rtx, const_rtx, void *); static void frv_registers_update (rtx); static void frv_start_packet (void); static void frv_start_packet_block (void); @@ -7215,7 +7215,7 @@ frv_registers_conflict_p (rtx x) under which X is modified. Update FRV_PACKET accordingly. */ static void -frv_registers_update_1 (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +frv_registers_update_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { unsigned int regno; @@ -7753,7 +7753,7 @@ frv_extract_membar (struct frv_io *io, r if X is a register and *DATA depends on X. */ static void -frv_io_check_address (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +frv_io_check_address (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { rtx *other = data; @@ -7765,7 +7765,7 @@ frv_io_check_address (rtx x, rtx pat ATT Remove every modified register from the set. */ static void -frv_io_handle_set (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +frv_io_handle_set (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { HARD_REG_SET *set = data; unsigned int regno; diff -rup orig/egcc-SVN20070729/gcc/config/mips/mips.c egcc-SVN20070729/gcc/config/mips/mips.c --- orig/egcc-SVN20070729/gcc/config/mips/mips.c 2007-07-25 15:13:42.000000000 -0400 +++ egcc-SVN20070729/gcc/config/mips/mips.c 2007-07-29 20:12:35.309011569 -0400 @@ -371,7 +371,7 @@ static void mips_sim_wait_regs_1 (rtx *, static void mips_sim_wait_regs (struct mips_sim *, rtx); static void mips_sim_wait_units (struct mips_sim *, rtx); static void mips_sim_wait_insn (struct mips_sim *, rtx); -static void mips_sim_record_set (rtx, rtx, void *); +static void mips_sim_record_set (rtx, const_rtx, void *); static void mips_sim_issue_insn (struct mips_sim *, rtx); static void mips_sim_issue_nop (struct mips_sim *); static void mips_sim_finish_insn (struct mips_sim *, rtx); @@ -388,7 +388,7 @@ static bool mips_return_in_memory (tree, static bool mips_strict_argument_naming (CUMULATIVE_ARGS *); static void mips_macc_chains_record (rtx); static void mips_macc_chains_reorder (rtx *, int); -static void vr4130_true_reg_dependence_p_1 (rtx, rtx, void *); +static void vr4130_true_reg_dependence_p_1 (rtx, const_rtx, void *); static bool vr4130_true_reg_dependence_p (rtx); static bool vr4130_swap_insns_p (rtx, rtx); static void vr4130_reorder (rtx *, int); @@ -9705,7 +9705,7 @@ mips_sim_wait_insn (struct mips_sim *sta in simulation state DATA. */ static void -mips_sim_record_set (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +mips_sim_record_set (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { struct mips_sim *state; unsigned int i; @@ -10772,7 +10772,7 @@ static rtx vr4130_last_insn; if the instruction uses the value of register X. */ static void -vr4130_true_reg_dependence_p_1 (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +vr4130_true_reg_dependence_p_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { rtx *insn_ptr = data; if (REG_P (x) diff -rup orig/egcc-SVN20070729/gcc/config/mt/mt.c egcc-SVN20070729/gcc/config/mt/mt.c --- orig/egcc-SVN20070729/gcc/config/mt/mt.c 2007-06-11 23:03:40.000000000 -0400 +++ egcc-SVN20070729/gcc/config/mt/mt.c 2007-07-29 20:13:51.808501539 -0400 @@ -156,7 +156,7 @@ mt_get_attr_type (rtx complete_insn) /* A helper routine for insn_dependent_p called through note_stores. */ static void -insn_dependent_p_1 (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +insn_dependent_p_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { rtx * pinsn = (rtx *) data; diff -rup orig/egcc-SVN20070729/gcc/config/s390/s390.c egcc-SVN20070729/gcc/config/s390/s390.c --- orig/egcc-SVN20070729/gcc/config/s390/s390.c 2007-07-25 13:11:09.000000000 -0400 +++ egcc-SVN20070729/gcc/config/s390/s390.c 2007-07-29 20:14:13.142212245 -0400 @@ -6348,7 +6348,7 @@ find_unused_clobbered_reg (void) clobbered hard regs in SETREG. */ static void -s390_reg_clobbered_rtx (rtx setreg, rtx set_insn ATTRIBUTE_UNUSED, void *data) +s390_reg_clobbered_rtx (rtx setreg, const_rtx set_insn ATTRIBUTE_UNUSED, void *data) { int *regs_ever_clobbered = (int *)data; unsigned int i, regno; diff -rup orig/egcc-SVN20070729/gcc/config/sh/sh.c egcc-SVN20070729/gcc/config/sh/sh.c --- orig/egcc-SVN20070729/gcc/config/sh/sh.c 2007-07-13 12:23:33.000000000 -0400 +++ egcc-SVN20070729/gcc/config/sh/sh.c 2007-07-29 20:14:35.793590883 -0400 @@ -223,7 +223,7 @@ static rtx sh_expand_builtin (tree, rtx, static void sh_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree); static void sh_file_start (void); static int flow_dependent_p (rtx, rtx); -static void flow_dependent_p_1 (rtx, rtx, void *); +static void flow_dependent_p_1 (rtx, const_rtx, void *); static int shiftcosts (rtx); static int andcosts (rtx); static int addsubcosts (rtx); @@ -8911,7 +8911,7 @@ flow_dependent_p (rtx insn, rtx dep_insn /* A helper function for flow_dependent_p called through note_stores. */ static void -flow_dependent_p_1 (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +flow_dependent_p_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { rtx * pinsn = (rtx *) data; diff -rup orig/egcc-SVN20070729/gcc/cselib.c egcc-SVN20070729/gcc/cselib.c --- orig/egcc-SVN20070729/gcc/cselib.c 2007-07-29 17:25:39.696025457 -0400 +++ egcc-SVN20070729/gcc/cselib.c 2007-07-29 19:27:46.831911708 -0400 @@ -1468,7 +1468,7 @@ cselib_invalidate_rtx (rtx dest) /* A wrapper for cselib_invalidate_rtx to be called via note_stores. */ static void -cselib_invalidate_rtx_note_stores (rtx dest, rtx ignore ATTRIBUTE_UNUSED, +cselib_invalidate_rtx_note_stores (rtx dest, const_rtx ignore ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { cselib_invalidate_rtx (dest); diff -rup orig/egcc-SVN20070729/gcc/dce.c egcc-SVN20070729/gcc/dce.c --- orig/egcc-SVN20070729/gcc/dce.c 2007-07-26 23:04:13.000000000 -0400 +++ egcc-SVN20070729/gcc/dce.c 2007-07-29 19:27:18.115810897 -0400 @@ -168,7 +168,7 @@ mark_insn (rtx insn, bool fast) instruction containing DEST. */ static void -mark_nonreg_stores_1 (rtx dest, rtx pattern, void *data) +mark_nonreg_stores_1 (rtx dest, const_rtx pattern, void *data) { if (GET_CODE (pattern) != CLOBBER && !REG_P (dest)) mark_insn ((rtx) data, true); @@ -179,7 +179,7 @@ mark_nonreg_stores_1 (rtx dest, rtx patt instruction containing DEST. */ static void -mark_nonreg_stores_2 (rtx dest, rtx pattern, void *data) +mark_nonreg_stores_2 (rtx dest, const_rtx pattern, void *data) { if (GET_CODE (pattern) != CLOBBER && !REG_P (dest)) mark_insn ((rtx) data, false); diff -rup orig/egcc-SVN20070729/gcc/ddg.c egcc-SVN20070729/gcc/ddg.c --- orig/egcc-SVN20070729/gcc/ddg.c 2007-07-26 23:03:33.000000000 -0400 +++ egcc-SVN20070729/gcc/ddg.c 2007-07-29 19:35:23.976778919 -0400 @@ -87,7 +87,7 @@ mem_read_insn_p (rtx insn) } static void -mark_mem_store (rtx loc, rtx setter ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) +mark_mem_store (rtx loc, const_rtx setter ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { if (MEM_P (loc)) mem_ref_p = true; diff -rup orig/egcc-SVN20070729/gcc/df-problems.c egcc-SVN20070729/gcc/df-problems.c --- orig/egcc-SVN20070729/gcc/df-problems.c 2007-07-27 13:50:51.000000000 -0400 +++ egcc-SVN20070729/gcc/df-problems.c 2007-07-29 19:35:58.586038782 -0400 @@ -2594,7 +2594,7 @@ df_urec_alloc (bitmap all_blocks) SETTER. DATA is used to pass the current basic block info. */ static void -df_urec_mark_reg_change (rtx reg, rtx setter, void *data) +df_urec_mark_reg_change (rtx reg, const_rtx setter, void *data) { int regno; int endregno; diff -rup orig/egcc-SVN20070729/gcc/function.c egcc-SVN20070729/gcc/function.c --- orig/egcc-SVN20070729/gcc/function.c 2007-07-29 17:25:39.708062133 -0400 +++ egcc-SVN20070729/gcc/function.c 2007-07-29 19:40:07.475391290 -0400 @@ -4700,7 +4700,7 @@ struct epi_info }; static void handle_epilogue_set (rtx, struct epi_info *); -static void update_epilogue_consts (rtx, rtx, void *); +static void update_epilogue_consts (rtx, const_rtx, void *); static void emit_equiv_load (struct epi_info *); /* Modify INSN, a list of one or more insns that is part of the epilogue, to @@ -4976,7 +4976,7 @@ handle_epilogue_set (rtx set, struct epi /* Update the tracking information for registers set to constants. */ static void -update_epilogue_consts (rtx dest, rtx x, void *data) +update_epilogue_consts (rtx dest, const_rtx x, void *data) { struct epi_info *p = (struct epi_info *) data; rtx new; diff -rup orig/egcc-SVN20070729/gcc/gcse.c egcc-SVN20070729/gcc/gcse.c --- orig/egcc-SVN20070729/gcc/gcse.c 2007-07-26 23:03:55.000000000 -0400 +++ egcc-SVN20070729/gcc/gcse.c 2007-07-29 19:39:14.602901895 -0400 @@ -523,7 +523,7 @@ static void free_gcse_mem (void); static void alloc_reg_set_mem (int); static void free_reg_set_mem (void); static void record_one_set (int, rtx); -static void record_set_info (rtx, rtx, void *); +static void record_set_info (rtx, const_rtx, void *); static void compute_sets (void); static void hash_scan_insn (rtx, struct hash_table *, int); static void hash_scan_set (rtx, rtx, struct hash_table *); @@ -543,7 +543,7 @@ static unsigned int hash_set (int, int); static int expr_equiv_p (rtx, rtx); static void record_last_reg_set_info (rtx, int); static void record_last_mem_set_info (rtx); -static void record_last_set_info (rtx, rtx, void *); +static void record_last_set_info (rtx, const_rtx, void *); static void compute_hash_table (struct hash_table *); static void alloc_hash_table (int, struct hash_table *, int); static void free_hash_table (struct hash_table *); @@ -568,9 +568,9 @@ static void find_used_regs (rtx *, void static int try_replace_reg (rtx, rtx, rtx); static struct expr *find_avail_set (int, rtx); static int cprop_jump (basic_block, rtx, rtx, rtx, rtx); -static void mems_conflict_for_gcse_p (rtx, rtx, void *); +static void mems_conflict_for_gcse_p (rtx, const_rtx, void *); static int load_killed_in_block_p (basic_block, int, rtx, int); -static void canon_list_insert (rtx, rtx, void *); +static void canon_list_insert (rtx, const_rtx, void *); static int cprop_insn (rtx, int); static int cprop (int); static void find_implicit_sets (void); @@ -616,8 +616,8 @@ static void invalidate_any_buried_refs ( static void compute_ld_motion_mems (void); static void trim_ld_motion_mems (void); static void update_ld_motion_stores (struct expr *); -static void reg_set_info (rtx, rtx, void *); -static void reg_clear_last_set (rtx, rtx, void *); +static void reg_set_info (rtx, const_rtx, void *); +static void reg_clear_last_set (rtx, const_rtx, void *); static bool store_ops_ok (rtx, int *); static rtx extract_mentioned_regs (rtx); static rtx extract_mentioned_regs_helper (rtx, rtx); @@ -1129,7 +1129,7 @@ record_one_set (int regno, rtx insn) occurring. */ static void -record_set_info (rtx dest, rtx setter ATTRIBUTE_UNUSED, void *data) +record_set_info (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data) { rtx record_set_insn = (rtx) data; @@ -1332,7 +1332,7 @@ static rtx gcse_mem_operand; gcse_mems_conflict_p to a nonzero value. */ static void -mems_conflict_for_gcse_p (rtx dest, rtx setter ATTRIBUTE_UNUSED, +mems_conflict_for_gcse_p (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { while (GET_CODE (dest) == SUBREG @@ -1940,7 +1940,7 @@ record_last_reg_set_info (rtx insn, int taken off pairwise. */ static void -canon_list_insert (rtx dest ATTRIBUTE_UNUSED, rtx unused1 ATTRIBUTE_UNUSED, +canon_list_insert (rtx dest ATTRIBUTE_UNUSED, const_rtx unused1 ATTRIBUTE_UNUSED, void * v_insn) { rtx dest_addr, insn; @@ -2001,7 +2001,7 @@ record_last_mem_set_info (rtx insn) the SET is taking place. */ static void -record_last_set_info (rtx dest, rtx setter ATTRIBUTE_UNUSED, void *data) +record_last_set_info (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data) { rtx last_set_insn = (rtx) data; @@ -5471,7 +5471,7 @@ static int num_stores; note_stores. */ static void -reg_set_info (rtx dest, rtx setter ATTRIBUTE_UNUSED, +reg_set_info (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data) { sbitmap bb_reg = data; @@ -5491,7 +5491,7 @@ reg_set_info (rtx dest, rtx setter ATTRI note_stores. */ static void -reg_clear_last_set (rtx dest, rtx setter ATTRIBUTE_UNUSED, +reg_clear_last_set (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data) { int *dead_vec = data; diff -rup orig/egcc-SVN20070729/gcc/global.c egcc-SVN20070729/gcc/global.c --- orig/egcc-SVN20070729/gcc/global.c 2007-07-26 23:03:48.000000000 -0400 +++ egcc-SVN20070729/gcc/global.c 2007-07-29 19:41:51.324502802 -0400 @@ -343,13 +343,13 @@ static void prune_preferences (void); static void find_reg (int, HARD_REG_SET, int, int, int); static void record_one_conflict (int); static void record_conflicts (int *, int); -static void mark_reg_store (rtx, rtx, void *); -static void mark_reg_clobber (rtx, rtx, void *); +static void mark_reg_store (rtx, const_rtx, void *); +static void mark_reg_clobber (rtx, const_rtx, void *); static void mark_reg_conflicts (rtx); static void mark_reg_death (rtx); static void set_preference (rtx, rtx); static void dump_conflicts (FILE *); -static void reg_becomes_live (rtx, rtx, void *); +static void reg_becomes_live (rtx, const_rtx, void *); static void reg_dies (int, enum machine_mode, struct insn_chain *); @@ -1542,7 +1542,7 @@ mirror_conflicts (void) a REG_INC note was found for it). */ static void -mark_reg_store (rtx reg, rtx setter, void *data ATTRIBUTE_UNUSED) +mark_reg_store (rtx reg, const_rtx setter, void *data ATTRIBUTE_UNUSED) { int regno; @@ -1589,7 +1589,7 @@ mark_reg_store (rtx reg, rtx setter, voi /* Like mark_reg_store except notice just CLOBBERs; ignore SETs. */ static void -mark_reg_clobber (rtx reg, rtx setter, void *data) +mark_reg_clobber (rtx reg, const_rtx setter, void *data) { if (GET_CODE (setter) == CLOBBER) mark_reg_store (reg, setter, data); @@ -1798,7 +1798,7 @@ static regset live_relevant_regs; /* Record in live_relevant_regs and REGS_SET that register REG became live. This is called via note_stores. */ static void -reg_becomes_live (rtx reg, rtx setter ATTRIBUTE_UNUSED, void *regs_set) +reg_becomes_live (rtx reg, const_rtx setter ATTRIBUTE_UNUSED, void *regs_set) { int regno; diff -rup orig/egcc-SVN20070729/gcc/jump.c egcc-SVN20070729/gcc/jump.c --- orig/egcc-SVN20070729/gcc/jump.c 2007-07-29 17:25:39.712725120 -0400 +++ egcc-SVN20070729/gcc/jump.c 2007-07-29 17:41:44.084989270 -0400 @@ -302,7 +302,7 @@ reversed_comparison_code_parts (enum rtx prev != 0 && !LABEL_P (prev); prev = prev_nonnote_insn (prev)) { - rtx set = set_of (arg0, prev); + const_rtx set = set_of (arg0, prev); if (set && GET_CODE (set) == SET && rtx_equal_p (SET_DEST (set), arg0)) { diff -rup orig/egcc-SVN20070729/gcc/local-alloc.c egcc-SVN20070729/gcc/local-alloc.c --- orig/egcc-SVN20070729/gcc/local-alloc.c 2007-07-26 23:03:52.000000000 -0400 +++ egcc-SVN20070729/gcc/local-alloc.c 2007-07-29 19:46:42.373207515 -0400 @@ -287,7 +287,7 @@ static struct equivalence *reg_equiv; static int recorded_label_ref; static void alloc_qty (int, enum machine_mode, int, int); -static void validate_equiv_mem_from_store (rtx, rtx, void *); +static void validate_equiv_mem_from_store (rtx, const_rtx, void *); static int validate_equiv_mem (rtx, rtx, rtx); static int equiv_init_varies_p (rtx); static int equiv_init_movable_p (rtx, int); @@ -295,7 +295,7 @@ static int contains_replace_regs (rtx); static int memref_referenced_p (rtx, rtx); static int memref_used_between_p (rtx, rtx, rtx); static void update_equiv_regs (void); -static void no_equiv (rtx, rtx, void *); +static void no_equiv (rtx, const_rtx, void *); static void block_alloc (int); static int qty_sugg_compare (int, int); static int qty_sugg_compare_1 (const void *, const void *); @@ -304,7 +304,7 @@ static int qty_compare_1 (const void *, static int combine_regs (rtx, rtx, int, int, rtx, int); static int reg_meets_class_p (int, enum reg_class); static void update_qty_class (int, int); -static void reg_is_set (rtx, rtx, void *); +static void reg_is_set (rtx, const_rtx, void *); static void reg_is_born (rtx, int); static void wipe_dead_reg (rtx, int); static int find_free_reg (enum reg_class, enum machine_mode, int, int, int, @@ -460,7 +460,7 @@ static int equiv_mem_modified; Called via note_stores. */ static void -validate_equiv_mem_from_store (rtx dest, rtx set ATTRIBUTE_UNUSED, +validate_equiv_mem_from_store (rtx dest, const_rtx set ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { if ((REG_P (dest) @@ -1235,7 +1235,7 @@ update_equiv_regs (void) 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 (rtx reg, rtx store ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) +no_equiv (rtx reg, const_rtx store ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { int regno; rtx list; @@ -2071,7 +2071,7 @@ update_qty_class (int qtyno, int reg) carry info from `block_alloc'. */ static void -reg_is_set (rtx reg, rtx setter, void *data ATTRIBUTE_UNUSED) +reg_is_set (rtx reg, const_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. */ diff -rup orig/egcc-SVN20070729/gcc/loop-iv.c egcc-SVN20070729/gcc/loop-iv.c --- orig/egcc-SVN20070729/gcc/loop-iv.c 2007-07-26 23:04:02.000000000 -0400 +++ egcc-SVN20070729/gcc/loop-iv.c 2007-07-29 19:47:33.425678680 -0400 @@ -1308,7 +1308,7 @@ altered_reg_used (rtx *reg, void *alt) /* Marks registers altered by EXPR in set ALT. */ static void -mark_altered (rtx expr, rtx by ATTRIBUTE_UNUSED, void *alt) +mark_altered (rtx expr, const_rtx by ATTRIBUTE_UNUSED, void *alt) { if (GET_CODE (expr) == SUBREG) expr = SUBREG_REG (expr); diff -rup orig/egcc-SVN20070729/gcc/mode-switching.c egcc-SVN20070729/gcc/mode-switching.c --- orig/egcc-SVN20070729/gcc/mode-switching.c 2007-07-26 23:03:45.000000000 -0400 +++ egcc-SVN20070729/gcc/mode-switching.c 2007-07-29 20:04:54.994525206 -0400 @@ -93,7 +93,7 @@ static sbitmap *comp; static struct seginfo * new_seginfo (int, rtx, int, HARD_REG_SET); static void add_seginfo (struct bb_info *, struct seginfo *); static void reg_dies (rtx, HARD_REG_SET *); -static void reg_becomes_live (rtx, rtx, void *); +static void reg_becomes_live (rtx, const_rtx, void *); static void make_preds_opaque (basic_block, int); @@ -176,7 +176,7 @@ reg_dies (rtx reg, HARD_REG_SET *live) This is called via note_stores. */ static void -reg_becomes_live (rtx reg, rtx setter ATTRIBUTE_UNUSED, void *live) +reg_becomes_live (rtx reg, const_rtx setter ATTRIBUTE_UNUSED, void *live) { int regno; diff -rup orig/egcc-SVN20070729/gcc/optabs.c egcc-SVN20070729/gcc/optabs.c --- orig/egcc-SVN20070729/gcc/optabs.c 2007-07-28 23:02:56.000000000 -0400 +++ egcc-SVN20070729/gcc/optabs.c 2007-07-29 19:49:03.089791369 -0400 @@ -3395,7 +3395,7 @@ struct no_conflict_data in the list of insns that constitute the actual no_conflict block / libcall block. */ static void -no_conflict_move_test (rtx dest, rtx set, void *p0) +no_conflict_move_test (rtx dest, const_rtx set, void *p0) { struct no_conflict_data *p= p0; diff -rup orig/egcc-SVN20070729/gcc/postreload-gcse.c egcc-SVN20070729/gcc/postreload-gcse.c --- orig/egcc-SVN20070729/gcc/postreload-gcse.c 2007-07-26 23:03:31.000000000 -0400 +++ egcc-SVN20070729/gcc/postreload-gcse.c 2007-07-29 19:52:10.633311154 -0400 @@ -177,10 +177,10 @@ static void free_mem (void); static bool oprs_unchanged_p (rtx, rtx, bool); static void record_last_reg_set_info (rtx, int); static void record_last_mem_set_info (rtx); -static void record_last_set_info (rtx, rtx, void *); +static void record_last_set_info (rtx, const_rtx, void *); static void record_opr_changes (rtx); -static void find_mem_conflicts (rtx, rtx, void *); +static void find_mem_conflicts (rtx, const_rtx, void *); static int load_killed_in_block_p (int, rtx, bool); static void reset_opr_set_tables (void); @@ -571,7 +571,7 @@ static int mems_conflict_p; to a nonzero value. */ static void -find_mem_conflicts (rtx dest, rtx setter ATTRIBUTE_UNUSED, +find_mem_conflicts (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data) { rtx mem_op = (rtx) data; @@ -671,7 +671,7 @@ record_last_mem_set_info (rtx insn) the SET is taking place. */ static void -record_last_set_info (rtx dest, rtx setter ATTRIBUTE_UNUSED, void *data) +record_last_set_info (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data) { rtx last_set_insn = (rtx) data; diff -rup orig/egcc-SVN20070729/gcc/postreload.c egcc-SVN20070729/gcc/postreload.c --- orig/egcc-SVN20070729/gcc/postreload.c 2007-07-26 23:03:31.000000000 -0400 +++ egcc-SVN20070729/gcc/postreload.c 2007-07-29 19:54:05.895052572 -0400 @@ -57,10 +57,10 @@ static int reload_cse_simplify_operands static void reload_combine (void); static void reload_combine_note_use (rtx *, rtx); -static void reload_combine_note_store (rtx, rtx, void *); +static void reload_combine_note_store (rtx, const_rtx, void *); static void reload_cse_move2add (rtx); -static void move2add_note_store (rtx, rtx, void *); +static void move2add_note_store (rtx, const_rtx, void *); /* Call cse / combine like post-reload optimization phases. FIRST is the first instruction. */ @@ -980,7 +980,7 @@ reload_combine (void) accordingly. Called via note_stores from reload_combine. */ static void -reload_combine_note_store (rtx dst, rtx set, void *data ATTRIBUTE_UNUSED) +reload_combine_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED) { int regno = 0; int i; @@ -1419,7 +1419,7 @@ reload_cse_move2add (rtx first) Called from reload_cse_move2add via note_stores. */ static void -move2add_note_store (rtx dst, rtx set, void *data ATTRIBUTE_UNUSED) +move2add_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED) { unsigned int regno = 0; unsigned int nregs = 0; diff -rup orig/egcc-SVN20070729/gcc/regmove.c egcc-SVN20070729/gcc/regmove.c --- orig/egcc-SVN20070729/gcc/regmove.c 2007-07-26 23:03:51.000000000 -0400 +++ egcc-SVN20070729/gcc/regmove.c 2007-07-29 19:52:55.437234378 -0400 @@ -62,7 +62,7 @@ struct match { static rtx discover_flags_reg (void); static void mark_flags_life_zones (rtx); -static void flags_set_1 (rtx, rtx, void *); +static void flags_set_1 (rtx, const_rtx, void *); static int try_auto_increment (rtx, rtx, rtx, rtx, HOST_WIDE_INT, int); static int find_matches (rtx, struct match *); @@ -371,7 +371,7 @@ mark_flags_life_zones (rtx flags) /* A subroutine of mark_flags_life_zones, called through note_stores. */ static void -flags_set_1 (rtx x, rtx pat, void *data ATTRIBUTE_UNUSED) +flags_set_1 (rtx x, const_rtx pat, void *data ATTRIBUTE_UNUSED) { if (GET_CODE (pat) == SET && reg_overlap_mentioned_p (x, flags_set_1_rtx)) diff -rup orig/egcc-SVN20070729/gcc/regrename.c egcc-SVN20070729/gcc/regrename.c --- orig/egcc-SVN20070729/gcc/regrename.c 2007-07-26 23:03:28.000000000 -0400 +++ egcc-SVN20070729/gcc/regrename.c 2007-07-29 19:56:43.688590429 -0400 @@ -88,7 +88,7 @@ static void scan_rtx (rtx, rtx *, enum r enum op_type, int); static struct du_chain *build_def_use (basic_block); static void dump_def_use_chain (struct du_chain *); -static void note_sets (rtx, rtx, void *); +static void note_sets (rtx, const_rtx, void *); static void clear_dead_regs (HARD_REG_SET *, enum machine_mode, rtx); static void merge_overlapping_regs (basic_block, HARD_REG_SET *, struct du_chain *); @@ -97,7 +97,7 @@ static void merge_overlapping_regs (basi record them in *DATA (which is actually a HARD_REG_SET *). */ static void -note_sets (rtx x, rtx set ATTRIBUTE_UNUSED, void *data) +note_sets (rtx x, const_rtx set ATTRIBUTE_UNUSED, void *data) { HARD_REG_SET *pset = (HARD_REG_SET *) data; @@ -1029,8 +1029,8 @@ static void kill_value_regno (unsigned, static void kill_value (rtx, struct value_data *); static void set_value_regno (unsigned, enum machine_mode, struct value_data *); static void init_value_data (struct value_data *); -static void kill_clobbered_value (rtx, rtx, void *); -static void kill_set_value (rtx, rtx, void *); +static void kill_clobbered_value (rtx, const_rtx, void *); +static void kill_set_value (rtx, const_rtx, void *); static int kill_autoinc_value (rtx *, void *); static void copy_value (rtx, rtx, struct value_data *); static bool mode_change_ok (enum machine_mode, enum machine_mode, @@ -1170,7 +1170,7 @@ init_value_data (struct value_data *vd) /* Called through note_stores. If X is clobbered, kill its value. */ static void -kill_clobbered_value (rtx x, rtx set, void *data) +kill_clobbered_value (rtx x, const_rtx set, void *data) { struct value_data *vd = data; if (GET_CODE (set) == CLOBBER) @@ -1181,7 +1181,7 @@ kill_clobbered_value (rtx x, rtx set, vo current value and install it as the root of its own value list. */ static void -kill_set_value (rtx x, rtx set, void *data) +kill_set_value (rtx x, const_rtx set, void *data) { struct value_data *vd = data; if (GET_CODE (set) != CLOBBER) diff -rup orig/egcc-SVN20070729/gcc/reload1.c egcc-SVN20070729/gcc/reload1.c --- orig/egcc-SVN20070729/gcc/reload1.c 2007-07-29 17:25:39.724903668 -0400 +++ egcc-SVN20070729/gcc/reload1.c 2007-07-29 19:58:09.257154445 -0400 @@ -395,7 +395,7 @@ static void check_eliminable_occurrences static void elimination_effects (rtx, enum machine_mode); static int eliminate_regs_in_insn (rtx, int); static void update_eliminable_offsets (void); -static void mark_not_eliminable (rtx, rtx, void *); +static void mark_not_eliminable (rtx, const_rtx, void *); static void set_initial_elim_offsets (void); static bool verify_initial_elim_offsets (void); static void set_initial_label_offsets (void); @@ -408,7 +408,7 @@ static void scan_paradoxical_subregs (rt static void count_pseudo (int); static void order_regs_for_reload (struct insn_chain *); static void reload_as_needed (int); -static void forget_old_reloads_1 (rtx, rtx, void *); +static void forget_old_reloads_1 (rtx, const_rtx, void *); static void forget_marked_reloads (regset); static int reload_reg_class_lower (const void *, const void *); static void mark_reload_reg_in_use (unsigned int, int, enum reload_type, @@ -3477,7 +3477,7 @@ update_eliminable_offsets (void) the insns of the function. */ static void -mark_not_eliminable (rtx dest, rtx x, void *data ATTRIBUTE_UNUSED) +mark_not_eliminable (rtx dest, const_rtx x, void *data ATTRIBUTE_UNUSED) { unsigned int i; @@ -4327,7 +4327,7 @@ reload_as_needed (int live_known) to be forgotten later. */ static void -forget_old_reloads_1 (rtx x, rtx ignored ATTRIBUTE_UNUSED, +forget_old_reloads_1 (rtx x, const_rtx ignored ATTRIBUTE_UNUSED, void *data) { unsigned int regno; diff -rup orig/egcc-SVN20070729/gcc/resource.c egcc-SVN20070729/gcc/resource.c --- orig/egcc-SVN20070729/gcc/resource.c 2007-07-26 23:04:08.000000000 -0400 +++ egcc-SVN20070729/gcc/resource.c 2007-07-29 19:59:09.229634167 -0400 @@ -78,7 +78,7 @@ static HARD_REG_SET current_live_regs; static HARD_REG_SET pending_dead_regs; -static void update_live_status (rtx, rtx, void *); +static void update_live_status (rtx, const_rtx, void *); static int find_basic_block (rtx, int); static rtx next_insn_no_annul (rtx); static rtx find_dead_or_set_registers (rtx, struct resources*, @@ -89,7 +89,7 @@ static rtx find_dead_or_set_registers (r It deadens any CLOBBERed registers and livens any SET registers. */ static void -update_live_status (rtx dest, rtx x, void *data ATTRIBUTE_UNUSED) +update_live_status (rtx dest, const_rtx x, void *data ATTRIBUTE_UNUSED) { int first_regno, last_regno; int i; diff -rup orig/egcc-SVN20070729/gcc/rtl.h egcc-SVN20070729/gcc/rtl.h --- orig/egcc-SVN20070729/gcc/rtl.h 2007-07-29 17:25:39.729176647 -0400 +++ egcc-SVN20070729/gcc/rtl.h 2007-07-29 19:22:49.007426820 -0400 @@ -1701,8 +1701,8 @@ extern int noop_move_p (const_rtx); extern rtx find_last_value (rtx, rtx *, rtx, int); extern int refers_to_regno_p (unsigned int, unsigned int, const_rtx, rtx *); extern int reg_overlap_mentioned_p (const_rtx, const_rtx); -extern rtx set_of (rtx, rtx); -extern void note_stores (rtx, void (*) (rtx, rtx, void *), void *); +extern const_rtx set_of (const_rtx, const_rtx); +extern void note_stores (const_rtx, void (*) (rtx, const_rtx, void *), void *); extern void note_uses (rtx *, void (*) (rtx *, void *), void *); extern int dead_or_set_p (const_rtx, const_rtx); extern int dead_or_set_regno_p (const_rtx, unsigned int); diff -rup orig/egcc-SVN20070729/gcc/rtlanal.c egcc-SVN20070729/gcc/rtlanal.c --- orig/egcc-SVN20070729/gcc/rtlanal.c 2007-07-29 17:25:39.733856278 -0400 +++ egcc-SVN20070729/gcc/rtlanal.c 2007-07-29 20:00:25.871583234 -0400 @@ -52,12 +52,12 @@ struct subreg_info }; /* Forward declarations */ -static void set_of_1 (rtx, rtx, void *); +static void set_of_1 (rtx, const_rtx, void *); static bool covers_regno_p (const_rtx, unsigned int); static bool covers_regno_no_parallel_p (const_rtx, unsigned int); static int rtx_referenced_p_1 (rtx *, void *); static int computed_jump_p_1 (const_rtx); -static void parms_set (rtx, rtx, void *); +static void parms_set (rtx, const_rtx, void *); static void subreg_get_info (unsigned int, enum machine_mode, unsigned int, enum machine_mode, struct subreg_info *); @@ -957,23 +957,23 @@ modified_in_p (rtx x, rtx insn) /* Helper function for set_of. */ struct set_of_data { - rtx found; - rtx pat; + const_rtx found; + const_rtx pat; }; static void -set_of_1 (rtx x, rtx pat, void *data1) +set_of_1 (rtx x, const_rtx pat, void *data1) { - struct set_of_data *data = (struct set_of_data *) (data1); - if (rtx_equal_p (x, data->pat) - || (!MEM_P (x) && reg_overlap_mentioned_p (data->pat, x))) - data->found = pat; + struct set_of_data *const data = (struct set_of_data *) (data1); + if (rtx_equal_p (x, data->pat) + || (!MEM_P (x) && reg_overlap_mentioned_p (data->pat, x))) + data->found = pat; } /* Give an INSN, return a SET or CLOBBER expression that does modify PAT (either directly or via STRICT_LOW_PART and similar modifiers). */ -rtx -set_of (rtx pat, rtx insn) +const_rtx +set_of (const_rtx pat, const_rtx insn) { struct set_of_data data; data.found = NULL_RTX; @@ -1407,7 +1407,7 @@ reg_overlap_mentioned_p (const_rtx x, co the SUBREG will be passed. */ void -note_stores (rtx x, void (*fun) (rtx, rtx, void *), void *data) +note_stores (const_rtx x, void (*fun) (rtx, const_rtx, void *), void *data) { int i; @@ -3262,7 +3262,7 @@ struct parms_set_data /* Helper function for noticing stores to parameter registers. */ static void -parms_set (rtx x, rtx pat ATTRIBUTE_UNUSED, void *data) +parms_set (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) { struct parms_set_data *d = data; if (REG_P (x) && REGNO (x) < FIRST_PSEUDO_REGISTER diff -rup orig/egcc-SVN20070729/gcc/sched-rgn.c egcc-SVN20070729/gcc/sched-rgn.c --- orig/egcc-SVN20070729/gcc/sched-rgn.c 2007-07-26 23:04:10.000000000 -0400 +++ egcc-SVN20070729/gcc/sched-rgn.c 2007-07-29 20:01:15.841085804 -0400 @@ -275,7 +275,7 @@ static int is_prisky (rtx, int, int); static int is_exception_free (rtx, int, int); static bool sets_likely_spilled (rtx); -static void sets_likely_spilled_1 (rtx, rtx, void *); +static void sets_likely_spilled_1 (rtx, const_rtx, void *); static void add_branch_dependences (rtx, rtx); static void compute_block_backward_dependences (int); @@ -2208,7 +2208,7 @@ sets_likely_spilled (rtx pat) } static void -sets_likely_spilled_1 (rtx x, rtx pat, void *data) +sets_likely_spilled_1 (rtx x, const_rtx pat, void *data) { bool *ret = (bool *) data; diff -rup orig/egcc-SVN20070729/gcc/stack-ptr-mod.c egcc-SVN20070729/gcc/stack-ptr-mod.c --- orig/egcc-SVN20070729/gcc/stack-ptr-mod.c 2007-07-26 23:04:08.000000000 -0400 +++ egcc-SVN20070729/gcc/stack-ptr-mod.c 2007-07-29 20:02:06.191487744 -0400 @@ -36,7 +36,7 @@ along with GCC; see the file COPYING3. Only useful before prologues have been emitted. */ static void -notice_stack_pointer_modification_1 (rtx x, rtx pat ATTRIBUTE_UNUSED, +notice_stack_pointer_modification_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { if (x == stack_pointer_rtx diff -rup orig/egcc-SVN20070729/gcc/var-tracking.c egcc-SVN20070729/gcc/var-tracking.c --- orig/egcc-SVN20070729/gcc/var-tracking.c 2007-07-26 23:04:08.000000000 -0400 +++ egcc-SVN20070729/gcc/var-tracking.c 2007-07-29 20:03:18.787809248 -0400 @@ -333,10 +333,10 @@ static bool track_expr_p (tree); static bool same_variable_part_p (rtx, tree, HOST_WIDE_INT); static int count_uses (rtx *, void *); static void count_uses_1 (rtx *, void *); -static void count_stores (rtx, rtx, void *); +static void count_stores (rtx, const_rtx, void *); static int add_uses (rtx *, void *); static void add_uses_1 (rtx *, void *); -static void add_stores (rtx, rtx, void *); +static void add_stores (rtx, const_rtx, void *); static bool compute_bb_dataflow (basic_block); static void vt_find_locations (void); @@ -1708,7 +1708,7 @@ count_uses_1 (rtx *x, void *insn) INSN is instruction which the LOC is part of. */ static void -count_stores (rtx loc, rtx expr ATTRIBUTE_UNUSED, void *insn) +count_stores (rtx loc, const_rtx expr ATTRIBUTE_UNUSED, void *insn) { count_uses (&loc, insn); } @@ -1757,7 +1757,7 @@ add_uses_1 (rtx *x, void *insn) INSN is instruction which the LOC is part of. */ static void -add_stores (rtx loc, rtx expr, void *insn) +add_stores (rtx loc, const_rtx expr, void *insn) { if (REG_P (loc)) {