|
@@ -179,20 +179,20 @@ implementation
|
|
|
begin
|
|
|
secondpass(left);
|
|
|
location_reset(location,LOC_REGISTER,left.location.size);
|
|
|
- location.register64.reglo:=cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
|
|
|
- location.register64.reghi:=cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
|
|
|
+ location.register64.reglo:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
|
|
|
+ location.register64.reghi:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
|
|
|
cg64.a_op64_loc_reg(current_asmdata.CurrAsmList,OP_NEG,OS_S64,
|
|
|
left.location,joinreg64(location.register64.reglo,location.register64.reghi));
|
|
|
{ there's only overflow in case left was low(int64) -> -left = left }
|
|
|
if (cs_check_overflow in current_settings.localswitches) then
|
|
|
begin
|
|
|
- tr:=cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
|
|
|
- cg.a_op_const_reg_reg(current_asmdata.CurrAsmList,OP_XOR,OS_INT,
|
|
|
+ tr:=cg.getintregister(current_asmdata.CurrAsmList,OS_32);
|
|
|
+ cg.a_op_const_reg_reg(current_asmdata.CurrAsmList,OP_XOR,OS_32,
|
|
|
aint($80000000),location.register64.reghi,tr);
|
|
|
- cg.a_op_reg_reg(current_asmdata.CurrAsmList,OP_OR,OS_INT,
|
|
|
+ cg.a_op_reg_reg(current_asmdata.CurrAsmList,OP_OR,OS_32,
|
|
|
location.register64.reglo,tr);
|
|
|
current_asmdata.getjumplabel(hl);
|
|
|
- cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_INT,OC_NE,0,tr,hl);
|
|
|
+ cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_32,OC_NE,0,tr,hl);
|
|
|
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_OVERFLOW',false);
|
|
|
cg.a_label(current_asmdata.CurrAsmList,hl);
|
|
|
end;
|