[committed] MIPS16/GAS: Streamline forced size suffix handling code

Maciej W. Rozycki macro@orcam.me.uk
Mon Feb 10 22:15:33 GMT 2025


Clean up after commit 112cf77b1855 ("MIPS: use is_whitespace()") and 
untangle the code flow in the handling of forced size suffixes, noting 
that owing to the loop right above the only data `c' can hold at this 
point is '\0', '.', or a white-space character.  No functional change.
---
 gas/config/tc-mips.c |   23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

binutils-gas-mips16-ip-is-whitespace-cleanup.diff
Index: binutils-gdb/gas/config/tc-mips.c
===================================================================
--- binutils-gdb.orig/gas/config/tc-mips.c
+++ binutils-gdb/gas/config/tc-mips.c
@@ -14394,17 +14394,8 @@ mips16_ip (char *str, struct mips_cl_ins
   c = *end;
 
   l = 0;
-  switch (c)
+  if (c == '.')
     {
-    case '\0':
-      break;
-
-    default:
-      if (is_whitespace (*s))
-	s++;
-      break;
-
-    case '.':
       s++;
       if (*s == 't')
 	{
@@ -14416,16 +14407,14 @@ mips16_ip (char *str, struct mips_cl_ins
 	  l = 4;
 	  s++;
 	}
-      if (l != 0)
+      if (l == 0 || (*s != '\0' && !is_whitespace (*s++)))
 	{
-	  if (*s == '\0')
-	    break;
-	  else if (is_whitespace (*s++))
-	    break;
+	  set_insn_error (0, _("unrecognized opcode"));
+	  return;
 	}
-      set_insn_error (0, _("unrecognized opcode"));
-      return;
     }
+  else if (is_whitespace (c))
+    s++;
   forced_insn_length = l;
 
   *end = 0;


More information about the Binutils mailing list