x86/Intel: drop pointless suffix setting for "tbyte ptr"
authorJan Beulich <jbeulich@suse.com>
Mon, 9 Dec 2019 12:29:44 +0000 (13:29 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 9 Dec 2019 12:29:44 +0000 (13:29 +0100)
There are extremely few insns accepting "tbyte ptr" operand, so the
"tbyte" operand flag checking done by match_operand_size() is already
sufficient; the setting of the suffix has become meaningless anyway
with dc2be329b950 ("i386: Only check suffix in instruction mnemonic").
Fold the code with that setting the "byte" operand flag to force an
error (no insn at all accepts both "byte ptr" and tbyte ptr" operands,
except for AnySize ones where the two (conflicting) recorded types
don't matter (operand_size_match() doesn't call match_operand_size() in
this case).

gas/ChangeLog
gas/config/tc-i386-intel.c

index 70aff3d9324c695eec60baa0ec1c6f1b3c08b71c..54ede43421b36fb2dcbc0c77b800dd9b060fb1a4 100644 (file)
@@ -1,3 +1,9 @@
+2019-12-09  Jan Beulich  <jbeulich@suse.com>
+
+       * config/tc-i386-intel.c (i386_intel_operand): Set "byte"
+       attribute suffix instead of suffix uniformly for insns not
+       possibly accepting "tbyte ptr" explicitly.
+
 2019-12-09  Jan Beulich  <jbeulich@suse.com>
 
        * config/tc-i386-intel.c (i386_intel_operand): Don't set suffix
index bf8d9bedb25b4c4fd20601dc09b5748e14065515..7d0a5b8d851e5b535db3fe269b46d35d87247209 100644 (file)
@@ -691,17 +691,12 @@ i386_intel_operand (char *operand_string, int got_a_float)
          i.types[this_operand].bitfield.tbyte = 1;
          if (got_a_float == 1)
            suffix = LONG_DOUBLE_MNEM_SUFFIX;
-         else if (current_templates->start->operand_types[0].bitfield.fword
-                  || current_templates->start->operand_types[0].bitfield.tbyte)
-           {
-             /* l[defgs]s, [ls][gi]dt */
-             if (flag_code == CODE_64BIT)
-               suffix = QWORD_MNEM_SUFFIX;
-             else
-               i.types[this_operand].bitfield.byte = 1; /* cause an error */
-           }
+         else if ((current_templates->start->operand_types[0].bitfield.fword
+                   || current_templates->start->operand_types[0].bitfield.tbyte)
+                  && flag_code == CODE_64BIT)
+           suffix = QWORD_MNEM_SUFFIX; /* l[fgs]s, [ls][gi]dt */
          else
-           suffix = BYTE_MNEM_SUFFIX; /* so it will cause an error */
+           i.types[this_operand].bitfield.byte = 1; /* cause an error */
          break;
 
        case O_oword_ptr: