-extern int rtx_addr_can_trap_p PARAMS ((rtx));
-extern int rtx_unstable_p PARAMS ((rtx));
-extern int rtx_varies_p PARAMS ((rtx, int));
-extern int rtx_addr_varies_p PARAMS ((rtx, int));
-extern HOST_WIDE_INT get_integer_term PARAMS ((rtx));
-extern rtx get_related_value PARAMS ((rtx));
-extern rtx get_jump_table_offset PARAMS ((rtx, rtx *));
-extern int global_reg_mentioned_p PARAMS ((rtx));
-extern int reg_mentioned_p PARAMS ((rtx, rtx));
-extern int count_occurrences PARAMS ((rtx, rtx, int));
-extern int reg_referenced_p PARAMS ((rtx, rtx));
-extern int reg_used_between_p PARAMS ((rtx, rtx, rtx));
-extern int reg_referenced_between_p PARAMS ((rtx, rtx, rtx));
-extern int reg_set_between_p PARAMS ((rtx, rtx, rtx));
-extern int regs_set_between_p PARAMS ((rtx, rtx, rtx));
-extern int commutative_operand_precedence PARAMS ((rtx));
-extern int swap_commutative_operands_p PARAMS ((rtx, rtx));
-extern int modified_between_p PARAMS ((rtx, rtx, rtx));
-extern int no_labels_between_p PARAMS ((rtx, rtx));
-extern int no_jumps_between_p PARAMS ((rtx, rtx));
-extern int modified_in_p PARAMS ((rtx, rtx));
-extern int insn_dependent_p PARAMS ((rtx, rtx));
-extern int reg_set_p PARAMS ((rtx, rtx));
-extern rtx single_set_2 PARAMS ((rtx, rtx));
-extern int multiple_sets PARAMS ((rtx));
-extern int set_noop_p PARAMS ((rtx));
-extern int noop_move_p PARAMS ((rtx));
-extern rtx find_last_value PARAMS ((rtx, rtx *, rtx, int));
-extern int refers_to_regno_p PARAMS ((unsigned int, unsigned int,
- rtx, rtx *));
-extern int reg_overlap_mentioned_p PARAMS ((rtx, rtx));
-extern rtx set_of PARAMS ((rtx, rtx));
-extern void note_stores PARAMS ((rtx,
- void (*) (rtx, rtx, void *),
- void *));
-extern void note_uses PARAMS ((rtx *,
- void (*) (rtx *, void *),
- void *));
-extern rtx reg_set_last PARAMS ((rtx, rtx));
-extern int dead_or_set_p PARAMS ((rtx, rtx));
-extern int dead_or_set_regno_p PARAMS ((rtx, unsigned int));
-extern rtx find_reg_note PARAMS ((rtx, enum reg_note, rtx));
-extern rtx find_regno_note PARAMS ((rtx, enum reg_note,
- unsigned int));
-extern rtx find_reg_equal_equiv_note PARAMS ((rtx));
-extern int find_reg_fusage PARAMS ((rtx, enum rtx_code, rtx));
-extern int find_regno_fusage PARAMS ((rtx, enum rtx_code,
- unsigned int));
-extern int pure_call_p PARAMS ((rtx));
-extern void remove_note PARAMS ((rtx, rtx));
-extern int side_effects_p PARAMS ((rtx));
-extern int volatile_refs_p PARAMS ((rtx));
-extern int volatile_insn_p PARAMS ((rtx));
-extern int may_trap_p PARAMS ((rtx));
-extern int inequality_comparisons_p PARAMS ((rtx));
-extern rtx replace_rtx PARAMS ((rtx, rtx, rtx));
-extern rtx replace_regs PARAMS ((rtx, rtx *, unsigned int,
- int));
-extern int computed_jump_p PARAMS ((rtx));
-typedef int (*rtx_function) PARAMS ((rtx *, void *));
-extern int for_each_rtx PARAMS ((rtx *, rtx_function, void *));
-extern rtx regno_use_in PARAMS ((unsigned int, rtx));
-extern int auto_inc_p PARAMS ((rtx));
-extern int in_expr_list_p PARAMS ((rtx, rtx));
-extern void remove_node_from_expr_list PARAMS ((rtx, rtx *));
-extern int insns_safe_to_move_p PARAMS ((rtx, rtx, rtx *));
-extern int loc_mentioned_in_p PARAMS ((rtx *, rtx));
-extern rtx find_first_parameter_load PARAMS ((rtx, rtx));
-extern bool keep_with_call_p PARAMS ((rtx));
+/* Structure used for passing data to REPLACE_LABEL. */
+typedef struct replace_label_data
+{
+ rtx r1;
+ rtx r2;
+ bool update_label_nuses;
+} replace_label_data;
+
+extern int rtx_addr_can_trap_p (rtx);
+extern bool nonzero_address_p (rtx);
+extern int rtx_unstable_p (rtx);
+extern int rtx_varies_p (rtx, int);
+extern int rtx_addr_varies_p (rtx, int);
+extern HOST_WIDE_INT get_integer_term (rtx);
+extern rtx get_related_value (rtx);
+extern rtx get_jump_table_offset (rtx, rtx *);
+extern int global_reg_mentioned_p (rtx);
+extern int reg_mentioned_p (rtx, rtx);
+extern int count_occurrences (rtx, rtx, int);
+extern int reg_referenced_p (rtx, rtx);
+extern int reg_used_between_p (rtx, rtx, rtx);
+extern int reg_referenced_between_p (rtx, rtx, rtx);
+extern int reg_set_between_p (rtx, rtx, rtx);
+extern int regs_set_between_p (rtx, rtx, rtx);
+extern int commutative_operand_precedence (rtx);
+extern int swap_commutative_operands_p (rtx, rtx);
+extern int modified_between_p (rtx, rtx, rtx);
+extern int no_labels_between_p (rtx, rtx);
+extern int no_jumps_between_p (rtx, rtx);
+extern int modified_in_p (rtx, rtx);
+extern int insn_dependent_p (rtx, rtx);
+extern int reg_set_p (rtx, rtx);
+extern rtx single_set_2 (rtx, rtx);
+extern int multiple_sets (rtx);
+extern int set_noop_p (rtx);
+extern int noop_move_p (rtx);
+extern rtx find_last_value (rtx, rtx *, rtx, int);
+extern int refers_to_regno_p (unsigned int, unsigned int, rtx, rtx *);
+extern int reg_overlap_mentioned_p (rtx, rtx);
+extern rtx set_of (rtx, rtx);
+extern void note_stores (rtx, void (*) (rtx, rtx, void *), void *);
+extern void note_uses (rtx *, void (*) (rtx *, void *), void *);
+extern rtx reg_set_last (rtx, rtx);
+extern int dead_or_set_p (rtx, rtx);
+extern int dead_or_set_regno_p (rtx, unsigned int);
+extern rtx find_reg_note (rtx, enum reg_note, rtx);
+extern rtx find_regno_note (rtx, enum reg_note, unsigned int);
+extern rtx find_reg_equal_equiv_note (rtx);
+extern int find_reg_fusage (rtx, enum rtx_code, rtx);
+extern int find_regno_fusage (rtx, enum rtx_code, unsigned int);
+extern int pure_call_p (rtx);
+extern void remove_note (rtx, rtx);
+extern int side_effects_p (rtx);
+extern int volatile_refs_p (rtx);
+extern int volatile_insn_p (rtx);
+extern int may_trap_p (rtx);
+extern int inequality_comparisons_p (rtx);
+extern rtx replace_rtx (rtx, rtx, rtx);
+extern rtx replace_regs (rtx, rtx *, unsigned int, int);
+extern int replace_label (rtx *, void *);
+extern int rtx_referenced_p (rtx, rtx);
+extern bool tablejump_p (rtx, rtx *, rtx *);
+extern int computed_jump_p (rtx);
+typedef int (*rtx_function) (rtx *, void *);
+extern int for_each_rtx (rtx *, rtx_function, void *);
+extern rtx regno_use_in (unsigned int, rtx);
+extern int auto_inc_p (rtx);
+extern int in_expr_list_p (rtx, rtx);
+extern void remove_node_from_expr_list (rtx, rtx *);
+extern int insns_safe_to_move_p (rtx, rtx, rtx *);
+extern int loc_mentioned_in_p (rtx *, rtx);
+extern rtx find_first_parameter_load (rtx, rtx);
+extern bool keep_with_call_p (rtx);
+extern bool label_is_jump_target_p (rtx, rtx);