|
@@ -70,7 +70,7 @@ unit cgcpu;
|
|
|
{$ifopt Q+}
|
|
|
{$define AVOID_OVERFLOW}
|
|
|
const
|
|
|
- low_value = low(longint);
|
|
|
+ max_12_bit = 1 shl 12;
|
|
|
{$endif}
|
|
|
|
|
|
{ Range check must be disabled explicitly as conversions between signed and unsigned
|
|
@@ -479,7 +479,7 @@ unit cgcpu;
|
|
|
tmplo:=cg.GetIntRegister(list,OS_32);
|
|
|
carry:=cg.GetIntRegister(list,OS_32);
|
|
|
|
|
|
- if {$ifdef AVOID_OVERFLOW} (lo(value) <> low_value) and {$endif} is_imm12(-aint(lo(value))) then
|
|
|
+ if {$ifdef AVOID_OVERFLOW} (abs(value) <= max_12_bit) and {$endif} is_imm12(-aint(lo(value))) then
|
|
|
list.concat(taicpu.op_reg_reg_const(A_ADDI,tmplo,regsrc.reglo,-aint(lo(value))))
|
|
|
else
|
|
|
begin
|