diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-12-09 08:20:07 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-12-09 08:20:07 +0000 |
commit | bc33205ec48e0e64386645c5ecbdc21c77f941bb (patch) | |
tree | 27428732fdaadeadefb7dd0fb50033ad0600a164 /gcc | |
parent | 2430262441a9561ce325564d1c19860ae1f5b35f (diff) | |
download | gcc-bc33205ec48e0e64386645c5ecbdc21c77f941bb.tar.gz |
* Partially cleaned up prototyping code from HJ.
* haifa-sched.c (haifa_classify_insn): Renamed from classify_insn.
All references changed.
* rtl.h: Protect from multiple inclusions. Add many prototypes.
* libgcc2.c (string.h): Hoist inclusion to occur before first use of
string functions like strlen.
More pending patches.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17024 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 10 | ||||
-rw-r--r-- | gcc/libgcc2.c | 3 | ||||
-rw-r--r-- | gcc/rtl.h | 343 |
4 files changed, 348 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8447f251a75..6bd20f8a592 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +Tue Dec 9 01:16:06 1997 Jeffrey A Law (law@cygnus.com) + + * Partially cleaned up prototyping code from HJ. + * haifa-sched.c (haifa_classify_insn): Renamed from classify_insn. + All references changed. + * rtl.h: Protect from multiple inclusions. Add many prototypes. + +Tue Dec 9 01:15:15 199 Fred Fish <fnf@ninemoons.com>7 + + * libgcc2.c (string.h): Hoist inclusion to occur before first use of + string functions like strlen. + Tue Dec 9 00:57:38 1997 Manfred Hollstein <manfred@s-direktnet.de> * configure.in: Check for functions getrlimit and setrlimit. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 59a1190ccb0..ab8fbc2d769 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -714,7 +714,7 @@ static int is_pfree PROTO ((rtx, int, int)); static int find_conditional_protection PROTO ((rtx, int)); static int is_conditionally_protected PROTO ((rtx, int, int)); static int may_trap_exp PROTO ((rtx, int)); -static int classify_insn PROTO ((rtx)); +static int haifa_classify_insn PROTO ((rtx)); static int is_exception_free PROTO ((rtx, int, int)); static char find_insn_mem_list PROTO ((rtx, rtx, rtx, rtx)); @@ -2558,7 +2558,7 @@ is_pfree (load_insn, bb_src, bb_trg) if (GET_MODE (fore_link) == VOIDmode) { /* found a DEF-USE dependence (insn1, insn2) */ - if (classify_insn (insn2) != PFREE_CANDIDATE) + if (haifa_classify_insn (insn2) != PFREE_CANDIDATE) /* insn2 not guaranteed to be a 1 base reg load */ continue; @@ -2659,7 +2659,7 @@ may_trap_exp (x, is_store) being either PFREE or PRISKY. */ static int -classify_insn (insn) +haifa_classify_insn (insn) rtx insn; { rtx pat = PATTERN (insn); @@ -2721,7 +2721,7 @@ classify_insn (insn) return insn_class; -} /* classify_insn */ +} /* haifa_classify_insn */ /* Return 1 if load_insn is prisky (i.e. if load_insn is fed by a load moved speculatively, or if load_insn is protected by @@ -2754,7 +2754,7 @@ is_exception_free (insn, bb_src, bb_trg) rtx insn; int bb_src, bb_trg; { - int insn_class = classify_insn (insn); + int insn_class = haifa_classify_insn (insn); /* handle non-load insns */ switch (insn_class) diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index dd54319615d..5a1273995aa 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -1446,6 +1446,7 @@ char *ctime (); #include "gbl-ctors.h" #include "gcov-io.h" +#include <string.h> static struct bb *bb_head; @@ -1723,8 +1724,6 @@ __bb_init_func (struct bb *blocks) #define MACHINE_STATE_RESTORE(ID) #endif -#include <string.h> - /* Number of buckets in hashtable of basic block addresses. */ #define BB_BUCKETS 311 diff --git a/gcc/rtl.h b/gcc/rtl.h index aa3ef9f47ba..47cc556ee8b 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -18,6 +18,8 @@ along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef _RTL_H +#define _RTL_H #include "machmode.h" @@ -662,9 +664,14 @@ extern char *note_insn_name[]; defined here and in tree.h. */ #ifndef exact_log2 -#define exact_log2(N) exact_log2_wide ((HOST_WIDE_INT) (N)) -#define floor_log2(N) floor_log2_wide ((HOST_WIDE_INT) (N)) +#define exact_log2(N) exact_log2_wide ((unsigned HOST_WIDE_INT) (N)) +#define floor_log2(N) floor_log2_wide ((unsigned HOST_WIDE_INT) (N)) #endif +extern int exact_log2_wide PROTO((unsigned HOST_WIDE_INT)); +extern int floor_log2_wide PROTO((unsigned HOST_WIDE_INT)); + +/* In expmed.c */ +extern int ceil_log2 PROTO((unsigned HOST_WIDE_INT)); #define plus_constant(X,C) plus_constant_wide (X, (HOST_WIDE_INT) (C)) @@ -676,7 +683,9 @@ extern rtx plus_constant_for_output_wide PROTO((rtx, HOST_WIDE_INT)); #define GEN_INT(N) gen_rtx (CONST_INT, VOIDmode, (HOST_WIDE_INT) (N)) -extern rtx bc_gen_rtx (); +struct bc_label; +extern rtx bc_gen_rtx PROTO ((char *, int, + struct bc_label *)); extern rtx gen_rtx PVPROTO((enum rtx_code, enum machine_mode, ...)); @@ -818,7 +827,7 @@ extern int side_effects_p PROTO((rtx)); extern int volatile_refs_p PROTO((rtx)); extern int volatile_insn_p PROTO((rtx)); extern void remove_note PROTO((rtx, rtx)); -extern void note_stores PROTO((rtx, void (*)())); +extern void note_stores PROTO((rtx, void (*) (rtx, rtx))); extern int refers_to_regno_p PROTO((int, int, rtx, rtx *)); extern int reg_overlap_mentioned_p PROTO((rtx, rtx)); extern rtx find_use_as_address PROTO((rtx, rtx, HOST_WIDE_INT)); @@ -860,6 +869,7 @@ extern int may_trap_p PROTO((rtx)); extern int inequality_comparison_p PROTO((rtx)); extern rtx replace_rtx PROTO((rtx, rtx, rtx)); extern rtx replace_regs PROTO((rtx, rtx *, int, int)); +extern int computed_jump_p PROTO((rtx)); /* Maximum number of parallel sets and clobbers in any insn in this fn. Always at least 3, since the combiner could put that many togetherm @@ -1016,12 +1026,319 @@ extern char *regno_pointer_align; extern int rtx_to_tree_code PROTO((enum rtx_code)); -extern int true_dependence PROTO((rtx, enum machine_mode, rtx, int (*)())); -extern int read_dependence PROTO((rtx, rtx)); -extern int anti_dependence PROTO((rtx, rtx)); -extern int output_dependence PROTO((rtx, rtx)); -extern void init_alias_analysis PROTO((void)); -extern void end_alias_analysis PROTO((void)); -extern void mark_user_reg PROTO((rtx)); -extern void mark_reg_pointer PROTO((rtx, int)); -extern int computed_jump_p PROTO((rtx)); +/* In rtlanal.c */ +extern int reg_set_p PROTO ((rtx, rtx)); +extern int reg_mentioned_p PROTO ((rtx, rtx)); +extern int reg_referenced_p PROTO ((rtx, rtx)); +extern int reg_used_between_p PROTO ((rtx, rtx, rtx)); +extern int reg_set_p PROTO ((rtx, rtx)); +extern int reg_referenced_between_p PROTO ((rtx, rtx, rtx)); +extern int reg_set_between_p PROTO ((rtx, rtx, rtx)); +extern int rtx_unstable_p PROTO ((rtx)); +extern int rtx_addr_varies_p PROTO ((rtx)); +extern int rtx_equal_p PROTO ((rtx, rtx)); +extern int inequality_comparisons_p PROTO ((rtx)); +extern int dead_or_set_p PROTO ((rtx, rtx)); +extern int dead_or_set_regno_p PROTO ((rtx, int)); +extern int no_labels_between_p PROTO ((rtx, rtx)); +extern int modified_between_p PROTO ((rtx, rtx, rtx)); +extern int modified_in_p PROTO ((rtx, rtx)); + +/* In tree.c */ +extern void obfree PROTO ((char *)); +struct obstack; +extern void gcc_obstack_init PROTO ((struct obstack *)); +extern void pop_obstacks PROTO ((void)); +extern void push_obstacks PROTO ((struct obstack *, + struct obstack *)); +#ifdef BUFSIZ +extern int read_skip_spaces PROTO ((FILE *)); +#endif + +/* In cse.c */ +struct cse_basic_block_data; +extern int rtx_cost PROTO ((rtx, enum rtx_code)); +extern void delete_dead_from_cse PROTO ((rtx, int)); +#ifdef BUFSIZ +extern int cse_main PROTO ((rtx, int, int, FILE *)); +#endif +extern void cse_end_of_basic_block PROTO ((rtx, + struct cse_basic_block_data *, + int, int, int)); + +/* In jump.c */ +extern int comparison_dominates_p PROTO ((enum rtx_code, enum rtx_code)); +extern int condjump_p PROTO ((rtx)); +extern int simplejump_p PROTO ((rtx)); +extern int sets_cc0_p PROTO ((rtx)); +extern int invert_jump PROTO ((rtx, rtx)); +extern int rtx_renumbered_equal_p PROTO ((rtx, rtx)); +extern int true_regnum PROTO ((rtx)); +extern int redirect_jump PROTO ((rtx, rtx)); +extern void jump_optimize PROTO ((rtx, int, int, int)); +extern void thread_jumps PROTO ((rtx, int, int)); +extern int redirect_exp PROTO ((rtx *, rtx, rtx, rtx)); +extern int rtx_equal_for_thread_p PROTO ((rtx, rtx, rtx)); +extern int invert_exp PROTO ((rtx, rtx)); +extern int can_reverse_comparison_p PROTO ((rtx, rtx)); +extern void delete_for_peephole PROTO ((rtx, rtx)); +extern int condjump_in_parallel_p PROTO ((rtx)); + +/* In emit-rtl.c. */ +extern int max_reg_num PROTO ((void)); +extern int max_label_num PROTO ((void)); +extern int get_first_label_num PROTO ((void)); +extern void delete_insns_since PROTO ((rtx)); +extern void mark_reg_pointer PROTO ((rtx, int)); +extern void mark_user_reg PROTO ((rtx)); +extern void reset_used_flags PROTO ((rtx)); +extern void reorder_insns PROTO ((rtx, rtx, rtx)); +extern int get_max_uid PROTO ((void)); +extern int in_sequence_p PROTO ((void)); +extern void force_next_line_note PROTO ((void)); +extern void init_emit PROTO ((void)); +extern void init_emit_once PROTO ((int)); +extern void push_topmost_sequence PROTO ((void)); +extern void pop_topmost_sequence PROTO ((void)); +extern int subreg_realpart_p PROTO ((rtx)); +extern void reverse_comparison PROTO ((rtx)); +extern void set_new_first_and_last_insn PROTO ((rtx, rtx)); +extern void set_new_first_and_last_label_num PROTO ((int, int)); +extern void unshare_all_rtl PROTO ((rtx)); +extern void set_last_insn PROTO ((rtx)); +extern void link_cc0_insns PROTO ((rtx)); +extern void add_insn PROTO ((rtx)); +extern void add_insn_before PROTO ((rtx, rtx)); +extern void add_insn_after PROTO ((rtx, rtx)); +extern void reorder_insns_with_line_notes PROTO ((rtx, rtx, rtx)); +extern void emit_insn_after_with_line_notes PROTO ((rtx, rtx, rtx)); +extern enum rtx_code classify_insn PROTO ((rtx)); +extern rtx emit PROTO ((rtx)); + +/* In insn-emit.c */ +extern void add_clobbers PROTO ((rtx, int)); + +/* In combine.c */ +extern void combine_instructions PROTO ((rtx, int)); +extern int extended_count PROTO ((rtx, enum machine_mode, int)); +extern rtx remove_death PROTO ((int, rtx)); +#ifdef BUFSIZ +extern void dump_combine_stats PROTO ((FILE *)); +extern void dump_combine_total_stats PROTO ((FILE *)); +#endif + +/* In sched.c. */ +#ifdef BUFSIZ +extern void schedule_insns PROTO ((FILE *)); +#endif + +/* In print-rtl.c */ +extern void debug_rtx PROTO ((rtx)); +extern void debug_rtx_list PROTO ((rtx, int)); +extern rtx debug_rtx_find PROTO ((rtx, int)); +#ifdef BUFSIZ +extern void print_rtl PROTO ((FILE *, rtx)); +extern void print_inline_rtx PROTO ((FILE *, rtx, int)); +#endif + +/* In loop.c */ +extern void init_loop PROTO ((void)); +#ifdef BUFSIZ +extern void loop_optimize PROTO ((rtx, FILE *, int)); +#endif +extern void record_excess_regs PROTO ((rtx, rtx, rtx *)); + +/* In function.c */ +extern void reposition_prologue_and_epilogue_notes PROTO ((rtx)); +extern void thread_prologue_and_epilogue_insns PROTO ((rtx)); +extern void use_variable PROTO ((rtx)); +extern HOST_WIDE_INT get_frame_size PROTO ((void)); +extern void preserve_rtl_expr_result PROTO ((rtx)); +extern void mark_temp_addr_taken PROTO ((rtx)); +extern void update_temp_slot_address PROTO ((rtx, rtx)); +extern void use_variable_after PROTO ((rtx, rtx)); + +/* In reload.c */ +extern int operands_match_p PROTO ((rtx, rtx)); +extern int safe_from_earlyclobber PROTO ((rtx, rtx)); +extern int strict_memory_address_p PROTO ((enum machine_mode, rtx)); + +/* In recog.c */ +extern int memory_address_p PROTO ((enum machine_mode, rtx)); +extern int constrain_operands PROTO ((int, int)); +extern int mode_dependent_address_p PROTO ((rtx)); +extern void init_recog_no_volatile PROTO ((void)); +extern int offsettable_memref_pq PROTO ((rtx)); +extern int offsettable_nonstrict_memref_p PROTO ((rtx)); +extern int reg_fits_class_p PROTO ((rtx, register enum reg_class, + int, enum machine_mode)); +extern int check_asm_operands PROTO ((rtx)); +extern int address_operand PROTO ((rtx, enum machine_mode)); +extern int const_int_operand PROTO ((rtx, enum machine_mode)); +extern int const_double_operand PROTO ((rtx, enum machine_mode)); +extern int general_operand PROTO ((rtx, enum machine_mode)); +extern int immediate_operand PROTO ((rtx, enum machine_mode)); +extern int nonimmediate_operand PROTO ((rtx, enum machine_mode)); +extern int memory_operand PROTO ((rtx, enum machine_mode)); +extern int nonmemory_operand PROTO ((rtx, enum machine_mode)); +extern int push_operand PROTO ((rtx, enum machine_mode)); +extern int register_operand PROTO ((rtx, enum machine_mode)); +extern int scratch_operand PROTO ((rtx, enum machine_mode)); +extern int indirect_operand PROTO ((rtx, enum machine_mode)); +extern int mode_independent_operand PROTO ((rtx, enum machine_mode)); +extern int comparison_operator PROTO ((rtx, enum machine_mode)); +extern void init_recog_no_volatile PROTO ((void)); +extern void init_recog PROTO ((void)); +extern int validate_replace_rtx PROTO ((rtx, rtx, rtx)); +extern int offsettable_address_p PROTO ((int, enum machine_mode, rtx)); +extern int next_insn_tests_no_inequality PROTO ((rtx)); +extern int recog_memoized PROTO ((rtx)); +extern int validate_change PROTO ((rtx, rtx *, rtx, int)); +extern int apply_change_group PROTO ((void)); +extern void cancel_changes PROTO ((int)); +extern int num_validated_changes PROTO ((void)); + +/* In insn-recog.c */ +extern int recog PROTO ((rtx, rtx, int *)); + +/* In stmt.c */ +extern void emit_jump PROTO ((rtx)); +extern int preserve_subexpressions_p PROTO ((void)); + +/* In expr.c */ +extern rtx bc_allocate_local PROTO ((int, int)); +extern void init_expr_once PROTO ((void)); + +/* In stupid.c */ +#ifdef BUFSIZ +extern void stupid_life_analysis PROTO ((rtx, int, FILE *)); +#endif + +/* In flow.c */ +extern void allocate_for_life_analysis PROTO ((void)); +#ifdef BUFSIZ +extern void dump_flow_info PROTO ((FILE *)); +#endif + +/* In expmed.c */ +extern void init_expmed PROTO ((void)); +extern void expand_inc PROTO ((rtx, rtx)); +extern void expand_dec PROTO ((rtx, rtx)); +extern rtx expand_mult_highpart PROTO ((enum machine_mode, rtx, + unsigned HOST_WIDE_INT, rtx, + int, int)); + +/* In toplev.c */ +extern void strip_off_ending PROTO ((char *, int)); +extern void print_time PROTO ((char *, int)); +extern int get_run_time PROTO ((void)); +#if 0 +extern void fatal PVPROTO ((char *, ...)); +extern void warning PVPROTO ((char *, ...)); +extern void error PVPROTO ((char *, ...)); +#endif +extern void pfatal_with_name PROTO ((char *)); +extern void fancy_abort PROTO ((void)); +extern int count_error PROTO ((int)); +extern void pedwarn PVPROTO ((char *, ...)); +extern void warning_for_asm PVPROTO ((rtx, char *, ...)); +extern void error_for_asm PVPROTO ((rtx, char *, ...)); + +/* In global.c */ +#ifdef BUFSIZ +extern int global_alloc PROTO ((FILE *)); +extern void dump_global_regs PROTO ((FILE *)); +#endif + +/* In regclass.c */ +extern void globalize_reg PROTO ((int)); +extern void init_regs PROTO ((void)); +extern void init_reg_sets PROTO ((void)); +extern void regset_release_memory PROTO ((void)); +extern void regclass_init PROTO ((void)); +extern void regclass PROTO ((rtx, int)); +extern void reg_scan PROTO ((rtx, int, int)); +extern void fix_register PROTO ((char *, int, int)); + +/* In optabs.c */ +extern void init_optabs PROTO ((void)); + +/* In local-alloc.c */ +#ifdef BUFSIZ +extern void dump_local_alloc PROTO ((FILE *)); +#endif +extern void local_alloc PROTO ((void)); + +/* In reload1.c */ +extern void reload_cse_regs PROTO ((rtx)); +extern void init_reload PROTO ((void)); +extern void mark_home_live PROTO ((int)); +#ifdef BUFSIZ +extern int reload PROTO ((rtx, int, FILE *)); +#endif + +/* In caller-save.c */ +extern void init_caller_save PROTO ((void)); + +/* In profile.c */ +extern void init_branch_prob PROTO ((char *)); + +/* In reg-stack.c */ +#ifdef BUFSIZ +extern void reg_to_stack PROTO ((rtx, FILE *)); +#endif +extern int stack_regs_mentioned_p PROTO ((rtx)); + +/* In fold-const.c */ +extern int add_double PROTO ((HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT *, HOST_WIDE_INT *)); +extern int neg_double PROTO ((HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT *, HOST_WIDE_INT *)); +extern int mul_double PROTO ((HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT *, HOST_WIDE_INT *)); +extern void lshift_double PROTO ((HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT, int, HOST_WIDE_INT *, + HOST_WIDE_INT *, int)); +extern void rshift_double PROTO ((HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT, int, + HOST_WIDE_INT *, HOST_WIDE_INT *, int)); +extern void lrotate_double PROTO ((HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT, int, HOST_WIDE_INT *, + HOST_WIDE_INT *)); +extern void rrotate_double PROTO ((HOST_WIDE_INT, HOST_WIDE_INT, + HOST_WIDE_INT, int, HOST_WIDE_INT *, + HOST_WIDE_INT *)); + +/* In calls.c */ +/* Emit library call. */ +extern void emit_library_call PVPROTO ((rtx, int, enum machine_mode, + int, ...)); +extern rtx emit_library_call_value PVPROTO((rtx, rtx, int, + enum machine_mode, + int, ...)); + +/* In unroll.c */ +extern int set_dominates_use PROTO ((int, int, int, rtx, rtx)); + +/* In varasm.c */ +extern void bss_section PROTO ((void)); +extern int in_data_section PROTO ((void)); +extern int supports_one_only PROTO ((void)); + +/* In rtl.c */ +extern void init_rtl PROTO ((void)); +extern void rtx_free PROTO ((rtx)); + +/* In alias.c */ +extern int true_dependence PROTO ((rtx, enum machine_mode, rtx, + int (*)(rtx))); +extern int read_dependence PROTO ((rtx, rtx)); +extern int anti_dependence PROTO ((rtx, rtx)); +extern int output_dependence PROTO ((rtx, rtx)); +extern void init_alias_analysis PROTO ((void)); +extern void end_alias_analysis PROTO ((void)); + +#endif /* _RTL_H */ + |