[gnu.gcc.bug] gcc-1.36 patches missing/incorrect function declarations

rusty@GARNET.BERKELEY.EDU (12/08/89)

Here are patches for fixing missing and in some cases incorrect
function declarations.  I did this last night when I woke up and
couldn't get back to sleep; I just compiled gcc on a sparcstation with
gcc -Wreturn-type and then eyeballed the warnings and fixed the code
as necessary.  This is simple (although tedious) enough that it seems
to me that this ought to be done before each release of gcc.

I couldn't make the warnings go away completely because gcc doesn't
recognize the /* NOTREACHED */ comment.

diff -r -c gcc-1.36-old/c-decl.c gcc-1.36/c-decl.c
*** gcc-1.36-old/c-decl.c	Wed Sep  6 13:32:06 1989
--- gcc-1.36/c-decl.c	Thu Dec  7 02:09:14 1989
***************
*** 353,358 ****
--- 353,360 ----
  #endif
  int dollars_in_ident = DOLLARS_IN_IDENTIFIERS;
  
+ extern char in_parm_level_p ();
+ 
  char *language_string = "GNU C";
  
  /* Decode the string P as a language-specific option.
***************
*** 453,458 ****
--- 455,461 ----
  
  /* Nonzero if currently making parm declarations.  */
  
+ char
  in_parm_level_p ()
  {
    return current_binding_level->parm_flag;
diff -r -c gcc-1.36-old/c-typeck.c gcc-1.36/c-typeck.c
*** gcc-1.36-old/c-typeck.c	Thu Aug 24 14:44:57 1989
--- gcc-1.36/c-typeck.c	Thu Dec  7 02:09:48 1989
***************
*** 561,566 ****
--- 561,567 ----
    if (mode == TYPE_MODE (long_double_type_node))
      return long_double_type_node;
    abort ();
+   /* NOTREACHED */
  }
  
  tree
diff -r -c gcc-1.36-old/caller-save.c gcc-1.36/caller-save.c
*** gcc-1.36-old/caller-save.c	Wed Feb 22 08:50:12 1989
--- gcc-1.36/caller-save.c	Thu Dec  7 02:22:24 1989
***************
*** 50,55 ****
--- 50,56 ----
  
  /* Find the places where hard regs are live across calls and save them.  */
  
