From 6c80ab6f7f3a5d18076f9b2edbce89d8f80247cd Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Sat, 4 Oct 2008 18:50:47 -0700 Subject: [PATCH] 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 --- assemble.c | 12 ++++++++---- doc/changes.src | 3 +++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/assemble.c b/assemble.c index 5d926a2c..bc41e026 100644 --- a/assemble.c +++ b/assemble.c @@ -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, diff --git a/doc/changes.src b/doc/changes.src index c0eeddcd..352bbd63 100644 --- a/doc/changes.src +++ b/doc/changes.src @@ -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 -- 2.11.4.GIT