summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog18
-rw-r--r--gcc/c-lex.c1
-rw-r--r--gcc/caller-save.c6
-rw-r--r--gcc/cplus-dem.c9
-rw-r--r--gcc/emit-rtl.c4
-rw-r--r--gcc/genattrtab.c2
-rw-r--r--gcc/profile.c2
-rw-r--r--gcc/rtl.h5
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