mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-15 22:19:32 +02:00
* all CPUs use now internal abs(<int64>) so overflow checking is possible
+ added overflow checking to generic abs(<longint>)
This commit is contained in:
parent
c87213085f
commit
13e7f947ea
compiler
@ -794,7 +794,14 @@ implementation
|
||||
|
||||
hlcg.a_op_const_reg_reg(current_asmdata.CurrAsmList,OP_SAR,left.resultdef,left.resultdef.size*8-1,left.location.register,tempreg1);
|
||||
hlcg.a_op_reg_reg_reg(current_asmdata.CurrAsmList,OP_XOR,left.resultdef,left.location.register,tempreg1,tempreg2);
|
||||
hlcg.a_op_reg_reg_reg(current_asmdata.CurrAsmlist,OP_SUB,left.resultdef,tempreg1,tempreg2,location.register);
|
||||
|
||||
if cs_check_overflow in current_settings.localswitches then
|
||||
begin
|
||||
hlcg.a_op_reg_reg_reg_checkoverflow(current_asmdata.CurrAsmlist,OP_SUB,resultdef,tempreg1,tempreg2,location.register,true,ovloc);
|
||||
hlcg.g_overflowcheck_loc(current_asmdata.CurrAsmList,Location,resultdef,ovloc);
|
||||
end
|
||||
else
|
||||
hlcg.a_op_reg_reg_reg(current_asmdata.CurrAsmlist,OP_SUB,resultdef,tempreg1,tempreg2,location.register);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -4758,9 +4758,8 @@ procedure read_arguments(cmd:TCmdStr);
|
||||
{$endif i8086 or avr}
|
||||
{ abs(long) is handled internally on all CPUs }
|
||||
def_system_macro('FPC_HAS_INTERNAL_ABS_LONG');
|
||||
{$if defined(i8086) or defined(i386) or defined(x86_64) or defined(powerpc64) or defined(aarch64) or defined(arm)}
|
||||
{ abs(int64) is handled internally on all CPUs }
|
||||
def_system_macro('FPC_HAS_INTERNAL_ABS_INT64');
|
||||
{$endif i8086 or i386 or x86_64 or powerpc64 or aarch64 or arm}
|
||||
|
||||
def_system_macro('FPC_HAS_UNICODESTRING');
|
||||
def_system_macro('FPC_RTTI_PACKSET1');
|
||||
|
Loading…
Reference in New Issue
Block a user