+ set pi_do_call on RiscV as well if we check for fpu exceptions

This commit is contained in:
florian 2024-02-16 22:48:01 +01:00
parent ae121a2d5e
commit a736a4bba7
2 changed files with 19 additions and 0 deletions

View File

@ -303,6 +303,14 @@ implementation
else else
Result:=inherited pass_1; Result:=inherited pass_1;
{ if the result is not nil, a new node has been generated and the current node will be discarted }
if Result=nil then
begin
if left.resultdef.typ=floatdef then
if needs_check_for_fpu_exceptions then
Include(current_procinfo.flags,pi_do_call);
end;
if expectloc=LOC_FLAGS then if expectloc=LOC_FLAGS then
expectloc:=LOC_REGISTER; expectloc:=LOC_REGISTER;
if (expectloc=LOC_JUMP) if (expectloc=LOC_JUMP)

View File

@ -65,6 +65,7 @@ implementation
aasmtai,aasmdata,aasmcpu, aasmtai,aasmdata,aasmcpu,
symconst,symdef, symconst,symdef,
defutil, defutil,
procinfo,
cgbase,pass_2, cgbase,pass_2,
cpuinfo,ncgutil, cpuinfo,ncgutil,
hlcgobj,cgutils,cgobj,rgobj,tgobj; hlcgobj,cgutils,cgobj,rgobj,tgobj;
@ -80,6 +81,8 @@ implementation
begin begin
expectloc:=LOC_FPUREGISTER; expectloc:=LOC_FPUREGISTER;
first_sqrt_real := nil; first_sqrt_real := nil;
if needs_check_for_fpu_exceptions then
Include(current_procinfo.flags,pi_do_call);
end end
else else
result:=inherited first_sqrt_real; result:=inherited first_sqrt_real;
@ -104,6 +107,8 @@ implementation
begin begin
expectloc:=LOC_FPUREGISTER; expectloc:=LOC_FPUREGISTER;
first_sqr_real := nil; first_sqr_real := nil;
if needs_check_for_fpu_exceptions then
Include(current_procinfo.flags,pi_do_call);
end end
else else
result:=inherited first_sqr_real; result:=inherited first_sqr_real;
@ -116,6 +121,8 @@ implementation
begin begin
expectloc:=LOC_FPUREGISTER; expectloc:=LOC_FPUREGISTER;
first_round_real := nil; first_round_real := nil;
if needs_check_for_fpu_exceptions then
Include(current_procinfo.flags,pi_do_call);
end end
else else
result:=inherited first_round_real; result:=inherited first_round_real;
@ -128,6 +135,8 @@ implementation
begin begin
expectloc:=LOC_FPUREGISTER; expectloc:=LOC_FPUREGISTER;
first_trunc_real := nil; first_trunc_real := nil;
if needs_check_for_fpu_exceptions then
Include(current_procinfo.flags,pi_do_call);
end end
else else
result:=inherited first_trunc_real; result:=inherited first_trunc_real;
@ -136,6 +145,8 @@ implementation
function trvinlinenode.first_fma: tnode; function trvinlinenode.first_fma: tnode;
begin begin
if needs_check_for_fpu_exceptions then
Include(current_procinfo.flags,pi_do_call);
Result:=nil; Result:=nil;
end; end;