summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog31
-rw-r--r--gcc/collect2.c16
-rw-r--r--gcc/flow.c22
-rw-r--r--gcc/loop.c28
-rw-r--r--gcc/reload.c17
-rw-r--r--gcc/reload1.c11
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)
{