[PATCH 5/5] x86: move putop() case labels to restore alphabetic sorting

Jan Beulich jbeulich@suse.com
Tue Jul 14 10:14:17 GMT 2020


... as far as non-fall-through behavior permits.

opcodes/
2020-07-XX  Jan Beulich  <jbeulich@suse.com>

	* i386-dis.c (putop): Move 'V' and 'W' handling.

--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -10769,22 +10769,6 @@ putop (const char *in_template, int size
 	  if (!(rex & REX_W))
 	    used_prefixes |= (prefixes & PREFIX_DATA);
 	  break;
-	case 'V':
-	  if (l == 0)
-	    abort ();
-	  else if (l == 1 && last[0] == 'L')
-	    {
-	      if (rex & REX_W)
-		{
-		  *obufp++ = 'a';
-		  *obufp++ = 'b';
-		  *obufp++ = 's';
-		}
-	    }
-	  else
-	    abort ();
-	  /* Fall through.  */
-	  goto case_S;
 	case 'S':
 	  if (l == 0)
 	    {
@@ -10820,6 +10804,54 @@ putop (const char *in_template, int size
 	  else
 	    abort ();
 	  break;
+	case 'V':
+	  if (l == 0)
+	    abort ();
+	  else if (l == 1 && last[0] == 'L')
+	    {
+	      if (rex & REX_W)
+		{
+		  *obufp++ = 'a';
+		  *obufp++ = 'b';
+		  *obufp++ = 's';
+		}
+	    }
+	  else
+	    abort ();
+	  goto case_S;
+	case 'W':
+	  if (l == 0)
+	    {
+	      /* operand size flag for cwtl, cbtw */
+	      USED_REX (REX_W);
+	      if (rex & REX_W)
+		{
+		  if (intel_syntax)
+		    *obufp++ = 'd';
+		  else
+		    *obufp++ = 'l';
+		}
+	      else if (sizeflag & DFLAG)
+		*obufp++ = 'w';
+	      else
+		*obufp++ = 'b';
+	      if (!(rex & REX_W))
+		used_prefixes |= (prefixes & PREFIX_DATA);
+	    }
+	  else if (l == 1)
+	    {
+	      if (!need_vex)
+		abort ();
+	      if (last[0] == 'X')
+		*obufp++ = vex.w ? 'd': 's';
+	      else if (last[0] == 'B')
+		*obufp++ = vex.w ? 'w': 'b';
+	      else
+		abort ();
+	    }
+	  else
+	    abort ();
+	  break;
 	case 'X':
 	  if (l != 0)
 	    abort ();
@@ -10890,39 +10922,6 @@ putop (const char *in_template, int size
 	    }
 	  else
 	    abort ();
-	  break;
-	case 'W':
-	  if (l == 0)
-	    {
-	      /* operand size flag for cwtl, cbtw */
-	      USED_REX (REX_W);
-	      if (rex & REX_W)
-		{
-		  if (intel_syntax)
-		    *obufp++ = 'd';
-		  else
-		    *obufp++ = 'l';
-		}
-	      else if (sizeflag & DFLAG)
-		*obufp++ = 'w';
-	      else
-		*obufp++ = 'b';
-	      if (!(rex & REX_W))
-		used_prefixes |= (prefixes & PREFIX_DATA);
-	    }
-	  else if (l == 1)
-	    {
-	      if (!need_vex)
-		abort ();
-	      if (last[0] == 'X')
-		*obufp++ = vex.w ? 'd': 's';
-	      else if (last[0] == 'B')
-		*obufp++ = vex.w ? 'w': 'b';
-	      else
-		abort ();
-	    }
-	  else
-	    abort ();
 	  break;
 	case '^':
 	  if (intel_syntax)



More information about the Binutils mailing list