Correct 2000-02-26 change.
authorAlan Modra <amodra@gmail.com>
Mon, 3 Apr 2000 11:19:51 +0000 (11:19 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 3 Apr 2000 11:19:51 +0000 (11:19 +0000)
gas/ChangeLog
gas/config/tc-i386.c

index b69efd3d72436438384fbfb93df69c7986794c08..c4aeb2a71c4e389ae33ae8ae3629a11b89407faf 100644 (file)
@@ -1,3 +1,10 @@
+2000-04-03  Alan Modra  <alan@linuxcare.com.au>
+
+       * config/tc-i386.c (i386_immediate): Don't assume a constant
+       immediate is necessarily 16 bits when in 16 bit code mode.
+       (md_assemble): Instead set guess_suffix here after we have checked
+       registers.
+
 2000-04-02  Richard Henderson  <rth@cygnus.com>
 
        * config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit
index 3a01bab565badc05983877557967196153005a4d..7efd6dd180e4fbc1943726ebc2e1cb56fef8e3d3 100644 (file)
@@ -1331,6 +1331,9 @@ md_assemble (line)
                  break;
                }
          }
+       else if (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0))
+         guess_suffix = WORD_MNEM_SUFFIX;
+
        for (op = i.operands; --op >= 0; )
          if ((i.types[op] & Imm)
              && i.op[op].imms->X_op == O_constant)
@@ -2584,10 +2587,7 @@ i386_immediate (imm_start)
 
   if (exp->X_op == O_constant)
     {
-      int bigimm = Imm32;
-      if (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0))
-       bigimm = Imm16;
-      i.types[this_operand] |= bigimm;
+      i.types[this_operand] |= Imm32;  /* Size it properly later.  */
     }
 #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
   else if (