This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 3/4] x86/Intel: drop pointless suffix setting for "tbyte ptr"


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/
2019-12-XX  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.

--- a/gas/config/tc-i386-intel.c
+++ b/gas/config/tc-i386-intel.c
@@ -691,17 +691,12 @@ i386_intel_operand (char *operand_string
 	  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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]