Subject: Patch to report the illegal operand errors in gas/mips.

From: "H . J . Lu" <[email-masked]>
Date: Wed, 6 Jun 2001 09:50:11 -0700

When you have an illegal operand, you will get a bogus error message
saying "opcode not supported on this processor: xxx". This patch fixes
it.

---
2001-06-06  H.J. Lu  <[email-masked]>

	* gas/config/tc-mips.c (mips_ip): Properly report the illegal
	operand errors.

--- gas/config/tc-mips.c.diag	Tue Jun  5 20:28:20 2001
+++ gas/config/tc-mips.c	Tue Jun  5 20:46:50 2001
@@ -7087,19 +7087,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 == ' ')
@@ -7940,8 +7946,11 @@ mips_ip (str, ip)
 	{
 	  ++insn;
 	  s = argsStart;
+	  insn_error = _("illegal operands");
 	  continue;
 	}
+      if (save_c)
+	*(--s) = save_c;
       insn_error = _("illegal operands");
       return;
     }