aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-i386.c8
2 files changed, 11 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index b69efd3..c4aeb2a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 3a01bab..7efd6dd 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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 (