public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/wschmidt/heads/builtins10)] rs6000: **squash me** for 0006
@ 2021-05-21 22:17 William Schmidt
  0 siblings, 0 replies; only message in thread
From: William Schmidt @ 2021-05-21 22:17 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:1bd4d27faf4681c7e9d2fe5275025e171383b402

commit 1bd4d27faf4681c7e9d2fe5275025e171383b402
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date:   Fri May 21 17:17:00 2021 -0500

    rs6000: **squash me** for 0006
    
    2021-05-21  Bill Schmidt  <wschmidt@linux.ibm.com>
    
    gcc/
            * config/rs6000/rs6000-gen-builtins.c (limits.h): New include.
            (MININT): Redefine.
            (exit_codes): Remove.
            (consume_whitespace): Void arglist, sizeof operator, line
            overruns.
            (safe_inc_pos): Void arglist, exit codes.
            (match_identifier): Void arglist, line overruns.
            (match_integer): Likewise.
            (match_to_right_bracket): Function note, void arglist, line
            overruns.
            (match_type): sizeof operator.
            (parse_args): Likewise.
            (parse_bif_attrs): Likewise.
            (complete_vector_type): Exit codes.
            (complete_base_type): Likewise.
            (parse_bif_entry): Void arglist.
            (parse_bif_stanza): Likewise.
            (parse_bif): Likewise.
            (create_bif_order): Likewise.
            (parse_ovld_entry): Likewise.
            (parse_ovld_stanza): Likewise.
            (parse_ovld): Likewise.
            (write_decls): Likewise.
            (write_header_file): Likewise.
            (write_bif_static_init): Likewise.
            (write_ovld_static_init): Likewise.
            (write_init_bif_table): Likewise.
            (write_init_ovld_table): Likewise.
            (write_init_file): Likewise.
            (write_defines_file): Likewise.
            (delete_output_files): Likewise.
            (main): Exit codes.

Diff:
---
 gcc/config/rs6000/rs6000-gen-builtins.c | 135 ++++++++++++++------------------
 1 file changed, 60 insertions(+), 75 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index dd23fc8b010..d377c91c96b 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -159,6 +159,7 @@ along with GCC; see the file COPYING3.  If not see
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stdint.h>
+#include <limits.h>
 #include <ctype.h>
 #include <string.h>
 #include <assert.h>
@@ -166,8 +167,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "rbtree.h"
 
 /* Used as a sentinel for range constraints on integer fields.  No field can
-   be 32 bits wide, so this is a safe sentinel value.  */
-#define MININT INT32_MIN
+   be 64 bits wide, so this is a safe sentinel value.  */
+#define MININT INT_MIN
 
 /* Input and output file descriptors and pathnames.  */
 static FILE *bif_file;
@@ -433,23 +434,6 @@ static int num_ovlds;
 static int curr_ovld;
 static int max_ovld_args = 0;
 
