mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-11-21 03:14:19 +08:00
Revert "BR 2887108: Use overflow_ helper to catch inappropriate imm optimization"
This reverts commit 41208028ff
.
|
| From: "H. Peter Anvin" <hpa@zytor.com>
|
| The tests for overflow_signed() are wrong too. Those are relevant for if a
| warning should be issued, but not for how the value should be encoded in
| the byte stream.
|
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
This commit is contained in:
parent
beaef4a2ea
commit
210c10110b
17
parser.c
17
parser.c
@ -840,10 +840,11 @@ is_expression:
|
||||
result->oprs[operand].segment = NO_SEG; /* don't care again */
|
||||
result->oprs[operand].wrt = NO_SEG; /* still don't care */
|
||||
|
||||
/* Be optimistic */
|
||||
if(optimizing >= 0 && !(result->oprs[operand].type & STRICT))
|
||||
{
|
||||
/* Be optimistic */
|
||||
result->oprs[operand].type |= SBYTE16 | SBYTE32 | SBYTE64;
|
||||
|
||||
}
|
||||
} else if (is_reloc(value)) { /* it's immediate */
|
||||
result->oprs[operand].type |= IMMEDIATE;
|
||||
result->oprs[operand].offset = reloc_value(value);
|
||||
@ -858,14 +859,12 @@ is_expression:
|
||||
int32_t v32 = (int32_t)v64;
|
||||
int16_t v16 = (int16_t)v32;
|
||||
|
||||
if (v64 >= -128 && v64 <= 127)
|
||||
if (v64 >= -128 && v64 <= 127)
|
||||
result->oprs[operand].type |= SBYTE64;
|
||||
if (!overflow_signed(v64, sizeof(v32)))
|
||||
if (v32 >= -128 && v32 <= 127)
|
||||
result->oprs[operand].type |= SBYTE32;
|
||||
if (!overflow_signed(v64, sizeof(v16)))
|
||||
if (v16 >= -128 && v16 <= 127)
|
||||
result->oprs[operand].type |= SBYTE16;
|
||||
if (v32 >= -128 && v32 <= 127)
|
||||
result->oprs[operand].type |= SBYTE32;
|
||||
if (v16 >= -128 && v16 <= 127)
|
||||
result->oprs[operand].type |= SBYTE16;
|
||||
}
|
||||
}
|
||||
} else { /* it's a register */
|
||||
|
Loading…
Reference in New Issue
Block a user