Simplify read-md.c and read-rtl.c using require_char_ws
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 10 May 2016 18:28:10 +0000 (18:28 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Tue, 10 May 2016 18:28:10 +0000 (18:28 +0000)
read-md.c and read-rtl.c repeatedly use this pattern:

    c = read_skip_spaces ();
    if (c != ')')
      fatal_expected_char (')', c);

Simplify them by introduce a helper function to do this.

gcc/ChangeLog:
* read-md.c (require_char_ws): New function.
(read_string): Simplify using require_char_ws.
(handle_constants): Likewise.
(handle_enum): Likewise.
(handle_file): Likewise.
* read-md.h (require_char_ws): New declaration.
* read-rtl.c (read_conditions): Simplify using require_char_ws.
(read_mapping): Likewise.
(read_rtx_code): Likewise.
(read_nested_rtx): Likewise.

From-SVN: r236101

gcc/ChangeLog
gcc/read-md.c
gcc/read-md.h
gcc/read-rtl.c

index 1fa7f5e0ada26ec896869dd9228702cd573b5b0a..2e58aebb21d7c3df692a23109030835920114337 100644 (file)
@@ -1,3 +1,16 @@
+2016-05-10  David Malcolm  <dmalcolm@redhat.com>
+
+       * read-md.c (require_char_ws): New function.
+       (read_string): Simplify using require_char_ws.
+       (handle_constants): Likewise.
+       (handle_enum): Likewise.
+       (handle_file): Likewise.
+       * read-md.h (require_char_ws): New declaration.
+       * read-rtl.c (read_conditions): Simplify using require_char_ws.
+       (read_mapping): Likewise.
+       (read_rtx_code): Likewise.
+       (read_nested_rtx): Likewise.
+
 2016-05-10  James Norris  <jnorris@codesourcery.com>
 
        * config/rs6000/sysv4.h (CRTOFFLOADBEGIN): Define. Add crtoffloadbegin.o
index 6c588781978b5c659ac6bb0bf1b291968e039dbd..b422d8dc75cad8f1bfb3c20b16d413948dfd870c 100644 (file)
@@ -391,6 +391,17 @@ read_skip_spaces (void)
     }
 }
 
+/* Consume any whitespace, then consume the next non-whitespace
+   character, issuing a fatal error if it is not EXPECTED.  */
+
+void
+require_char_ws (char expected)
+{
+  int ch = read_skip_spaces ();
+  if (ch != expected)
+    fatal_expected_char (expected, ch);
+}
+
 /* Read an rtx code name into NAME.  It is terminated by any of the
    punctuation chars of rtx printed syntax.  */
 
@@ -603,11 +614,7 @@ read_string (int star_if_braced)
     fatal_with_file_and_line ("expected `\"' or `{', found `%c'", c);
 
   if (saw_paren)
-    {
-      c = read_skip_spaces ();
-      if (c != ')')
-       fatal_expected_char (')', c);
-    }
+    require_char_ws (')');
 
   set_md_ptr_loc (stringbuf, read_md_filename, old_lineno);
   return stringbuf;
@@ -764,9 +771,7 @@ handle_constants (void)
   int c;
   htab_t defs;
 
-  c = read_skip_spaces ();
-  if (c != '[')
-    fatal_expected_char ('[', c);
+  require_char_ws ('[');
 
   /* Disable constant expansion during definition processing.  */
   defs = md_constants;
@@ -782,9 +787,7 @@ handle_constants (void)
       read_name (&value);
       add_constant (defs, xstrdup (name.string), xstrdup (value.string), 0);
 
-      c = read_skip_spaces ();
-      if (c != ')')
-       fatal_expected_char (')', c);
+      require_char_ws (')');
     }
   md_constants = defs;
 }
@@ -846,9 +849,7 @@ handle_enum (file_location loc, bool md_p)
       *slot = def;
     }
 
