x86: fold two switch() statements in match_template()
authorJan Beulich <jbeulich@suse.com>
Wed, 6 Jul 2022 13:39:37 +0000 (15:39 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 6 Jul 2022 13:39:37 +0000 (15:39 +0200)
I don't see why two of them were introduced (very long ago) using
similar fall-through logic.

gas/config/tc-i386.c

index 542f5cdf2d03616f0da5a1e843cf0f274846807e..31b10d2e605dad8d61d6ab21e02797eb6baa0387 100644 (file)
@@ -6763,22 +6763,7 @@ match_template (char mnem_suffix)
              switch (t->operands)
                {
                case 5:
-                 overlap4 = operand_type_and (i.types[4],
-                                              operand_types[4]);
-                 /* Fall through.  */
-               case 4:
-                 overlap3 = operand_type_and (i.types[3],
-                                              operand_types[3]);
-                 /* Fall through.  */
-               case 3:
-                 overlap2 = operand_type_and (i.types[2],
-                                              operand_types[2]);
-                 break;
-               }
-
-             switch (t->operands)
-               {
-               case 5:
+                 overlap4 = operand_type_and (i.types[4], operand_types[4]);
                  if (!operand_type_match (overlap4, i.types[4])
                      || !operand_type_register_match (i.types[3],
                                                       operand_types[3],
@@ -6787,6 +6772,7 @@ match_template (char mnem_suffix)
                    continue;
                  /* Fall through.  */
                case 4:
+                 overlap3 = operand_type_and (i.types[3], operand_types[3]);
                  if (!operand_type_match (overlap3, i.types[3])
                      || ((check_register & 0xa) == 0xa
                          && !operand_type_register_match (i.types[1],
@@ -6801,6 +6787,7 @@ match_template (char mnem_suffix)
                    continue;
                  /* Fall through.  */
                case 3:
+                 overlap2 = operand_type_and (i.types[2], operand_types[2]);
                  if (!operand_type_match (overlap2, i.types[2])
                      || ((check_register & 5) == 5
                          && !operand_type_register_match (i.types[0],