فهرست منبع

* fixed occasional rounding error with currency constants on the LLVM targets
(fixes test/tcustomattr13.pp)

git-svn-id: trunk@43017 -

Jonas Maebe 5 سال پیش
والد
کامیت
ff2d718699
1فایلهای تغییر یافته به همراه4 افزوده شده و 2 حذف شده
  1. 4 2
      compiler/llvm/nllvmcon.pas

+ 4 - 2
compiler/llvm/nllvmcon.pas

@@ -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));