-/* Exit codes for the shell.  */
-enum exit_codes {
-  EC_OK,
-  EC_BADARGS,
-  EC_NOBIF,
-  EC_NOOVLD,
-  EC_NOHDR,
-  EC_NOINIT,
-  EC_NODEFINES,
-  EC_PARSEBIF,
-  EC_PARSEOVLD,
-  EC_WRITEHDR,
-  EC_WRITEINIT,
-  EC_WRITEDEFINES,
-  EC_INTERR
-};
-
 /* Return codes for parsing routines.  */
 enum parse_codes {
   PC_OK,
@@ -596,7 +580,7 @@ ovld_diag (const char * fmt, ...)
 /* Pass over unprintable characters and whitespace (other than a newline,
    which terminates the scan).  */
 static void
-consume_whitespace ()
+consume_whitespace (void)
 {
   while (pos < LINELEN && isspace(linebuf[pos]) && linebuf[pos] != '\n')
     pos++;
@@ -610,9 +594,12 @@ advance_line (FILE *file)
   while (1)
     {
       /* Read ahead one line and check for EOF.  */
-      if (!fgets (linebuf, sizeof(linebuf), file))
+      if (!fgets (linebuf, sizeof linebuf, file))
 	return 0;
       line++;
+      size_t len = strlen (linebuf);
+      if (linebuf[len - 1] != '\n')
+	(*diag) ("line doesn't terminate with newline\n");
       pos = 0;
       consume_whitespace ();
       if (linebuf[pos] != '\n' && linebuf[pos] != ';')
@@ -621,27 +608,23 @@ advance_line (FILE *file)
 }
 
 static inline void
-safe_inc_pos ()
+safe_inc_pos (void)
 {
   if (pos++ >= LINELEN)
     {
       (*diag) ("line length overrun.\n");
-      exit (EC_INTERR);
+      exit (1);
     }
 }
 
 /* Match an identifier, returning NULL on failure, else a pointer to a
    buffer containing the identifier.  */
 static char *
-match_identifier ()
+match_identifier (void)
 {
   int lastpos = pos - 1;
   while (isalnum (linebuf[lastpos + 1]) || linebuf[lastpos + 1] == '_')
-    if (++lastpos >= LINELEN - 1)
-      {
-	(*diag) ("line length overrun.\n");
-	exit (EC_INTERR);
-      }
+    ++lastpos;
 
   if (lastpos < pos)
     return 0;
@@ -656,7 +639,7 @@ match_identifier ()
 
 /* Match an integer and return its value, or MININT on failure.  */
 static int
-match_integer ()
+match_integer (void)
 {
   int startpos = pos;
   if (linebuf[pos] == '-')
@@ -664,11 +647,7 @@ match_integer ()
 
   int lastpos = pos - 1;
   while (isdigit (linebuf[lastpos + 1]))
-    if (++lastpos >= LINELEN - 1)
-      {
-	(*diag) ("line length overrun in match_integer.\n");
-	exit (EC_INTERR);
-      }
+    ++lastpos;
 
   if (lastpos < pos)
     return MININT;
@@ -683,16 +662,22 @@ match_integer ()
   return x;
 }
 
+/* Match a string up to but not including a ']', and return its value,
+   or zero if there is nothing before the ']'.  Error if we don't find
+   such a character.  */
 static const char *
-match_to_right_bracket ()
+match_to_right_bracket (void)
 {
   int lastpos = pos - 1;
   while (linebuf[lastpos + 1] != ']')
-    if (++lastpos >= LINELEN - 1)
-      {
-	(*diag) ("line length overrun.\n");
-	exit (EC_INTERR);
-      }
+    {
+      if (linebuf[lastpos + 1] == '\n')
+	{
+	  (*diag) ("no ']' found before end of line.\n");
+	  exit (1);
+	}
+      ++lastpos;
+    }
 
   if (lastpos < pos)
     return 0;
@@ -998,7 +983,7 @@ match_type (typeinfo *typedata, int voidok)
      indicates a pointer type.  */
 
   consume_whitespace ();
-  memset (typedata, 0, sizeof(*typedata));
+  memset (typedata, 0, sizeof *typedata);
   int oldpos = pos;
 
   char *token = match_identifier ();
@@ -1247,7 +1232,7 @@ parse_args (prototype *protoptr)
     consume_whitespace ();
     int oldpos = pos;
     typelist *argentry = (typelist *) malloc (sizeof (typelist));
-    memset (argentry, 0, sizeof (*argentry));
+    memset (argentry, 0, sizeof *argentry);
     typeinfo *argtype = &argentry->info;
     success = match_type (argtype, VOID_NOTOK);
     if (success)
@@ -1316,7 +1301,7 @@ parse_bif_attrs (attrinfo *attrptr)
     }
   safe_inc_pos ();
 
-  memset (attrptr, 0, sizeof (*attrptr));
+  memset (attrptr, 0, sizeof *attrptr);
   char *attrname = NULL;
 
   do {
@@ -1471,7 +1456,7 @@ complete_vector_type (typeinfo *typeptr, char *buf, int *bufi)
 	  break;
 	default:
 	  (*diag) ("unhandled basetype %d.\n", typeptr->base);
-	  exit (EC_INTERR);
+	  exit (1);
 	}
     }
 }
@@ -1532,7 +1517,7 @@ complete_base_type (typeinfo *typeptr, char *buf, int *bufi)
       break;
     default:
       (*diag) ("unhandled basetype %d.\n", typeptr->base);
-      exit (EC_INTERR);
+      exit (1);
     }
 
   *bufi += 2;