+ void
  save_call_clobbered_regs ()
  {
    rtx insn;
***************
*** 353,356 ****
--- 354,358 ----
      return HImode;
    else
      abort ();
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/cccp.c gcc-1.36/cccp.c
*** gcc-1.36-old/cccp.c	Mon Sep 11 20:43:13 1989
--- gcc-1.36/cccp.c	Thu Dec  7 03:26:03 1989
***************
*** 91,100 ****
  struct arglist;
  struct argdata;
  
! int do_define (), do_line (), do_include (), do_undef (), do_error (),
    do_pragma (), do_if (), do_xifdef (), do_else (),
    do_elif (), do_endif (), do_sccs (), do_once ();
  
  struct hashnode *install ();
  struct hashnode *lookup ();
  
--- 91,107 ----
  struct arglist;
  struct argdata;
  
! int do_define ();
! 
! void do_line (), do_include (), do_undef (), do_error (),
    do_pragma (), do_if (), do_xifdef (), do_else (),
    do_elif (), do_endif (), do_sccs (), do_once ();
  
+ void deps_output (), make_undef (), make_definition (),
+   initialize_builtins (), initialize_char_syntax (), dump_arg_n (),
+   dump_defn_1 (), delete_macro (), trigraph_pcp (), rescan (), finclude (),
+   validate_else ();
+ 
  struct hashnode *install ();
  struct hashnode *lookup ();
  
***************
*** 109,115 ****
  /* Last arg to output_line_command.  */
  enum file_change_code {same_file, enter_file, leave_file};
  
! int grow_outbuf ();
  int handle_directive ();
  void memory_full ();
  
--- 116,122 ----
  /* Last arg to output_line_command.  */
  enum file_change_code {same_file, enter_file, leave_file};
  
! void grow_outbuf ();
  int handle_directive ();
  void memory_full ();
  
***************
*** 429,449 ****
  /* Here is the actual list of #-directives, most-often-used first.  */
  
  struct directive directive_table[] = {
!   {  6, do_define, "define", T_DEFINE, 0, 1},
!   {  2, do_if, "if", T_IF},
!   {  5, do_xifdef, "ifdef", T_IFDEF},
!   {  6, do_xifdef, "ifndef", T_IFNDEF},
!   {  5, do_endif, "endif", T_ENDIF},
!   {  4, do_else, "else", T_ELSE},
!   {  4, do_elif, "elif", T_ELIF},
!   {  4, do_line, "line", T_LINE},
!   {  7, do_include, "include", T_INCLUDE, 1},
!   {  5, do_undef, "undef", T_UNDEF},
!   {  5, do_error, "error", T_ERROR},
  #ifdef SCCS_DIRECTIVE
!   {  4, do_sccs, "sccs", T_SCCS},
  #endif
!   {  6, do_pragma, "pragma", T_PRAGMA, 0, 0, 1},
    {  -1, 0, "", T_UNUSED},
  };
  
--- 436,456 ----
  /* Here is the actual list of #-directives, most-often-used first.  */
  
  struct directive directive_table[] = {
!   {  6, (int (*)()) do_define, "define", T_DEFINE, 0, 1},
!   {  2, (int (*)()) do_if, "if", T_IF},
!   {  5, (int (*)()) do_xifdef, "ifdef", T_IFDEF},
!   {  6, (int (*)()) do_xifdef, "ifndef", T_IFNDEF},
!   {  5, (int (*)()) do_endif, "endif", T_ENDIF},
!   {  4, (int (*)()) do_else, "else", T_ELSE},
!   {  4, (int (*)()) do_elif, "elif", T_ELIF},
!   {  4, (int (*)()) do_line, "line", T_LINE},
!   {  7, (int (*)()) do_include, "include", T_INCLUDE, 1},
!   {  5, (int (*)()) do_undef, "undef", T_UNDEF},
!   {  5, (int (*)()) do_error, "error", T_ERROR},
  #ifdef SCCS_DIRECTIVE
!   {  4, (int (*)()) do_sccs, "sccs", T_SCCS},
  #endif
!   {  6, (int (*)()) do_pragma, "pragma", T_PRAGMA, 0, 0, 1},
    {  -1, 0, "", T_UNUSED},
  };
  
***************
*** 1054,1059 ****
--- 1061,1067 ----
  
   perror:
    pfatal_with_name (in_fname);
+  /* NOTREACHED */
  }
  
  /* Pre-C-Preprocessor to translate ANSI trigraph idiocy in BUF
***************
*** 1065,1070 ****
--- 1073,1079 ----
     strings, etc. everywhere, and also makes sure that trigraphs are
     only translated in the top level of processing. */
  
