Fix MRI mode testsuite failures
authorAlan Modra <amodra@gmail.com>
Mon, 18 Mar 2019 11:46:24 +0000 (22:16 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 18 Mar 2019 12:09:16 +0000 (22:39 +1030)
These fails were introduced by git commit 2469b3c584 with the
inroduction of "input_from_string":
m68k-linux  FAIL: MRI structured for
m68k-linux  FAIL: MRI structured if
m68k-linux  FAIL: MRI structured repeat
m68k-linux  FAIL: MRI structured while

Since the m68k parser called expression() without setting
input_from_string, get_symbol_name rejected FAKE_LABEL_CHAR in names.

* config/m68k-parse.y (yylex): Use temp_ilp and restore_ilp.

gas/ChangeLog
gas/config/m68k-parse.y

index 0f0c5e5..dbfde1e 100644 (file)
@@ -1,3 +1,7 @@
+2019-03-18  Alan Modra  <amodra@gmail.com>
+
+       * config/m68k-parse.y (yylex): Use temp_ilp and restore_ilp.
+
 2019-03-18  H.J. Lu  <hongjiu.lu@intel.com>
 
        * testsuite/gas/i386/att-regs.d: Pass -O0 to assembler.
index f771f09..8bc96d1 100644 (file)
@@ -754,7 +754,6 @@ yylex (void)
   int parens;
   int c = 0;
   int tail = 0;
-  char *hold;
 
   if (*str == ' ')
     ++str;
@@ -913,11 +912,10 @@ yylex (void)
 
          ++s;
 
-         hold = input_line_pointer;
-         input_line_pointer = s;
+         temp_ilp (s);
          expression (&scale);
          s = input_line_pointer;
-         input_line_pointer = hold;
+         restore_ilp ();
 
          if (scale.X_op != O_constant)
            yyerror (_("scale specification must resolve to a number"));
@@ -1071,11 +1069,10 @@ yylex (void)
       s[-tail] = 0;
     }
 
-  hold = input_line_pointer;
-  input_line_pointer = str;
+  temp_ilp (str);
   expression (&yylval.exp.exp);
   str = input_line_pointer;
-  input_line_pointer = hold;
+  restore_ilp ();
 
   if (tail != 0)
     {