-  c = read_skip_spaces ();
-  if (c != '[')
-    fatal_expected_char ('[', c);
+  require_char_ws ('[');
 
   while ((c = read_skip_spaces ()) != ']')
     {
@@ -1007,9 +1008,7 @@ handle_file (directive_handler_t handle_directive)
       else
        read_skip_construct (1, loc);
 
-      c = read_skip_spaces ();
-      if (c != ')')
-       fatal_expected_char (')', c);
+      require_char_ws (')');
     }
   fclose (read_md_file);
 }
index fc3b077325bc473f92e9a2ccabb6892e494320c3..fa259517a26bb49815a37a4178718df4e673f6fb 100644 (file)
@@ -141,6 +141,7 @@ extern void fatal_with_file_and_line (const char *, ...)
   ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
 extern void fatal_expected_char (int, int) ATTRIBUTE_NORETURN;
 extern int read_skip_spaces (void);
+extern void require_char_ws (char expected);
 extern void read_name (struct md_name *);
 extern char *read_quoted_string (void);
 extern char *read_string (int);
index 79f42bf01e689a70df3de7c6e002cdb3ae1f889a..dc3a336b45bb658108846d03b2ac805fdb6205d1 100644 (file)
@@ -742,9 +742,7 @@ read_conditions (void)
 {
   int c;
 
-  c = read_skip_spaces ();
-  if (c != '[')
-    fatal_expected_char ('[', c);
+  require_char_ws ('[');
 
   while ( (c = read_skip_spaces ()) != ']')
     {
@@ -759,14 +757,10 @@ read_conditions (void)
       validate_const_int (name.string);
       value = atoi (name.string);
 
-      c = read_skip_spaces ();
-      if (c != '"')
-       fatal_expected_char ('"', c);
+      require_char_ws ('"');
       expr = read_quoted_string ();
 
-      c = read_skip_spaces ();
-      if (c != ')')
-       fatal_expected_char (')', c);
+      require_char_ws (')');
 
       add_c_test (expr, value);
     }
@@ -890,9 +884,7 @@ read_mapping (struct iterator_group *group, htab_t table)
   read_name (&name);
   m = add_mapping (group, table, name.string);
 
-  c = read_skip_spaces ();
-  if (c != '[')
-    fatal_expected_char ('[', c);
+  require_char_ws ('[');
 
   /* Read each value.  */
   end_ptr = &m->values;
@@ -912,9 +904,7 @@ read_mapping (struct iterator_group *group, htab_t table)
          /* A "(name string)" pair.  */
          read_name (&name);
          string = read_string (false);
-         c = read_skip_spaces ();
-         if (c != ')')
-           fatal_expected_char (')', c);
+         require_char_ws (')');
        }
       number = group->find_builtin (name.string);
       end_ptr = add_map_value (end_ptr, number, string);
@@ -1181,9 +1171,7 @@ read_rtx_code (const char *code_name)
          int list_counter = 0;
          rtvec return_vec = NULL_RTVEC;
 
-         c = read_skip_spaces ();
-         if (c != '[')
-           fatal_expected_char ('[', c);
+         require_char_ws ('[');
 
          /* Add expressions to a list, while keeping a count.  */
          obstack_init (&vector_stack);
@@ -1398,12 +1386,9 @@ static rtx
 read_nested_rtx (void)
 {
   struct md_name name;
-  int c;
   rtx return_rtx;
 
-  c = read_skip_spaces ();
-  if (c != '(')
-    fatal_expected_char ('(', c);
+  require_char_ws ('(');
 
   read_name (&name);
   if (strcmp (name.string, "nil") == 0)
@@ -1411,9 +1396,7 @@ read_nested_rtx (void)
   else
     return_rtx = read_rtx_code (name.string);
 
-  c = read_skip_spaces ();
-  if (c != ')')
-    fatal_expected_char (')', c);
+  require_char_ws (')');
 
   return return_rtx;
 }