* fixed occasional rounding error with currency constants on the LLVM targets

(fixes test/tcustomattr13.pp)

git-svn-id: trunk@43017 -
This commit is contained in:
Jonas Maebe 2019-09-15 20:43:09 +00:00
parent 4deb62ad87
commit ff2d718699

View File

@ -153,10 +153,12 @@ implementation
s32real,s64real:
current_asmdata.CurrAsmList.concat(taillvm.op_reg_size_fpconst_size(la_bitcast,location.register,resultdef,value_real,resultdef));
{ comp and currency are handled as int64 at the llvm level }
s64comp,
s64currency:
s64comp:
{ sc80floattype instead of resultdef, see comment in thlcgllvm.a_loadfpu_ref_reg }
current_asmdata.CurrAsmList.concat(taillvm.op_reg_size_const_size(la_sitofp,location.register,s64inttype,trunc(value_real),sc80floattype));
s64currency:
{ sc80floattype instead of resultdef, see comment in thlcgllvm.a_loadfpu_ref_reg }
current_asmdata.CurrAsmList.concat(taillvm.op_reg_size_const_size(la_sitofp,location.register,s64inttype,trunc(value_currency),sc80floattype));
{$ifdef cpuextended}
s80real,sc80real:
current_asmdata.CurrAsmList.concat(taillvm.op_reg_size_fpconst80_size(la_bitcast,location.register,resultdef,value_real,resultdef));