diff options
-rw-r--r-- | gcc/ChangeLog | 18 | ||||
-rw-r--r-- | gcc/c-lex.c | 1 | ||||
-rw-r--r-- | gcc/caller-save.c | 6 | ||||
-rw-r--r-- | gcc/cplus-dem.c | 9 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 4 | ||||
-rw-r--r-- | gcc/genattrtab.c | 2 | ||||
-rw-r--r-- | gcc/profile.c | 2 | ||||
-rw-r--r-- | gcc/rtl.h | 5 |
8 files changed, 38 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59ab3fd6200..16484890726 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,23 @@ Wed Apr 1 22:26:22 1998 Jeffrey A Law (law@cygnus.com) + * c-lex.c (yylex): Initialize traditional_type, ansi_type and type. + + * caller-save.c (insert_save_restore): Initialize pat, code and + numregs. + + * emit-rtl.c (push_to_sequence): Initialize top. + (push_topmost_sequence): Likewise. + + * genattrtab.c (simplify_by_exploding): Initialize defval. + + * profile.c (branch_prob): Initialize dest. + + * rtl.h (note_stores): Remove duplicate prototype. + (GEN_INT): Re-instate cast of second arg to HOST_WIDE_INT. + + * cplus-dem.c (gnu_special): Don't get confused by .<digits> + strings that are not actually lengths. + * genattrtab.c: Make generated file use system.h, instead of including stdio.h, etc directly. * genextract.c, genopinit.c, genoutput.c: Likewise. diff --git a/gcc/c-lex.c b/gcc/c-lex.c index d32f7a833b1..a9863aaf2fd 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -1674,6 +1674,7 @@ yylex () int spec_imag = 0; int bytes, warn, i; + traditional_type = ansi_type = type = NULL_TREE; while (1) { if (c == 'u' || c == 'U') diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 57dfbb8c91e..c808ecaeeea 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -640,9 +640,9 @@ insert_save_restore (insn, save_p, regno, insn_mode, maxrestore) enum machine_mode insn_mode; int maxrestore; { - rtx pat; - enum insn_code code; - int numregs; + rtx pat = NULL_RTX; + enum insn_code code = CODE_FOR_nothing; + int numregs = 0; /* A common failure mode if register status is not correct in the RTL is for this routine to be called with a REGNO we didn't expect to diff --git a/gcc/cplus-dem.c b/gcc/cplus-dem.c index 898ab4bd500..acdbfa897e2 100644 --- a/gcc/cplus-dem.c +++ b/gcc/cplus-dem.c @@ -1901,6 +1901,15 @@ gnu_special (work, mangled, declp) if (isdigit(*mangled[0])) { n = consume_count(mangled); + /* We may be seeing a too-large size, or else a + ".<digits>" indicating a static local symbol. In + any case, declare victory and move on; *don't* try + to use n to allocate. */ + if (n >= strlen (*mangled)) + { + success = 1; + break; + } } else { diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index e6c07aae1f2..54af3b8bc5b 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3112,7 +3112,7 @@ push_to_sequence (first) void push_topmost_sequence () { - struct sequence_stack *stack, *top; + struct sequence_stack *stack, *top = NULL; start_sequence (); @@ -3130,7 +3130,7 @@ push_topmost_sequence () void pop_topmost_sequence () { - struct sequence_stack *stack, *top; + struct sequence_stack *stack, *top = NULL; for (stack = sequence_stack; stack; stack = stack->next) top = stack; diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c index 040521b006d..0ddd2a8a141 100644 --- a/gcc/genattrtab.c +++ b/gcc/genattrtab.c @@ -3561,7 +3561,7 @@ static rtx simplify_by_exploding (exp) rtx exp; { - rtx list = 0, link, condexp, defval; + rtx list = 0, link, condexp, defval = NULL_RTX; struct dimension *space; rtx *condtest, *condval; int i, j, total, ndim = 0; diff --git a/gcc/profile.c b/gcc/profile.c index 7ce327b0761..bedeeaea02d 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -618,7 +618,7 @@ branch_prob (f, dump_file) register int i; int fall_through = 0; struct adj_list *arcptr; - int dest; + int dest = NULL_RTX; /* Block 0 always falls through to block 1. */ num_arcs = 0; diff --git a/gcc/rtl.h b/gcc/rtl.h index c78b9478258..f31d10de7a1 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -856,7 +856,6 @@ extern rtx single_set PROTO((rtx)); extern rtx find_last_value PROTO((rtx, rtx *, rtx)); extern int refers_to_regno_p PROTO((int, int, rtx, rtx *)); extern int reg_overlap_mentioned_p PROTO((rtx, rtx)); -extern void note_stores PROTO((rtx, void (*)())); extern rtx reg_set_last PROTO((rtx, rtx)); extern int rtx_equal_p PROTO((rtx, rtx)); extern int dead_or_set_p PROTO((rtx, rtx)); @@ -951,7 +950,9 @@ extern rtx static_chain_incoming_rtx; extern rtx gen_rtx_CONST_INT PROTO((enum machine_mode, HOST_WIDE_INT)); extern rtx gen_rtx_REG PROTO((enum machine_mode, int)); -#define GEN_INT(N) gen_rtx_CONST_INT (VOIDmode, (N)) +/* We need the cast here to ensure that we get the same result both with + and without prototypes. */ +#define GEN_INT(N) gen_rtx_CONST_INT (VOIDmode, (HOST_WIDE_INT) (N)) /* If HARD_FRAME_POINTER_REGNUM is defined, then a special dummy reg |