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