diff options
-rw-r--r-- | gcc/ChangeLog | 31 | ||||
-rw-r--r-- | gcc/collect2.c | 16 | ||||
-rw-r--r-- | gcc/flow.c | 22 | ||||
-rw-r--r-- | gcc/loop.c | 28 | ||||
-rw-r--r-- | gcc/reload.c | 17 | ||||
-rw-r--r-- | gcc/reload1.c | 11 |
6 files changed, 90 insertions, 35 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ba253bc726..2bba07cb8a7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,34 @@ +Wed Oct 6 10:41:56 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * collect2.c (scan_prog_file, scan_libraries): Prototype function + pointers and casts for `int_handler' and `quit_handler'. + + * flow.c (verify_flow_info, split_hard_reg_notes, + find_insn_with_note, sets_reg_or_subreg_1, prepend_reg_notes, + remove_edge, remove_fake_successors): Add static prototypes. + (verify_flow_info): Wrap with macro ENABLE_CHECKING. + (mark_set_1): Initialize variable `regno'. + (unlink_insn_chain): Likewise for variable `curr'. + (remove_fake_edges): Remove unused variables `e', `tmp' and `last'. + + * loop.c (strength_reduce): Initialize variable + `unrolled_insn_copies'. + (cmp_combine_givs_stats, cmp_recombine_givs_stats): Add static + prototypes. Change these functions to take const PTR parameters + to avoid prototype conflict when used as the comparson argument + for qsort. + (check_dbra_loop): Initialize variable `comparison_val'. + + * reload.c (debug_reload_to_stream, debug_reload): Add prototypes. + (get_secondary_mem): Mark parameter `x' with ATTRIBUTE_UNUSED. + (find_valid_class): Initialize variable `best_class'. + (find_reloads): Call memcpy, not bcopy. + + * reload1.c (gen_mode_int, dump_needs): Add prototypes. + (hard_reg_use_compare): Don't needlessly cast away const. + (reload_reg_class_lower): Likewise. + (choose_reload_regs): Initialize variable `regno'. + Tue Oct 5 16:34:12 1999 Paul Burchard <burchard@pobox.com> * ggc-page.c (GGC_ALWAYS_COLLECT): Fix typo when undef'ing. diff --git a/gcc/collect2.c b/gcc/collect2.c index 2e3d3b1929a..de2976e59b5 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -2094,8 +2094,8 @@ scan_prog_file (prog_name, which_pass) const char *prog_name; enum pass which_pass; { - void (*int_handler) (); - void (*quit_handler) (); + void (*int_handler) PROTO ((int)); + void (*quit_handler) PROTO ((int)); char *real_nm_argv[4]; const char **nm_argv = (const char **) real_nm_argv; int pid; @@ -2162,9 +2162,9 @@ scan_prog_file (prog_name, which_pass) } /* Parent context from here on. */ - int_handler = (void (*) ())signal (SIGINT, SIG_IGN); + int_handler = (void (*) PROTO ((int))) signal (SIGINT, SIG_IGN); #ifdef SIGQUIT - quit_handler = (void (*) ())signal (SIGQUIT, SIG_IGN); + quit_handler = (void (*) PROTO ((int))) signal (SIGQUIT, SIG_IGN); #endif if (close (pipe_fd[1]) < 0) @@ -2539,8 +2539,8 @@ scan_libraries (prog_name) { static struct head libraries; /* list of shared libraries found */ struct id *list; - void (*int_handler) (); - void (*quit_handler) (); + void (*int_handler) PROTO ((int)); + void (*quit_handler) PROTO ((int)); char *real_ldd_argv[4]; const char **ldd_argv = (const char **) real_ldd_argv; int pid; @@ -2604,9 +2604,9 @@ scan_libraries (prog_name) } /* Parent context from here on. */ - int_handler = (void (*) ()) signal (SIGINT, SIG_IGN); + int_handler = (void (*) PROTO ((int))) signal (SIGINT, SIG_IGN); #ifdef SIGQUIT - quit_handler = (void (*) ()) signal (SIGQUIT, SIG_IGN); + quit_handler = (void (*) PROTO ((int))) signal (SIGQUIT, SIG_IGN); #endif if (close (pipe_fd[1]) < 0) diff --git a/gcc/flow.c b/gcc/flow.c index 5e2ec614810..8dbc07e0a5e 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -354,7 +354,15 @@ static int maybe_add_dead_note PROTO ((rtx, rtx, rtx)); static int sets_reg_or_subreg PROTO ((rtx, rtx)); static void update_n_sets PROTO ((rtx, int)); static void new_insn_dead_notes PROTO ((rtx, rtx, rtx, rtx, rtx, rtx)); -void verify_flow_info PROTO ((void)); +#ifdef ENABLE_CHECKING +static void verify_flow_info PROTO ((void)); +#endif +static void split_hard_reg_notes PROTO ((rtx, rtx, rtx, rtx)); +static rtx find_insn_with_note PROTO ((rtx, rtx, rtx)); +static void sets_reg_or_subreg_1 PROTO ((rtx, rtx)); +static rtx prepend_reg_notes PROTO ((rtx, rtx)); +static void remove_edge PROTO ((edge)); +static void remove_fake_successors PROTO ((basic_block)); /* Find basic blocks of the current function. F is the first insn of the function and NREGS the number of register @@ -3529,7 +3537,7 @@ mark_set_1 (needed, dead, x, insn, significant) rtx insn; regset significant; { - register int regno; + register int regno = -1; register rtx reg = SET_DEST (x); /* Some targets place small structures in registers for @@ -5419,7 +5427,7 @@ unlink_insn_chain (start, finish) rtx start, finish; { rtx insert_point = PREV_INSN (start); - rtx chain = NULL_RTX, curr; + rtx chain = NULL_RTX, curr = NULL_RTX; /* Unchain the insns one by one. It would be quicker to delete all of these with a single unchaining, rather than one at a time, but @@ -5625,7 +5633,7 @@ maybe_add_dead_note_use (insn, dest) /* Find the first insn in the set of insns from FIRST to LAST inclusive that contains the note NOTE. */ -rtx +static rtx find_insn_with_note (note, first, last) rtx note, first, last; { @@ -6472,7 +6480,8 @@ replace_insns (first, last, first_new, notes) In future it can be extended check a lot of other stuff as well (reachability of basic blocks, life information, etc. etc.). */ -void +#ifdef ENABLE_CHECKING +static void verify_flow_info () { const int max_uid = get_max_uid (); @@ -6675,6 +6684,7 @@ verify_flow_info () x = NEXT_INSN (x); } } +#endif /* Functions to access an edge list with a vector representation. Enough data is kept such that given an index number, the @@ -6998,12 +7008,10 @@ void remove_fake_edges () { int x; - edge e; basic_block bb; for (x = 0; x < n_basic_blocks; x++) { - edge tmp, last = NULL; bb = BASIC_BLOCK (x); remove_fake_successors (bb); } diff --git a/gcc/loop.c b/gcc/loop.c index 32ac1752ced..40ed922a783 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -3714,7 +3714,7 @@ strength_reduce (scan_start, end, loop_top, insn_count, rtx end_insert_before; int loop_depth = 0; int n_extra_increment; - int unrolled_insn_copies; + int unrolled_insn_copies = 0; /* If scan_start points to the loop exit test, we have to be wary of subversive use of gotos inside expression statements. */ @@ -6268,8 +6268,10 @@ general_induction_var (x, src_reg, add_val, mult_val, is_addr, pbenefit) *BENEFIT will be incremented by the benefit of any sub-giv encountered. */ -static rtx sge_plus PROTO ((enum machine_mode, rtx, rtx)); -static rtx sge_plus_constant PROTO ((rtx, rtx)); +static rtx sge_plus PARAMS ((enum machine_mode, rtx, rtx)); +static rtx sge_plus_constant PARAMS ((rtx, rtx)); +static int cmp_combine_givs_stats PARAMS ((const PTR, const PTR)); +static int cmp_recombine_givs_stats PARAMS ((const PTR, const PTR)); static rtx simplify_giv_expr (x, benefit) @@ -7015,9 +7017,14 @@ struct combine_givs_stats }; static int -cmp_combine_givs_stats (x, y) - struct combine_givs_stats *x, *y; +cmp_combine_givs_stats (xp, yp) + const PTR xp; + const PTR yp; { + const struct combine_givs_stats * const x = + (const struct combine_givs_stats *) xp; + const struct combine_givs_stats * const y = + (const struct combine_givs_stats *) yp; int d; d = y->total_benefit - x->total_benefit; /* Stabilize the sort. */ @@ -7202,9 +7209,14 @@ struct recombine_givs_stats when scanning the array starting at the end, thus the arguments are used in reverse. */ static int -cmp_recombine_givs_stats (x, y) - struct recombine_givs_stats *x, *y; +cmp_recombine_givs_stats (xp, yp) + const PTR xp; + const PTR yp; { + const struct recombine_givs_stats * const x = + (const struct recombine_givs_stats *) xp; + const struct recombine_givs_stats * const y = + (const struct recombine_givs_stats *) yp; int d; d = y->start_luid - x->start_luid; /* Stabilize the sort. */ @@ -7994,7 +8006,7 @@ check_dbra_loop (loop_end, insn_count, loop_start, loop_info) || (GET_CODE (comparison) == LE && no_use_except_counting))) { - HOST_WIDE_INT add_val, add_adjust, comparison_val; + HOST_WIDE_INT add_val, add_adjust, comparison_val = 0; rtx initial_value, comparison_value; int nonneg = 0; enum rtx_code cmp_code; diff --git a/gcc/reload.c b/gcc/reload.c index 6ca7322806e..011d0a904e1 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -272,6 +272,8 @@ static rtx find_reloads_subreg_address PROTO((rtx, int, int, enum reload_type, int, rtx)); static int find_inc_amount PROTO((rtx, rtx)); static int loc_mentioned_in_p PROTO((rtx *, rtx)); +extern void debug_reload_to_stream PROTO((FILE *)); +extern void debug_reload PROTO((void)); #ifdef HAVE_SECONDARY_RELOADS @@ -571,7 +573,7 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode, rtx get_secondary_mem (x, mode, opnum, type) - rtx x; + rtx x ATTRIBUTE_UNUSED; enum machine_mode mode; int opnum; enum reload_type type; @@ -658,7 +660,7 @@ find_valid_class (m1, n) { int class; int regno; - enum reg_class best_class; + enum reg_class best_class = NO_REGS; int best_size = 0; for (class = 1; class < N_REG_CLASSES; class++) @@ -2452,10 +2454,9 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) insn_code_number = INSN_CODE (insn); this_insn_is_asm = insn_code_number < 0; - bcopy ((char *) recog_data.operand_mode, (char *) operand_mode, - noperands * sizeof (enum machine_mode)); - bcopy ((char *) recog_data.constraints, (char *) constraints, - noperands * sizeof (char *)); + memcpy (operand_mode, recog_data.operand_mode, + noperands * sizeof (enum machine_mode)); + memcpy (constraints, recog_data.constraints, noperands * sizeof (char *)); commutative = -1; @@ -3433,8 +3434,8 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) pref_or_nothing[commutative] = pref_or_nothing[commutative + 1]; pref_or_nothing[commutative + 1] = t; - bcopy ((char *) recog_data.constraints, (char *) constraints, - noperands * sizeof (char *)); + memcpy (constraints, recog_data.constraints, + noperands * sizeof (char *)); goto try_swapped; } else diff --git a/gcc/reload1.c b/gcc/reload1.c index 873dd3bda94..caa7c1048ec 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -449,6 +449,9 @@ static void move2add_note_store PROTO((rtx, rtx)); #ifdef AUTO_INC_DEC static void add_auto_inc_notes PROTO((rtx, rtx)); #endif +static rtx gen_mode_int PROTO((enum machine_mode, + HOST_WIDE_INT)); +extern void dump_needs PROTO((struct insn_chain *, FILE *)); /* Initialize the reload pass once per compilation. */ @@ -4023,8 +4026,8 @@ hard_reg_use_compare (p1p, p2p) const PTR p1p; const PTR p2p; { - struct hard_reg_n_uses *p1 = (struct hard_reg_n_uses *)p1p; - struct hard_reg_n_uses *p2 = (struct hard_reg_n_uses *)p2p; + const struct hard_reg_n_uses *p1 = (const struct hard_reg_n_uses *)p1p; + const struct hard_reg_n_uses *p2 = (const struct hard_reg_n_uses *)p2p; int bad1 = TEST_HARD_REG_BIT (bad_spill_regs, p1->regno); int bad2 = TEST_HARD_REG_BIT (bad_spill_regs, p2->regno); if (bad1 && bad2) @@ -4519,7 +4522,7 @@ reload_reg_class_lower (r1p, r2p) const PTR r1p; const PTR r2p; { - register int r1 = *(short *)r1p, r2 = *(short *)r2p; + register int r1 = *(const short *)r1p, r2 = *(const short *)r2p; register int t; /* Consider required reloads before optional ones. */ @@ -6014,7 +6017,7 @@ choose_reload_regs (chain) register rtx equiv = find_equiv_reg (search_equiv, insn, rld[r].class, -1, NULL_PTR, 0, reload_mode[r]); - int regno; + int regno = 0; if (equiv != 0) { |