@@ -1706,7 +1691,7 @@ val1[1] = %d, val2[1] = %d, pos = %d.\n",
 
 /* Parse a two-line entry for a built-in function.  */
 static parse_codes
-parse_bif_entry ()
+parse_bif_entry (void)
 {
   /* Check for end of stanza.  */
   pos = 0;
@@ -1819,7 +1804,7 @@ parse_bif_entry ()
 /* Parse one stanza of the input BIF file.  linebuf already contains the
    first line to parse.  */
 static parse_codes
-parse_bif_stanza ()
+parse_bif_stanza (void)
 {
   /* Parse the stanza header.  */
   pos = 0;
@@ -1871,7 +1856,7 @@ parse_bif_stanza ()
 
 /* Parse the built-in file.  */
 static parse_codes
-parse_bif ()
+parse_bif (void)
 {
   parse_codes result;
   diag = &bif_diag;
@@ -1899,7 +1884,7 @@ void set_bif_order (char *str)
 /* Create a mapping from function IDs in their final order to the order
    they appear in the built-in function file.  */
 static void
-create_bif_order ()
+create_bif_order (void)
 {
   bif_order = (int *) malloc ((curr_bif + 1)  * sizeof (int));
   rbt_inorder_callback (&bifo_rbt, bifo_rbt.rbt_root, set_bif_order);
@@ -1907,7 +1892,7 @@ create_bif_order ()
 
 /* Parse one two-line entry in the overload file.  */
 static parse_codes
-parse_ovld_entry ()
+parse_ovld_entry (void)
 {
   /* Check for end of stanza.  */
   pos = 0;
@@ -1995,7 +1980,7 @@ parse_ovld_entry ()
 /* Parse one stanza of the input overload file.  linebuf already contains the
    first line to parse.  */
 static parse_codes
-parse_ovld_stanza ()
+parse_ovld_stanza (void)
 {
   /* Parse the stanza header.  */
   pos = 0;
@@ -2106,7 +2091,7 @@ parse_ovld_stanza ()
 
 /* Parse the overload file.  */
 static parse_codes
-parse_ovld ()
+parse_ovld (void)
 {
   parse_codes result = PC_OK;
   diag = &ovld_diag;
@@ -2134,7 +2119,7 @@ write_autogenerated_header (FILE *file)
 
 /* Write declarations into the header file.  */
 static void
-write_decls ()
+write_decls (void)
 {
   fprintf (header_file, "enum rs6000_gen_builtins\n{\n  RS6000_BIF_NONE,\n");
   for (int i = 0; i <= curr_bif; i++)
@@ -2364,7 +2349,7 @@ map_token_to_type_node (char *tok)
   if (low > high)
     {
       (*diag) ("token '%s' doesn't appear in the type map!\n", tok);
-      exit (EC_INTERR);
+      exit (1);
     }
 
   return type_map[mid].value;
@@ -2430,7 +2415,7 @@ write_fntype_init (char *str)
 
 /* Write everything to the header file (rs6000-builtins.h).  */
 static int
-write_header_file ()
+write_header_file (void)
 {
   write_autogenerated_header (header_file);
 
@@ -2450,7 +2435,7 @@ write_header_file ()
 
 /* Write the decl and initializer for rs6000_builtin_info_x[].  */
 static void
-write_bif_static_init ()
+write_bif_static_init (void)
 {
   const char *res[3];
   fprintf (init_file, "bifdata rs6000_builtin_info_x[RS6000_BIF_MAX] =\n");
@@ -2553,7 +2538,7 @@ write_bif_static_init ()
 /* Write the decls and initializers for rs6000_overload_info[] and
    rs6000_instance_info[].  */
 static void
-write_ovld_static_init ()
+write_ovld_static_init (void)
 {
   fprintf (init_file,
 	   "ovldrecord rs6000_overload_info[RS6000_OVLD_MAX "
@@ -2604,7 +2589,7 @@ write_ovld_static_init ()
 
 /* Write code to initialize the built-in function table.  */
 static void
-write_init_bif_table ()
+write_init_bif_table (void)
 {
   for (int i = 0; i <= curr_bif; i++)
     {
@@ -2691,7 +2676,7 @@ write_init_bif_table ()
 
 /* Write code to initialize the overload table.  */
 static void
-write_init_ovld_table ()
+write_init_ovld_table (void)
 {
   fprintf (init_file, "  int base = RS6000_OVLD_NONE;\n\n");
 
@@ -2770,7 +2755,7 @@ write_init_ovld_table ()
 
 /* Write everything to the initialization file (rs6000-builtins.c).  */
 static int
-write_init_file ()
+write_init_file (void)
 {
   write_autogenerated_header (init_file);
 
@@ -2846,7 +2831,7 @@ write_init_file ()
 
 /* Write everything to the include file (rs6000-vecdefines.h).  */
 static int
-write_defines_file ()
+write_defines_file (void)
 {
   fprintf (defines_file, "#ifndef _RS6000_VECDEFINES_H\n");
   fprintf (defines_file, "#define _RS6000_VECDEFINES_H 1\n\n");
@@ -2871,7 +2856,7 @@ write_defines_file ()
 /* Close and delete output files after any failure, so that subsequent
    build dependencies will fail.  */
 static void
-delete_output_files ()
+delete_output_files (void)
 {
   /* Depending on whence we're called, some of these may already be
      closed.  Don't check for errors.  */
@@ -2893,7 +2878,7 @@ main (int argc, const char **argv)
       fprintf (stderr,
 	       "Five arguments required: two input file and three output "
 	       "files.\n");
-      exit (EC_BADARGS);
+      exit (1);
     }
 
   pgm_path = argv[0];
@@ -2907,33 +2892,33 @@ main (int argc, const char **argv)
   if (!bif_file)
     {
       fprintf (stderr, "Cannot find input built-in file '%s'.\n", bif_path);
-      exit (EC_NOBIF);
+      exit (1);
     }
   ovld_file = fopen (ovld_path, "r");
   if (!ovld_file)
     {
       fprintf (stderr, "Cannot find input overload file '%s'.\n", ovld_path);
-      exit (EC_NOOVLD);
+      exit (1);
     }
   header_file = fopen (header_path, "w");
   if (!header_file)
     {
       fprintf (stderr, "Cannot open header file '%s' for output.\n",
 	       header_path);
-      exit (EC_NOHDR);
+      exit (1);
     }
   init_file = fopen (init_path, "w");
   if (!init_file)
     {
       fprintf (stderr, "Cannot open init file '%s' for output.\n", init_path);
-      exit (EC_NOINIT);
+      exit (1);
     }
   defines_file = fopen (defines_path, "w");
   if (!defines_file)
     {
       fprintf (stderr, "Cannot open defines file '%s' for output.\n",
 	       defines_path);
-      exit (EC_NODEFINES);
+      exit (1);
     }
 
   /* Initialize the balanced trees containing built-in function ids,
@@ -2963,7 +2948,7 @@ main (int argc, const char **argv)
     {
       fprintf (stderr, "Parsing of '%s' failed, aborting.\n", bif_path);
       delete_output_files ();
-      exit (EC_PARSEBIF);
+      exit (1);
     }
   fclose (bif_file);
 
@@ -2985,7 +2970,7 @@ main (int argc, const char **argv)
     {
       fprintf (stderr, "Parsing of '%s' failed, aborting.\n", ovld_path);
       delete_output_files ();
-      exit (EC_PARSEOVLD);
+      exit (1);
     }
   fclose (ovld_file);
 
@@ -3000,14 +2985,14 @@ main (int argc, const char **argv)
     {
       fprintf (stderr, "Output to '%s' failed, aborting.\n", header_path);
       delete_output_files ();
-      exit (EC_WRITEHDR);
+      exit (1);
     }
   fclose (header_file);
   if (!write_init_file ())
     {
       fprintf (stderr, "Output to '%s' failed, aborting.\n", init_path);
       delete_output_files ();
-      exit (EC_WRITEINIT);
+      exit (1);
     }
   fclose (init_file);
 
@@ -3016,9 +3001,9 @@ main (int argc, const char **argv)
     {
       fprintf (stderr, "Output to '%s' failed, aborting.\n", defines_path);
       delete_output_files ();
-      exit (EC_WRITEDEFINES);
+      exit (1);
     }
   fclose (defines_file);
 
-  return EC_OK;
+  return 0;
 }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-05-21 22:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-21 22:17 [gcc(refs/users/wschmidt/heads/builtins10)] rs6000: **squash me** for 0006 William Schmidt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).