Patch to purify some functions.
Jan Hubicka
hubicka@atrey.karlin.mff.cuni.cz
Thu Apr 20 07:07:00 GMT 2000
Hi
This patch purifies some functions in gcc. If it will be considered
usefull to tag headers in this way, I may continue in purifying functions
elsewhere (there are many of pure functions around).
This patch includes those functions that are most commonly called from the
rtl.h and recog.h. I've measured up to 14% speedup in some passes (sched), but
interestingly unlike my experiments in August, this seems to enlarge code size
somehow. The largest expansion is in insn-attrtab, where I was getting largest
gains previously.
The purpose is Jeff's patch to cse memory references trought to const/pure
functionc calls, this causes insn-attrtab to cache some global variables
in register and thus requires two extra pops in epilogue. Since insn-attrtab
contains quite a dozen of epilogue copis, I get code bloat.
Many other files gets shorter, so the bloat is almost compensated (the
difference is roughly 4KB).
Honza
Thu Apr 20 16:05:19 MET DST 2000 Jan Hubicka <jh@suse.cz.
* ansidecl.h (ATTRIBUTE_PURE, ATTRIBUTE_CONST): New.
Thu Apr 20 16:05:19 MET DST 2000 Jan Hubicka <jh@suse.cz.
* rtl.h: Purify some functions.
* recog.h: Likewise.
*** /usr/src/egcs-20000306/include/ansidecl.h Wed Dec 1 00:56:52 1999
--- ansidecl.h Mon Apr 3 19:21:55 2000
*************** So instead we use the macro below and te
*** 196,201 ****
--- 196,210 ----
# endif /* GNUC >= 2.96 */
#endif /* ATTRIBUTE_MALLOC */
+ /* Attribute __pure__ on functions was valid as of gcc 2.96. */
+ #ifndef ATTRIBUTE_PURE
+ # if (GCC_VERSION >= 2096)
+ # define ATTRIBUTE_PURE __attribute__ ((__pure__))
+ # else
+ # define ATTRIBUTE_PURE
+ # endif /* GNUC >= 2.96 */
+ #endif /* ATTRIBUTE_PURE */
+
/* Attributes on labels were valid as of gcc 2.93. */
#ifndef ATTRIBUTE_UNUSED_LABEL
# if (GCC_VERSION >= 2093)
*************** So instead we use the macro below and te
*** 204,209 ****
--- 213,222 ----
# define ATTRIBUTE_UNUSED_LABEL
# endif /* GNUC >= 2.93 */
#endif /* ATTRIBUTE_UNUSED_LABEL */
+
+ #ifndef ATTRIBUTE_CONST
+ #define ATTRIBUTE_CONST __attribute__ ((__const__))
+ #endif /* ATTRIBUTE_CONST */
#ifndef ATTRIBUTE_UNUSED
#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
*** /usr/src/egcs-20000306/gcc/rtl.h Sat Apr 8 22:36:02 2000
--- rtl.h Tue Apr 4 16:51:30 2000
--- 981,986 ----
*************** extern rtx copy_rtx PARAMS ((rtx));
*** 1046,1052 ****
extern rtx copy_rtx_if_shared PARAMS ((rtx));
extern rtx copy_most_rtx PARAMS ((rtx, rtx));
extern rtx shallow_copy_rtx PARAMS ((rtx));
! extern int rtx_equal_p PARAMS ((rtx, rtx));
extern rtvec gen_rtvec_v PARAMS ((int, rtx *));
extern rtx gen_reg_rtx PARAMS ((enum machine_mode));
extern rtx gen_label_rtx PARAMS ((void));
--- 1031,1038 ----
extern rtx copy_rtx_if_shared PARAMS ((rtx));
extern rtx copy_most_rtx PARAMS ((rtx, rtx));
extern rtx shallow_copy_rtx PARAMS ((rtx));
! extern int rtx_equal_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
extern rtvec gen_rtvec_v PARAMS ((int, rtx *));
extern rtx gen_reg_rtx PARAMS ((enum machine_mode));
extern rtx gen_label_rtx PARAMS ((void));
*************** extern rtx operand_subword PARAMS ((rtx
*** 1060,1073 ****
enum machine_mode));
extern rtx operand_subword_force PARAMS ((rtx, unsigned int,
enum machine_mode));
! extern int subreg_lowpart_p PARAMS ((rtx));
extern rtx make_safe_from PARAMS ((rtx, rtx));
extern rtx convert_memory_address PARAMS ((enum machine_mode, rtx));
extern rtx memory_address PARAMS ((enum machine_mode, rtx));
! extern rtx get_insns PARAMS ((void));
extern const char *get_insn_name PARAMS ((int));
! extern rtx get_last_insn PARAMS ((void));
! extern rtx get_last_insn_anywhere PARAMS ((void));
extern void start_sequence PARAMS ((void));
extern void push_to_sequence PARAMS ((rtx));
extern void end_sequence PARAMS ((void));
--- 1046,1063 ----
enum machine_mode));
extern rtx operand_subword_force PARAMS ((rtx, unsigned int,
enum machine_mode));
! extern int subreg_lowpart_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
extern rtx make_safe_from PARAMS ((rtx, rtx));
extern rtx convert_memory_address PARAMS ((enum machine_mode, rtx));
extern rtx memory_address PARAMS ((enum machine_mode, rtx));
! extern rtx get_insns PARAMS ((void))
! ATTRIBUTE_PURE;
extern const char *get_insn_name PARAMS ((int));
! extern rtx get_last_insn PARAMS ((void))
! ATTRIBUTE_PURE;
! extern rtx get_last_insn_anywhere PARAMS ((void))
! ATTRIBUTE_PURE;
extern void start_sequence PARAMS ((void));
extern void push_to_sequence PARAMS ((rtx));
extern void end_sequence PARAMS ((void));
*************** extern rtx gen_sequence PARAMS ((void)
*** 1077,1087 ****
extern rtx immed_double_const PARAMS ((HOST_WIDE_INT, HOST_WIDE_INT, enum machine_mode));
extern rtx force_const_mem PARAMS ((enum machine_mode, rtx));
extern rtx force_reg PARAMS ((enum machine_mode, rtx));
! extern rtx get_pool_constant PARAMS ((rtx));
! extern enum machine_mode get_pool_mode PARAMS ((rtx));
! extern rtx get_pool_constant_for_function PARAMS ((struct function *, rtx));
! extern enum machine_mode get_pool_mode_for_function PARAMS ((struct function *, rtx));
! extern int get_pool_offset PARAMS ((rtx));
extern rtx simplify_subtraction PARAMS ((rtx));
extern rtx assign_stack_local PARAMS ((enum machine_mode,
HOST_WIDE_INT, int));
--- 1067,1082 ----
extern rtx immed_double_const PARAMS ((HOST_WIDE_INT, HOST_WIDE_INT, enum machine_mode));
extern rtx force_const_mem PARAMS ((enum machine_mode, rtx));
extern rtx force_reg PARAMS ((enum machine_mode, rtx));
! extern rtx get_pool_constant PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern enum machine_mode get_pool_mode PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx get_pool_constant_for_function PARAMS ((struct function *, rtx))
! ATTRIBUTE_PURE;
! extern enum machine_mode get_pool_mode_for_function PARAMS ((struct function *, rtx))
! ATTRIBUTE_PURE;
! extern int get_pool_offset PARAMS ((rtx))
! ATTRIBUTE_PURE;
extern rtx simplify_subtraction PARAMS ((rtx));
extern rtx assign_stack_local PARAMS ((enum machine_mode,
HOST_WIDE_INT, int));
*************** extern rtx emit_line_note PARAMS ((cons
*** 1116,1147 ****
extern rtx emit_note PARAMS ((const char *, int));
extern rtx emit_line_note_force PARAMS ((const char *, int));
extern rtx make_insn_raw PARAMS ((rtx));
! extern rtx previous_insn PARAMS ((rtx));
! extern rtx next_insn PARAMS ((rtx));
! extern rtx prev_nonnote_insn PARAMS ((rtx));
! extern rtx next_nonnote_insn PARAMS ((rtx));
! extern rtx prev_real_insn PARAMS ((rtx));
! extern rtx next_real_insn PARAMS ((rtx));
! extern rtx prev_active_insn PARAMS ((rtx));
! extern rtx next_active_insn PARAMS ((rtx));
! extern int active_insn_p PARAMS ((rtx));
! extern rtx prev_label PARAMS ((rtx));
! extern rtx next_label PARAMS ((rtx));
! extern rtx next_cc0_user PARAMS ((rtx));
! extern rtx prev_cc0_setter PARAMS ((rtx));
! extern rtx next_nondeleted_insn PARAMS ((rtx));
! extern enum rtx_code reverse_condition PARAMS ((enum rtx_code));
! extern enum rtx_code reverse_condition_maybe_unordered PARAMS ((enum rtx_code));
! extern enum rtx_code swap_condition PARAMS ((enum rtx_code));
! extern enum rtx_code unsigned_condition PARAMS ((enum rtx_code));
! extern enum rtx_code signed_condition PARAMS ((enum rtx_code));
extern rtx find_equiv_reg PARAMS ((rtx, rtx, enum reg_class, int, short *, int, enum machine_mode));
extern rtx squeeze_notes PARAMS ((rtx, rtx));
extern rtx delete_insn PARAMS ((rtx));
extern void delete_jump PARAMS ((rtx));
extern void delete_barrier PARAMS ((rtx));
! extern rtx get_label_before PARAMS ((rtx));
! extern rtx get_label_after PARAMS ((rtx));
extern rtx follow_jumps PARAMS ((rtx));
extern rtx adj_offsettable_operand PARAMS ((rtx, int));
extern rtx try_split PARAMS ((rtx, rtx, int));
--- 1111,1163 ----
extern rtx emit_note PARAMS ((const char *, int));
extern rtx emit_line_note_force PARAMS ((const char *, int));
extern rtx make_insn_raw PARAMS ((rtx));
! extern rtx previous_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx next_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx prev_nonnote_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx next_nonnote_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx prev_real_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx next_real_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx prev_active_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx next_active_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int active_insn_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx prev_label PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx next_label PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx next_cc0_user PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx prev_cc0_setter PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx next_nondeleted_insn PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern enum rtx_code reverse_condition PARAMS ((enum rtx_code))
! ATTRIBUTE_CONST;
! extern enum rtx_code reverse_condition_maybe_unordered PARAMS ((enum rtx_code))
! ATTRIBUTE_CONST;
! extern enum rtx_code swap_condition PARAMS ((enum rtx_code))
! ATTRIBUTE_CONST;
! extern enum rtx_code unsigned_condition PARAMS ((enum rtx_code))
! ATTRIBUTE_CONST;
! extern enum rtx_code signed_condition PARAMS ((enum rtx_code))
! ATTRIBUTE_CONST;
extern rtx find_equiv_reg PARAMS ((rtx, rtx, enum reg_class, int, short *, int, enum machine_mode));
extern rtx squeeze_notes PARAMS ((rtx, rtx));
extern rtx delete_insn PARAMS ((rtx));
extern void delete_jump PARAMS ((rtx));
extern void delete_barrier PARAMS ((rtx));
! extern rtx get_label_before PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx get_label_after PARAMS ((rtx))
! ATTRIBUTE_PURE;
extern rtx follow_jumps PARAMS ((rtx));
extern rtx adj_offsettable_operand PARAMS ((rtx, int));
extern rtx try_split PARAMS ((rtx, rtx, int));
*************** extern void set_unique_reg_note
*** 1168,1223 ****
/* Functions in rtlanal.c */
! extern int rtx_unstable_p PARAMS ((rtx));
! extern int rtx_varies_p PARAMS ((rtx));
! extern int rtx_addr_varies_p PARAMS ((rtx));
! extern HOST_WIDE_INT get_integer_term PARAMS ((rtx));
! extern rtx get_related_value PARAMS ((rtx));
! extern int reg_mentioned_p PARAMS ((rtx, rtx));
! 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 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 reg_set_p PARAMS ((rtx, rtx));
! extern rtx single_set PARAMS ((rtx));
! extern int multiple_sets 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 void note_stores PARAMS ((rtx,
void (*) (rtx, 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 int find_reg_fusage PARAMS ((rtx, enum rtx_code, rtx));
extern int find_regno_fusage PARAMS ((rtx, enum rtx_code,
! unsigned int));
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 void remove_node_from_expr_list PARAMS ((rtx, rtx *));
! extern int insns_safe_to_move_p PARAMS ((rtx, rtx, rtx *));
/* flow.c */
--- 1184,1275 ----
/* Functions in rtlanal.c */
! extern int rtx_unstable_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int rtx_varies_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int rtx_addr_varies_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern HOST_WIDE_INT get_integer_term PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx get_related_value PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int reg_mentioned_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int reg_referenced_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int reg_used_between_p PARAMS ((rtx, rtx, rtx))
! ATTRIBUTE_PURE;
! extern int reg_referenced_between_p PARAMS ((rtx, rtx, rtx))
! ATTRIBUTE_PURE;
! extern int reg_set_between_p PARAMS ((rtx, rtx, rtx))
! ATTRIBUTE_PURE;
! extern int regs_set_between_p PARAMS ((rtx, rtx, rtx))
! ATTRIBUTE_PURE;
! extern int modified_between_p PARAMS ((rtx, rtx, rtx))
! ATTRIBUTE_PURE;
! extern int no_labels_between_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int no_jumps_between_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int modified_in_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int reg_set_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern rtx single_set PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int multiple_sets PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx find_last_value PARAMS ((rtx, rtx *, rtx, int))
! ATTRIBUTE_PURE;
extern int refers_to_regno_p PARAMS ((unsigned int, unsigned int,
! rtx, rtx *))
! ATTRIBUTE_PURE;
! extern int reg_overlap_mentioned_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
extern void note_stores PARAMS ((rtx,
void (*) (rtx, rtx, void *),
void *));
! extern rtx reg_set_last PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int dead_or_set_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int dead_or_set_regno_p PARAMS ((rtx, unsigned int))
! ATTRIBUTE_PURE;
! extern rtx find_reg_note PARAMS ((rtx, enum reg_note, rtx))
! ATTRIBUTE_PURE;
extern rtx find_regno_note PARAMS ((rtx, enum reg_note,
! unsigned int))
! ATTRIBUTE_PURE;
! extern int find_reg_fusage PARAMS ((rtx, enum rtx_code, rtx))
! ATTRIBUTE_PURE;
extern int find_regno_fusage PARAMS ((rtx, enum rtx_code,
! unsigned int))
! ATTRIBUTE_PURE;
extern void remove_note PARAMS ((rtx, rtx));
! extern int side_effects_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int volatile_refs_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int volatile_insn_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int may_trap_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int inequality_comparisons_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
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))
! ATTRIBUTE_PURE;
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))
! ATTRIBUTE_PURE;
extern void remove_node_from_expr_list PARAMS ((rtx, rtx *));
! extern int insns_safe_to_move_p PARAMS ((rtx, rtx, rtx *))
! ATTRIBUTE_PURE;
/* flow.c */
*************** extern void cse_end_of_basic_block PARAM
*** 1479,1494 ****
int, int, int));
/* In jump.c */
! extern int comparison_dominates_p PARAMS ((enum rtx_code, enum rtx_code));
! extern int condjump_p PARAMS ((rtx));
! extern rtx condjump_label PARAMS ((rtx));
! extern int simplejump_p PARAMS ((rtx));
! extern int returnjump_p PARAMS ((rtx));
! extern int onlyjump_p PARAMS ((rtx));
! extern int sets_cc0_p PARAMS ((rtx));
extern int invert_jump PARAMS ((rtx, rtx));
! extern int rtx_renumbered_equal_p PARAMS ((rtx, rtx));
! extern int true_regnum PARAMS ((rtx));
extern int redirect_jump PARAMS ((rtx, rtx));
extern void jump_optimize PARAMS ((rtx, int, int, int));
extern void jump_optimize_minimal PARAMS ((rtx));
--- 1531,1555 ----
int, int, int));
/* In jump.c */
! extern int comparison_dominates_p PARAMS ((enum rtx_code, enum rtx_code))
! ATTRIBUTE_PURE;
! extern int condjump_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern rtx condjump_label PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int simplejump_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int returnjump_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int onlyjump_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
! extern int sets_cc0_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
extern int invert_jump PARAMS ((rtx, rtx));
! extern int rtx_renumbered_equal_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
! extern int true_regnum PARAMS ((rtx))
! ATTRIBUTE_PURE;
extern int redirect_jump PARAMS ((rtx, rtx));
extern void jump_optimize PARAMS ((rtx, int, int, int));
extern void jump_optimize_minimal PARAMS ((rtx));
*************** extern void thread_jumps PARAMS ((rtx,
*** 1497,1503 ****
extern int redirect_exp PARAMS ((rtx *, rtx, rtx, rtx));
extern int rtx_equal_for_thread_p PARAMS ((rtx, rtx, rtx));
extern int invert_exp PARAMS ((rtx, rtx));
! extern int can_reverse_comparison_p PARAMS ((rtx, rtx));
extern void delete_for_peephole PARAMS ((rtx, rtx));
extern int condjump_in_parallel_p PARAMS ((rtx));
extern void never_reached_warning PARAMS ((rtx));
--- 1558,1565 ----
extern int redirect_exp PARAMS ((rtx *, rtx, rtx, rtx));
extern int rtx_equal_for_thread_p PARAMS ((rtx, rtx, rtx));
extern int invert_exp PARAMS ((rtx, rtx));
! extern int can_reverse_comparison_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
extern void delete_for_peephole PARAMS ((rtx, rtx));
extern int condjump_in_parallel_p PARAMS ((rtx));
extern void never_reached_warning PARAMS ((rtx));
*************** extern void never_reached_warning PARAMS
*** 1509,1524 ****
#define JUMP_AFTER_REGSCAN 1
/* In emit-rtl.c. */
! extern int max_reg_num PARAMS ((void));
! extern int max_label_num PARAMS ((void));
! extern int get_first_label_num PARAMS ((void));
extern void delete_insns_since PARAMS ((rtx));
extern void mark_reg_pointer PARAMS ((rtx, int));
extern void mark_user_reg PARAMS ((rtx));
extern void reset_used_flags PARAMS ((rtx));
extern void reorder_insns PARAMS ((rtx, rtx, rtx));
! extern int get_max_uid PARAMS ((void));
! extern int in_sequence_p PARAMS ((void));
extern void force_next_line_note PARAMS ((void));
extern void clear_emit_caches PARAMS ((void));
extern void init_emit PARAMS ((void));
--- 1571,1591 ----
#define JUMP_AFTER_REGSCAN 1
/* In emit-rtl.c. */
! extern int max_reg_num PARAMS ((void))
! ATTRIBUTE_PURE;
! extern int max_label_num PARAMS ((void))
! ATTRIBUTE_PURE;
! extern int get_first_label_num PARAMS ((void))
! ATTRIBUTE_PURE;
extern void delete_insns_since PARAMS ((rtx));
extern void mark_reg_pointer PARAMS ((rtx, int));
extern void mark_user_reg PARAMS ((rtx));
extern void reset_used_flags PARAMS ((rtx));
extern void reorder_insns PARAMS ((rtx, rtx, rtx));
! extern int get_max_uid PARAMS ((void))
! ATTRIBUTE_PURE;
! extern int in_sequence_p PARAMS ((void))
! ATTRIBUTE_PURE;
extern void force_next_line_note PARAMS ((void));
extern void clear_emit_caches PARAMS ((void));
extern void init_emit PARAMS ((void));
--- 1637,1642 ----
*************** extern void update_temp_slot_address P
*** 1598,1611 ****
extern void purge_addressof PARAMS ((rtx));
/* In reload.c */
! extern int operands_match_p PARAMS ((rtx, rtx));
extern int safe_from_earlyclobber PARAMS ((rtx, rtx));
/* In stmt.c */
extern void set_file_and_line_for_stmt PARAMS ((const char *, int));
extern void expand_null_return PARAMS ((void));
extern void emit_jump PARAMS ((rtx));
! extern int preserve_subexpressions_p PARAMS ((void));
/* In expr.c */
extern void init_expr_once PARAMS ((void));
--- 1664,1679 ----
extern void purge_addressof PARAMS ((rtx));
/* In reload.c */
! extern int operands_match_p PARAMS ((rtx, rtx))
! ATTRIBUTE_PURE;
extern int safe_from_earlyclobber PARAMS ((rtx, rtx));
/* In stmt.c */
extern void set_file_and_line_for_stmt PARAMS ((const char *, int));
extern void expand_null_return PARAMS ((void));
extern void emit_jump PARAMS ((rtx));
! extern int preserve_subexpressions_p PARAMS ((void))
! ATTRIBUTE_PURE;
/* In expr.c */
extern void init_expr_once PARAMS ((void));
*************** extern void retry_global_alloc PARAMS (
*** 1645,1652 ****
extern void build_insn_chain PARAMS ((rtx));
/* In regclass.c */
! extern int reg_classes_intersect_p PARAMS ((enum reg_class, enum reg_class));
! extern int reg_class_subset_p PARAMS ((enum reg_class, enum reg_class));
extern void globalize_reg PARAMS ((int));
extern void init_regs PARAMS ((void));
extern void init_reg_sets PARAMS ((void));
--- 1713,1722 ----
extern void build_insn_chain PARAMS ((rtx));
/* In regclass.c */
! extern int reg_classes_intersect_p PARAMS ((enum reg_class, enum reg_class))
! ATTRIBUTE_PURE;
! extern int reg_class_subset_p PARAMS ((enum reg_class, enum reg_class))
! ATTRIBUTE_PURE;
extern void globalize_reg PARAMS ((int));
extern void init_regs PARAMS ((void));
extern void init_reg_sets PARAMS ((void));
*************** extern void init_optabs PARAMS ((void)
*** 1678,1684 ****
extern void dump_local_alloc PARAMS ((FILE *));
#endif
extern int local_alloc PARAMS ((void));
! extern int function_invariant_p PARAMS ((rtx));
/* In reload1.c */
extern void reload_cse_regs PARAMS ((rtx));
--- 1748,1755 ----
extern void dump_local_alloc PARAMS ((FILE *));
#endif
extern int local_alloc PARAMS ((void));
! extern int function_invariant_p PARAMS ((rtx))
! ATTRIBUTE_PURE;
/* In reload1.c */
extern void reload_cse_regs PARAMS ((rtx));
*** /usr/src/egcs-20000306/gcc/recog.h Tue Apr 11 20:43:38 2000
--- recog.h Mon Apr 3 17:44:34 2000
*************** extern void init_recog PARAMS ((void))
*** 71,85 ****
extern void init_recog_no_volatile PARAMS ((void));
extern int recog_memoized PARAMS ((rtx));
extern int check_asm_operands PARAMS ((rtx));
! extern int asm_operand_ok PARAMS ((rtx, const char *));
extern int validate_change PARAMS ((rtx, rtx *, rtx, int));
extern int apply_change_group PARAMS ((void));
extern int num_validated_changes PARAMS ((void));
extern void cancel_changes PARAMS ((int));
extern int constrain_operands PARAMS ((int));
! extern int memory_address_p PARAMS ((enum machine_mode, rtx));
! extern int strict_memory_address_p PARAMS ((enum machine_mode, rtx));
extern int validate_replace_rtx PARAMS ((rtx, rtx, rtx));
extern void validate_replace_rtx_group PARAMS ((rtx, rtx, rtx));
extern int validate_replace_src PARAMS ((rtx, rtx, rtx));
--- 71,87 ----
extern void init_recog_no_volatile PARAMS ((void));
extern int recog_memoized PARAMS ((rtx));
extern int check_asm_operands PARAMS ((rtx));
! extern int asm_operand_ok PARAMS ((rtx, const char *))
! ATTRIBUTE_PURE;
extern int validate_change PARAMS ((rtx, rtx *, rtx, int));
extern int apply_change_group PARAMS ((void));
extern int num_validated_changes PARAMS ((void));
extern void cancel_changes PARAMS ((int));
extern int constrain_operands PARAMS ((int));
! extern int memory_address_p PARAMS ((enum machine_mode, rtx))
! ATTRIBUTE_PURE;
! extern int strict_memory_address_p PARAMS ((enum machine_mode, rtx))
! ATTRIBUTE_PURE;
extern int validate_replace_rtx PARAMS ((rtx, rtx, rtx));
extern void validate_replace_rtx_group PARAMS ((rtx, rtx, rtx));
extern int validate_replace_src PARAMS ((rtx, rtx, rtx));
*************** extern int reg_fits_class_p PARAMS ((rt
*** 90,111 ****
enum machine_mode));
extern rtx *find_single_use PARAMS ((rtx, rtx, rtx *));
! extern int general_operand PARAMS ((rtx, enum machine_mode));
! extern int address_operand PARAMS ((rtx, enum machine_mode));
! extern int register_operand PARAMS ((rtx, enum machine_mode));
! extern int pmode_register_operand PARAMS ((rtx, enum machine_mode));
! extern int scratch_operand PARAMS ((rtx, enum machine_mode));
! extern int immediate_operand PARAMS ((rtx, enum machine_mode));
! extern int const_int_operand PARAMS ((rtx, enum machine_mode));
! extern int const_double_operand PARAMS ((rtx, enum machine_mode));
! extern int nonimmediate_operand PARAMS ((rtx, enum machine_mode));
! extern int nonmemory_operand PARAMS ((rtx, enum machine_mode));
! extern int push_operand PARAMS ((rtx, enum machine_mode));
! extern int pop_operand PARAMS ((rtx, enum machine_mode));
! extern int memory_operand PARAMS ((rtx, enum machine_mode));
! extern int indirect_operand PARAMS ((rtx, enum machine_mode));
! extern int mode_independent_operand PARAMS ((rtx, enum machine_mode));
! extern int comparison_operator PARAMS ((rtx, enum machine_mode));
extern int offsettable_memref_p PARAMS ((rtx));
extern int offsettable_nonstrict_memref_p PARAMS ((rtx));
--- 92,129 ----
enum machine_mode));
extern rtx *find_single_use PARAMS ((rtx, rtx, rtx *));
! extern int general_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int address_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int register_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int pmode_register_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int scratch_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int immediate_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int const_int_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int const_double_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int nonimmediate_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int nonmemory_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int push_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int pop_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int memory_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int indirect_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int mode_independent_operand PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
! extern int comparison_operator PARAMS ((rtx, enum machine_mode))
! ATTRIBUTE_PURE;
extern int offsettable_memref_p PARAMS ((rtx));
extern int offsettable_nonstrict_memref_p PARAMS ((rtx));
More information about the Gcc-patches
mailing list