assemble.c: do not warn on valid SBYTE optimizations

Do not warn on valid SBYTE optimizations.  If we are optimizing and
match one of the SBYTE conditions, do not error out.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
H. Peter Anvin 2008-10-04 18:50:47 -07:00
parent ece980c38b
commit 6c80ab6f7f
2 changed files with 11 additions and 4 deletions

View File

@ -1255,12 +1255,16 @@ static void gencode(int32_t segment, int64_t offset, int bits,
case 015:
case 016:
case 017:
/* XXX: warns for legitimate optimizer actions */
if (opx->offset < -128 || opx->offset > 127) {
/* The test for BITS8 and SBYTE here is intended to avoid
warning on optimizer actions due to SBYTE, while still
warn on explicit BYTE directives. Also warn, obviously,
if the optimizer isn't enabled. */
if (((opx->type & BITS8) ||
!(opx->type & (SBYTE16|SBYTE32|SBYTE64))) &&
(opx->offset < -128 || opx->offset > 127)) {
errfunc(ERR_WARNING | ERR_WARN_NOV,
"signed byte value exceeds bounds");
}
}
if (opx->segment != NO_SEG) {
data = opx->offset;
out(offset, segment, &data, OUT_ADDRESS, 1,

View File

@ -25,6 +25,9 @@ since 2007.
\b Fix \c{%include} inside multi-line macros or loops.
\b Fix error where NASM would generate a spurious warning on valid
optimizations of immediate values.
\S{cl-2.04} Version 2.04