is_end_of_line fixes.
authorAlan Modra <amodra@gmail.com>
Fri, 2 Jun 2000 02:52:10 +0000 (02:52 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 2 Jun 2000 02:52:10 +0000 (02:52 +0000)
gas/ChangeLog
gas/config/tc-arm.c
gas/config/tc-h8500.c
gas/config/tc-m88k.c
gas/config/tc-mcore.c
gas/config/tc-tic30.c
gas/expr.c
gas/read.c

index e04fcebf621ea206603dab0741d4ff2ed3a43aaf..e5fd99802fe019cf6479e66a815440bc31d18988 100644 (file)
@@ -1,3 +1,27 @@
+2000-06-01  Alan Modra  <alan@linuxcare.com.au>
+
+       * expr.c (operand): Test is_end_of_line outside switch to catch
+       line separator chars that are also operators.
+       (operator): Return O_illegal for line separator chars.
+
+       * read.c (is_end_of_line): Use 1 instead of 99.  Don't set `;'
+       entry (or `!' entry for TC_HPPA).
+
+       * config/tc-arm.c (my_get_float_expression): Cast to unsigned char
+       before indexing is_end_of_line.  Remove redundant check for '\0'.
+       (fp_op2): Likewise.
+       * config/tc-h8500.c (md_assemble): Likewise.
+       * config/tc-mcore.c (md_assemble): Likewise.
+       * config/tc-tic30.c (tic30_find_parallel_insn): Likewise.
+       (md_atof): Likewise
+
+       * config/tc-m88k.c (s_bss): Cast to unsigned char before indexing
+       is_end_of_line.
+       * config/tc-mcore.c (mcore_cons): Likewise.
+       (mcore_float_cons): Likewise.
+       (mcore_stringer): Likewise.
+       * config/tc-tic30.c (tic30_find_parallel_insn): Likewise.
+
 2000-06-01  Scott Bambrough <scottb@netwinder.org>
 
        * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly.
index c5b2cd768ffa628f4592ee0372617d93fdc8f5cc..1a9ebc8020687a2d7493f01495e2e3177cb69d34 100644 (file)
@@ -2219,7 +2219,7 @@ my_get_float_expression (str)
   memset (words, 0, MAX_LITTLENUMS * sizeof (LITTLENUM_TYPE));
   /* Look for a raw floating point number */
   if ((save_in = atof_ieee (*str, 'x', words)) != NULL
-      && (is_end_of_line [(int)(*save_in)] || *save_in == '\0'))
+      && is_end_of_line [(unsigned char) *save_in])
     {
       for (i = 0; i < NUM_FLOAT_VALS; i++)
        {
@@ -2644,7 +2644,7 @@ fp_op2 (str)
                  char *start = *str;
 
                  *str += strlen (fp_const[i]);
-                 if (is_end_of_line[(int)**str] || **str == '\0')
+                 if (is_end_of_line[(unsigned char) **str])
                    {
                      inst.instruction |= i + 8;
                      return SUCCESS;
index 9dec3e2e6a21ded70221df8086b226799821e3a6..b5e6be381903d26d082ae813e8dc44f9057b395d 100644 (file)
@@ -1104,8 +1104,7 @@ DEFUN (md_assemble, (str),
 
   /* find the op code end */
   for (op_start = op_end = str;
-       *op_end &&
-       !is_end_of_line[*op_end] && *op_end != ' ';
+       !is_end_of_line[(unsigned char) *op_end] && *op_end != ' ';
        op_end++)
     {
       if (                     /**op_end != '.'
index f77460a0caf0050db9601a6f75661782857f0c89..a8f5b431980a796c8277984ca67463385b2fc0b1 100644 (file)
@@ -1311,7 +1311,7 @@ s_bss ()
       as_warn (_("Ignoring attempt to re-define symbol %s."), name);
     }
 
-  while (!is_end_of_line[*input_line_pointer])
+  while (!is_end_of_line[(unsigned char) *input_line_pointer])
     {
       input_line_pointer++;
     }
index 3b232148cf7cfd4902f8dbf2877d31f185740c9c..0284c00535a6541493bde57d269e87405ee06cb7 100644 (file)
@@ -239,7 +239,7 @@ mcore_cons (nbytes)
       int    commas = 1;
       
       /* Count the number of commas on the line.  */
-      while (! is_end_of_line [* ptr])
+      while (! is_end_of_line [(unsigned char) * ptr])
        commas += * ptr ++ == ',';
       
       poolspan += nbytes * commas;
@@ -268,7 +268,7 @@ mcore_float_cons (float_type)
 #endif
       
       /* Count the number of commas on the line.  */
-      while (! is_end_of_line [* ptr])
+      while (! is_end_of_line [(unsigned char) * ptr])
        commas += * ptr ++ == ',';
 
       /* We would like to compute "hex_float (float_type) * commas"
@@ -301,7 +301,7 @@ mcore_stringer (append_zero)
         estimate, which is OK, and automatically allows for the
         appending a zero byte, since the real string(s) is/are
         required to be enclosed in double quotes.  */
-      while (! is_end_of_line [* ptr])
+      while (! is_end_of_line [(unsigned char) * ptr])
        ptr ++;
 
       poolspan += ptr - input_line_pointer;
@@ -975,7 +975,7 @@ md_assemble (str)
 
   /* Find the op code end.  */
   for (op_start = op_end = str;
-       * op_end && nlen < 20 && !is_end_of_line [*op_end] && *op_end != ' ';
+       nlen < 20 && !is_end_of_line [(unsigned char) *op_end] && *op_end != ' ';
        op_end++)
     {
       name[nlen] = op_start[nlen];
index 255c06a381df8229c2ca65d3c59688db474d9319..e85811454b6ebea640644562195d498eb395c8c1 100644 (file)
@@ -1459,7 +1459,7 @@ tic30_find_parallel_insn (current_line, next_line)
   char *parallel_insn;
 
   debug ("In tic30_find_parallel_insn()\n");
-  while (!is_end_of_line[(int) *next_line])
+  while (!is_end_of_line[(unsigned char) *next_line])
     {
       if (*next_line == PARALLEL_SEPARATOR && *(next_line + 1) == PARALLEL_SEPARATOR)
        {
@@ -1495,7 +1495,7 @@ tic30_find_parallel_insn (current_line, next_line)
          int char_ptr = 0;
          char c;
 
-         while (!is_end_of_line[(int) (c = *line)] && *line)
+         while (!is_end_of_line[(unsigned char) (c = *line)])
            {
              if (is_opcode_char (c) && search_status == NONE)
                {
@@ -1682,7 +1682,8 @@ md_atof (what_statement_type, literalP, sizeP)
   debug ("literal = %s\n", literalP);
   debug ("line = ");
   token = input_line_pointer;
-  while (!is_end_of_line[(unsigned) *input_line_pointer] && (*input_line_pointer) && (*input_line_pointer != ','))
+  while (!is_end_of_line[(unsigned char) *input_line_pointer]
+        && (*input_line_pointer != ','))
     {
       debug ("%c", *input_line_pointer);
       input_line_pointer++;
index 851a406e018096743c544605d12297c4c360bf92..11a9e13465fe9607239769a91a0f132c26837f7b 100644 (file)
@@ -799,6 +799,9 @@ operand (expressionP)
   SKIP_WHITESPACE ();          /* leading whitespace is part of operand. */
   c = *input_line_pointer++;   /* input_line_pointer->past char in c. */
 
+  if (is_end_of_line[(unsigned char) c])
+    goto eol;
+
   switch (c)
     {
     case '1':
@@ -1166,9 +1169,8 @@ operand (expressionP)
        {
          goto isname;
        }
+
     case ',':
-    case '\n':
-    case '\0':
     eol:
       /* can't imagine any other kind of operand */
       expressionP->X_op = O_absent;
@@ -1211,8 +1213,6 @@ operand (expressionP)
 #ifdef TC_M68K
     de_fault:
 #endif
-      if (is_end_of_line[(unsigned char) c])
-       goto eol;
       if (is_name_beginner (c))        /* here if did not begin with a digit */
        {
          /*
@@ -1571,6 +1571,9 @@ operator ()
 
   c = *input_line_pointer & 0xff;
 
+  if (is_end_of_line[c])
+    return O_illegal;
+
   switch (c)
     {
     default:
index 2ea5e2b61210642d4e132f40acfb9154ce57074d..7ff8aad3248b44da2ef7731419c9af681674c927 100644 (file)
@@ -146,33 +146,26 @@ char lex_type[256] =
  * In: a character.
  * Out: 1 if this character ends a line.
  */
-#define Z_ (0)
 char is_end_of_line[256] =
 {
 #ifdef CR_EOL
-  99, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, 99, Z_, Z_, 99, Z_, Z_,      /* @abcdefghijklmno */
+  1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,      /* @abcdefghijklmno */
 #else
-  99, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, 99, Z_, Z_, Z_, Z_, Z_,      /* @abcdefghijklmno */
+  1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,      /* @abcdefghijklmno */
 #endif
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-#ifdef TC_HPPA
-  Z_,99, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,       /* _!"#$%&'()*+,-./ */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* 0123456789:;<=>? */
-#else
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, 99, Z_, Z_, Z_, Z_,      /* 0123456789:;<=>? */
-#endif
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
-  Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* _!"#$%&'()*+,-./ */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* 0123456789:;<=>? */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,      /* */
 };
-#undef Z_
 
 /* Functions private to this file. */