+ void
  trigraph_pcp (buf)
       FILE_BUF *buf;
  {
***************
*** 1134,1139 ****
--- 1143,1149 ----
     (because a backslash-newline inside a comment delimiter
     would cause it not to be recognized).  */
  
+ void
  newline_fix (bp)
       U_CHAR *bp;
  {
***************
*** 1169,1174 ****
--- 1179,1185 ----
  /* Like newline_fix but for use within a directive-name.
     Move any backslash-newlines up past any following symbol constituents.  */
  
+ void
  name_newline_fix (bp)
       U_CHAR *bp;
  {
***************
*** 1237,1242 ****
--- 1248,1254 ----
   * explicitly, and before RECACHE, since RECACHE uses OBP.
   */
  
+ void
  rescan (op, output_marks)
       FILE_BUF *op;
       int output_marks;
***************
*** 2297,2302 ****
--- 2309,2315 ----
   * expand things like __FILE__.  Place the expansion into the output
   * buffer *without* rescanning.
   */
+ void
  special_symbol (hp, op)
       HASHNODE *hp;
       FILE_BUF *op;
***************
*** 2431,2436 ****
--- 2444,2450 ----
   * Expects to see "fname" or <fname> on the input.
   */
  
+ void
  do_include (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 2644,2649 ****
--- 2658,2664 ----
  /* Process the contents of include file FNAME, already open on descriptor F,
     with output to OP.  */
  
+ void
  finclude (f, fname, op)
       int f;
       char *fname;
***************
*** 2763,2768 ****
--- 2778,2784 ----
  LIMIT points to the first character past the end of the definition.
  KEYWORD is the keyword-table entry for #define.  */
  
+ int
  do_define (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 2940,2945 ****
--- 2956,2962 ----
     LAST means these parts are the last of a macro definition;
      so ignore trailing whitespace entirely.  */
  
+ int
  comp_def_part (first, beg1, len1, beg2, len2, last)
       int first;
       U_CHAR *beg1, *beg2;
***************
*** 3236,3241 ****
--- 3253,3259 ----
   */
  #define FNAME_HASHSIZE 37
  
+ void
  do_line (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3344,3349 ****
--- 3362,3368 ----
   * according to un*x /lib/cpp, it is not an error to undef
   * something that has no definitions, so it isn't one here either.
   */
+ void
  do_undef (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3365,3370 ****
--- 3384,3390 ----
   * Use the text of the line in the error message, then terminate.
   * (We use error() because it prints the filename & line#.)
   */
+ void
  do_error (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3382,3387 ****
--- 3402,3408 ----
  /* Remember the name of the current file being read from so that we can
     avoid ever including it again.  */
  
+ void
  do_once ()
  {
    int i;
***************
*** 3407,3412 ****
--- 3428,3434 ----
  /* #pragma and its argument line have already been copied to the output file.
     Here just check for recognized pragmas.  */
  
+ void
  do_pragma (buf, limit)
       U_CHAR *buf, *limit;
  {
***************
*** 3442,3447 ****
--- 3464,3470 ----
  #endif
  
  /* Just ignore #sccs, on systems where we define it at all.  */
+ void
  do_sccs ()
  {
    if (pedantic)
***************
*** 3461,3466 ****
--- 3484,3490 ----
   *      or not, depending on the value from step 3.
   */
  
+ void
  do_if (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3478,3483 ****
--- 3502,3508 ----
   * see the comment above do_else.
   */
  
+ void
  do_elif (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3543,3548 ****
--- 3568,3574 ----
   * then do or don't skip to the #endif/#else/#elif depending
   * on what directive is actually being processed.
   */
+ void
  do_xifdef (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3772,3777 ****
--- 3798,3804 ----
   * for missing #endif's etc. will point to the original #if.  It
   * is possible that something different would be better.
   */
+ void
  do_else (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3810,3815 ****
--- 3837,3843 ----
  /*
   * unstack after #endif command
   */
+ void
  do_endif (buf, limit, op, keyword)
       U_CHAR *buf, *limit;
       FILE_BUF *op;
***************
*** 3835,3840 ****
--- 3863,3869 ----
     if -pedantic was specified, this is called to warn about text after
     the command name.  P points to the first char after the command name.  */
  
+ void
  validate_else (p)
       register U_CHAR *p;
  {
***************
*** 4686,4691 ****
--- 4715,4721 ----
  /*
   * error - print error message and increment count of errors.
   */
+ int
  error (msg, arg1, arg2, arg3)
       char *msg;
  {
***************
*** 4708,4713 ****
--- 4738,4744 ----
  
  /* Error including a message from `errno'.  */
  
+ int
  error_from_errno (name)
       char *name;
  {
***************
*** 4736,4741 ****
--- 4767,4773 ----
  
  /* Print error message but don't count it.  */
  
+ int
  warning (msg, arg1, arg2, arg3)
       char *msg;
  {
***************
*** 4756,4761 ****
--- 4788,4794 ----
    return 0;
  }
  
+ int
  error_with_line (line, msg, arg1, arg2, arg3)
       int line;
       char *msg;
***************
*** 4799,4804 ****
--- 4832,4838 ----
        return 0;
      line1 = instack[i].lineno;
    }
+   abort();
  }
  
  /*
***************
*** 4810,4816 ****
   * should work ok.
   */
  
! int
  grow_outbuf (obuf, needed)
       register FILE_BUF *obuf;
       register int needed;
--- 4844,4850 ----
   * should work ok.
   */
  
! void
  grow_outbuf (obuf, needed)
       register FILE_BUF *obuf;
       register int needed;
***************
*** 4945,4950 ****
--- 4979,4985 ----
     in the middle of reading the arguments to a call to it.
     If #undef freed the DEFINITION, that would crash.  */
  
+ void
  delete_macro (hp)
       HASHNODE *hp;
  {
***************
*** 5058,5063 ****
--- 5093,5099 ----
     Discard newlines outside of strings, thus
     converting funny-space markers to ordinary spaces.  */
  
+ void
  dump_defn_1 (base, start, length)
       U_CHAR *base;
       int start;
***************
*** 5082,5087 ****
--- 5118,5124 ----
     Recall that DEFN->argnames contains all the arg names
     concatenated in reverse order with comma-space in between.  */
  
+ void
  dump_arg_n (defn, argnum)
       DEFINITION *defn;
       int argnum;
***************
*** 5100,5105 ****
--- 5137,5143 ----
  
  /* Initialize syntactic classifications of characters.  */
  
+ void
  initialize_char_syntax ()
  {
    register int i;
***************
*** 5138,5143 ****
--- 5176,5182 ----
  
  /* Initialize the built-in macros.  */
  
+ void
  initialize_builtins ()
  {
    install ("__LINE__", -1, T_SPECLINE, 0, -1);
***************
*** 5160,5165 ****
--- 5199,5205 ----
   * If STR has anything after the identifier, then it should
   * be identifier-space-definition.
   */
+ void
  make_definition (str)
       U_CHAR *str;
  {
***************
*** 5196,5201 ****
--- 5236,5242 ----
  }
  
  /* JF, this does the work for the -U option */
+ void
  make_undef (str)
       U_CHAR *str;
  {
***************
*** 5224,5229 ****
--- 5265,5271 ----
     SIZE is the number of bytes, or 0 meaning output until a null.
     If SIZE is nonzero, we break the line first, if it is long enough.  */
  
+ void
  deps_output (string, size)
       char *string;
       int size;
Common subdirectories: gcc-1.36-old/config and gcc-1.36/config
diff -r -c gcc-1.36-old/emit-rtl.c gcc-1.36/emit-rtl.c
*** gcc-1.36-old/emit-rtl.c	Wed Sep 20 21:33:11 1989
--- gcc-1.36/emit-rtl.c	Thu Dec  7 02:17:43 1989
***************
*** 410,415 ****
--- 410,416 ----
      }
    else
      abort ();
+   /* NOTREACHED */
  }
  
  /* Like `gen_lowpart', but refer to the most significant part.  */
***************
*** 449,454 ****
--- 450,456 ----
      }
    else
      abort ();
+   /* NOTREACHED */
  }
  
  /* Return 1 iff X, assumed to be a SUBREG,
***************
*** 1093,1099 ****
  
  /* Emit the insns in a chain starting with INSN.  */
  
! rtx
  emit_insns (insn)
       rtx insn;
  {
--- 1095,1101 ----
  
  /* Emit the insns in a chain starting with INSN.  */
  
! void
  emit_insns (insn)
       rtx insn;
  {
diff -r -c gcc-1.36-old/explow.c gcc-1.36/explow.c
*** gcc-1.36-old/explow.c	Sun Aug 20 11:23:34 1989
--- gcc-1.36/explow.c	Thu Dec  7 02:59:14 1989
***************
*** 166,171 ****
--- 166,172 ----
       rtx context;
  {
    abort ();
+   /* NOTREACHED */
  }
  
  /* Return a copy of X in which all memory references
diff -r -c gcc-1.36-old/expr.c gcc-1.36/expr.c
*** gcc-1.36-old/expr.c	Sun Sep 17 22:52:16 1989
--- gcc-1.36/expr.c	Thu Dec  7 02:14:51 1989
***************
*** 1089,1094 ****
--- 1089,1095 ----
  #endif
    else
      abort ();
+   /* NOTREACHED */
  }
  
  /* Pushing data onto the stack.  */
***************
*** 3386,3391 ****
--- 3387,3393 ----
      default:
        abort ();
      }
+   /* NOTREACHED */
  }
  
  /* Expand code for a post- or pre- increment or decrement
diff -r -c gcc-1.36-old/gcc.c gcc-1.36/gcc.c
*** gcc-1.36-old/gcc.c	Sun Sep 17 13:51:58 1989
--- gcc-1.36/gcc.c	Thu Dec  7 02:04:01 1989
***************
*** 137,142 ****
--- 137,148 ----
  #define obstack_chunk_free free
  extern int xmalloc ();
  extern void free ();
+ extern void give_switch ();
+ extern void pfatal_with_name ();
+ extern void perror_with_name ();
+ extern void perror_exec ();
+ extern void fatal ();
+ extern void error ();
  
  /* If a stage of compilation returns an exit status >= 1,
     compilation of that file ceases.  */
***************
*** 740,745 ****
--- 746,752 ----
        /* Return child's process number.  */
        return pid;
      }
+     /* NOTREACHED */
  }
  
  /* Execute the command specified by the arguments on the current line of spec.
***************
*** 1442,1447 ****
--- 1449,1455 ----
     the vector of switches gcc received, which is `switches'.
     This cannot fail since it never finishes a command line.  */
  
+ void
  give_switch (switchnum)
       int switchnum;
  {
***************
*** 1796,1803 ****
--- 1804,1813 ----
    delete_temp_files ();
  
    exit (error_count);
+   /* NOTREACHED */
  }
  
+ int
  xmalloc (size)
       int size;
  {
***************
*** 1807,1812 ****
--- 1817,1823 ----
    return value;
  }
  
+ int
  xrealloc (ptr, size)
       int ptr, size;
  {
***************
*** 1845,1850 ****
--- 1856,1862 ----
    return result;
  }
  
+ void
  pfatal_with_name (name)
       char *name;
  {
***************
*** 1859,1864 ****
--- 1871,1877 ----
    fatal (s, name);
  }
  
+ void
  perror_with_name (name)
       char *name;
  {
***************
*** 1873,1878 ****
--- 1886,1892 ----
    error (s, name);
  }
  
+ void
  perror_exec (name)
       char *name;
  {
***************
*** 1917,1922 ****
--- 1931,1937 ----
    exit (1);
  }  
  
+ void
  error (va_alist) 
       va_dcl
  {
***************
*** 1934,1939 ****
--- 1949,1955 ----
  
  #else /* not HAVE_VPRINTF */
  
+ void
  fatal (msg, arg1, arg2)
       char *msg, *arg1, *arg2;
  {
***************
*** 1942,1947 ****
--- 1958,1964 ----
    exit (1);
  }
  
+ void
  error (msg, arg1, arg2)
       char *msg, *arg1, *arg2;
  {
diff -r -c gcc-1.36-old/gencodes.c gcc-1.36/gencodes.c
*** gcc-1.36-old/gencodes.c	Thu Sep  7 20:17:44 1989
--- gcc-1.36/gencodes.c	Thu Dec  7 02:12:09 1989
***************
*** 151,154 ****
--- 151,155 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/genconfig.c gcc-1.36/genconfig.c
*** gcc-1.36-old/genconfig.c	Thu Sep  7 20:17:57 1989
--- gcc-1.36/genconfig.c	Thu Dec  7 02:12:40 1989
***************
*** 264,267 ****
--- 264,268 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/genemit.c gcc-1.36/genemit.c
*** gcc-1.36-old/genemit.c	Thu Sep  7 20:18:12 1989
--- gcc-1.36/genemit.c	Thu Dec  7 02:18:17 1989
***************
*** 477,480 ****
--- 477,481 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/genextract.c gcc-1.36/genextract.c
*** gcc-1.36-old/genextract.c	Sat Sep 23 22:26:59 1989
--- gcc-1.36/genextract.c	Thu Dec  7 02:24:40 1989
***************
*** 345,348 ****
--- 345,349 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/genflags.c gcc-1.36/genflags.c
*** gcc-1.36-old/genflags.c	Thu Sep  7 20:18:05 1989
--- gcc-1.36/genflags.c	Thu Dec  7 02:10:45 1989
***************
*** 135,138 ****
--- 135,139 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/genoutput.c gcc-1.36/genoutput.c
*** gcc-1.36-old/genoutput.c	Mon Sep 11 17:44:23 1989
--- gcc-1.36/genoutput.c	Thu Dec  7 02:25:06 1989
***************
*** 772,777 ****
--- 772,778 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
  
  int
diff -r -c gcc-1.36-old/genpeep.c gcc-1.36/genpeep.c
*** gcc-1.36-old/genpeep.c	Thu Sep  7 20:18:26 1989
--- gcc-1.36/genpeep.c	Thu Dec  7 02:22:56 1989
***************
*** 434,437 ****
--- 434,438 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/genrecog.c gcc-1.36/genrecog.c
*** gcc-1.36-old/genrecog.c	Thu Sep  7 20:18:33 1989
--- gcc-1.36/genrecog.c	Thu Dec  7 02:24:16 1989
***************
*** 1092,1095 ****
--- 1092,1096 ----
  
    fflush (stdout);
    exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+   /* NOTREACHED */
  }
diff -r -c gcc-1.36-old/loop.c gcc-1.36/loop.c
*** gcc-1.36-old/loop.c	Sat Sep  9 21:48:44 1989
--- gcc-1.36/loop.c	Thu Dec  7 02:18:47 1989
***************
*** 4383,4388 ****
--- 4383,4389 ----
      default:
        abort ();
      }
+   /* NOTREACHED */
  }
  
  
diff -r -c gcc-1.36-old/recog.c gcc-1.36/recog.c
*** gcc-1.36-old/recog.c	Sat Aug  5 21:12:48 1989
--- gcc-1.36/recog.c	Thu Dec  7 02:23:52 1989
***************
*** 851,856 ****
--- 851,857 ----
        return gen_rtx (MEM, GET_MODE (op), plus_constant (y, offset));
      }
    abort ();
+   /* NOTREACHED */
  }
  
  #ifdef REGISTER_CONSTRAINTS
diff -r -c gcc-1.36-old/regclass.c gcc-1.36/regclass.c
*** gcc-1.36-old/regclass.c	Wed Feb 22 09:28:58 1989
--- gcc-1.36/regclass.c	Thu Dec  7 02:19:18 1989
***************
*** 339,345 ****
  /* This prevents dump_flow_info from losing if called
     before regclass is run.  */
  
! int
  regclass_init ()
  {
    prefclass = 0;
--- 339,345 ----
  /* This prevents dump_flow_info from losing if called
     before regclass is run.  */
  
! void
  regclass_init ()
  {
    prefclass = 0;
diff -r -c gcc-1.36-old/reload1.c gcc-1.36/reload1.c
*** gcc-1.36-old/reload1.c	Sat Sep 16 17:16:41 1989
--- gcc-1.36/reload1.c	Thu Dec  7 02:21:18 1989
***************
*** 1774,1779 ****
--- 1774,1780 ----
      case RELOAD_FOR_OPERAND_ADDRESS:
        return ! reload_reg_in_use_for_operands[regno];
      }
+   abort();
  }
  
  /* Return 1 if the value in reload reg REGNO, as used by a reload
***************
*** 1803,1808 ****
--- 1804,1810 ----
      case RELOAD_FOR_INPUT_RELOAD_ADDRESS:
        return 1;
      }
+   abort();
  }
  
  /* Return 1 if the value in reload reg REGNO, as used by a reload
***************
*** 1832,1837 ****
--- 1834,1840 ----
      case RELOAD_FOR_OUTPUT_RELOAD_ADDRESS:
        return 1;
      }
+   abort();
  }
  
  /* Vector of reload-numbers showing the order in which the reloads should
diff -r -c gcc-1.36-old/stmt.c gcc-1.36/stmt.c
*** gcc-1.36-old/stmt.c	Wed Sep 20 21:29:53 1989
--- gcc-1.36/stmt.c	Thu Dec  7 02:15:43 1989
***************
*** 354,360 ****
  
  /* Emit a no-op instruction.  */
  
! rtx
  emit_nop ()
  {
    rtx last_insn = get_last_insn ();
--- 354,360 ----
  
  /* Emit a no-op instruction.  */
  
! void
  emit_nop ()
  {
    rtx last_insn = get_last_insn ();
diff -r -c gcc-1.36-old/symout.c gcc-1.36/symout.c
*** gcc-1.36-old/symout.c	Wed Sep  6 21:17:15 1989
--- gcc-1.36/symout.c	Thu Dec  7 02:16:29 1989
***************
*** 1000,1005 ****
--- 1000,1006 ----
    return address;
  }
  
+ void
  symout_function_end ()
  {
    /* Output dummy entries for any undefined structure references.  */
diff -r -c gcc-1.36-old/tree.c gcc-1.36/tree.c
*** gcc-1.36-old/tree.c	Sun Aug  6 14:35:29 1989
--- gcc-1.36/tree.c	Thu Dec  7 02:10:18 1989
***************
*** 1745,1750 ****
--- 1745,1751 ----
      default:
        abort ();
      }
+     /* NOTREACHED */
  }
  
  /* Constructors for pointer, array and function types.
Common subdirectories: gcc-1.36-old/config/SCCS and gcc-1.36/config/SCCS
diff -r -c gcc-1.36-old/config/out-sparc.c gcc-1.36/config/out-sparc.c
*** gcc-1.36-old/config/out-sparc.c	Wed Sep  6 00:54:34 1989
--- gcc-1.36/config/out-sparc.c	Thu Dec  7 02:28:00 1989
***************
*** 916,921 ****
--- 916,922 ----
        }
      }
    else abort ();
+   /* NOTREACHED */
  }
  
  /* Return a REG that occurs in ADDR with coefficient 1.
***************
*** 941,946 ****
--- 942,948 ----
    if (GET_CODE (addr) == REG)
      return addr;
    abort ();
+   /* NOTREACHED */
  }
  
  void
***************
*** 1036,1041 ****
--- 1038,1044 ----
    if (GET_CODE (operands[0]) == REG)
      return "[%%g1+%%lo(%m1)],%0";
    abort ();
+   /* NOTREACHED */
  }
  
  /* Output a floating-point load-from-memory whose operands are OPERANDS[0,1].
***************
*** 1827,1833 ****
     HEAD comes from the target of some branch, so before we output it,
     we delete it from the target, lest we execute it twice.  The caller
     of this function promises that such code motion is permissable.  */
! char *
  output_eager_then_insn (head, operands)
       rtx head;
       rtx *operands;
--- 1830,1836 ----
     HEAD comes from the target of some branch, so before we output it,
     we delete it from the target, lest we execute it twice.  The caller
     of this function promises that such code motion is permissable.  */
! void
  output_eager_then_insn (head, operands)
       rtx head;
       rtx *operands;