OSDN Git Service

2001-06-08 H.J. Lu <hjl@gnu.org>
authorH.J. Lu <hjl@lucon.org>
Sat, 9 Jun 2001 05:01:29 +0000 (05:01 +0000)
committerH.J. Lu <hjl@lucon.org>
Sat, 9 Jun 2001 05:01:29 +0000 (05:01 +0000)
* config/tc-mips.c (mips_ip): Properly handle illegal operands.

gas/ChangeLog
gas/config/tc-mips.c

index 5247678..ae2cd9c 100644 (file)
@@ -1,5 +1,9 @@
 2001-06-08  H.J. Lu  <hjl@gnu.org>
 
+       * config/tc-mips.c (mips_ip): Properly handle illegal operands.
+
+2001-06-08  H.J. Lu  <hjl@gnu.org>
+
        * config/tc-mips.c (md_apply_fix): Don't adjust common
        extern/weak symbols for ELF.
        (md_estimate_size_before_relax): Treat weak like extern for
index 6ffe65b..b61d01c 100644 (file)
@@ -7098,19 +7098,25 @@ mips_ip (str, ip)
            }
          else
            {
-             static char buf[100];
-             sprintf (buf,
-                      _("opcode not supported on this processor: %s (%s)"),
-                      mips_cpu_to_str (mips_cpu),
-                      mips_isa_to_str (mips_opts.isa));
+             if (!insn_error)
+               {
+                 static char buf[100];
+                 sprintf (buf,
+                          _("opcode not supported on this processor: %s (%s)"),
+                          mips_cpu_to_str (mips_cpu),
+                          mips_isa_to_str (mips_opts.isa));
 
-             insn_error = buf;
+                 insn_error = buf;
+               }
+             if (save_c)
+               *(--s) = save_c;
              return;
            }
        }
 
       ip->insn_mo = insn;
       ip->insn_opcode = insn->match;
+      insn_error = NULL;
       for (args = insn->args;; ++args)
        {
          if (*s == ' ')
@@ -7951,8 +7957,11 @@ mips_ip (str, ip)
        {
          ++insn;
          s = argsStart;
+         insn_error = _("illegal operands");
          continue;
        }
+      if (save_c)
+       *(--s) = save_c;
       insn_error = _("illegal operands");
       return;
     }