From d0178f7ae0d768aa7d7988418561380834cb9fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A1roly=20Balogh?= Date: Mon, 8 Feb 2021 04:12:21 +0000 Subject: [PATCH] m68k: fix a_loadfpu_ref_reg to call a_loadfpu_reg_reg instead of a_load_reg_reg. made a_loadfpu_reg_reg internalerror on invalid target sizes when loading to a different reg size git-svn-id: trunk@48523 - --- compiler/m68k/cgcpu.pas | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/compiler/m68k/cgcpu.pas b/compiler/m68k/cgcpu.pas index be88900d21..c628d3b794 100644 --- a/compiler/m68k/cgcpu.pas +++ b/compiler/m68k/cgcpu.pas @@ -1068,15 +1068,17 @@ unit cgcpu; list.concat(taicpu.op_reg_reg(A_FMOVE, tcgsize2opsize[tosize], reg1, hreg)); list.concat(taicpu.op_reg_reg(A_FMOVE, tcgsize2opsize[tosize], hreg, reg2)); end; + OS_F64: + begin + //list.concat(tai_comment.create(strpnew('a_loadfpu_reg_reg rounding via stack'))); + reference_reset_base(href, NR_STACK_POINTER_REG, 0, ctempposinvalid, 0, []); + href.direction:=dir_dec; + list.concat(taicpu.op_reg_ref(A_FMOVE, tcgsize2opsize[tosize], reg1, href)); + href.direction:=dir_inc; + list.concat(taicpu.op_ref_reg(A_FMOVE, tcgsize2opsize[tosize], href, reg2)); + end; else - begin - //list.concat(tai_comment.create(strpnew('a_loadfpu_reg_reg rounding via stack'))); - reference_reset_base(href, NR_STACK_POINTER_REG, 0, ctempposinvalid, 0, []); - href.direction:=dir_dec; - list.concat(taicpu.op_reg_ref(A_FMOVE, tcgsize2opsize[tosize], reg1, href)); - href.direction:=dir_inc; - list.concat(taicpu.op_ref_reg(A_FMOVE, tcgsize2opsize[tosize], href, reg2)); - end; + internalerror(2021020802); end; end else @@ -1098,7 +1100,7 @@ unit cgcpu; fixref(list,href,current_settings.fputype = fpu_coldfire); list.concat(taicpu.op_ref_reg(A_FMOVE,opsize,href,reg)); if fromsize > tosize then - a_load_reg_reg(list,fromsize,tosize,reg,reg); + a_loadfpu_reg_reg(list,fromsize,tosize,reg,reg); end; procedure tcg68k.a_loadfpu_reg_ref(list: TAsmList; fromsize,tosize: tcgsize; reg: tregister; const ref: treference);