From c3233b21e884aec13501412ecf35d337d09e10d1 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sat, 25 Apr 2015 15:51:22 +0000 Subject: [PATCH] * fixed reference/register types for thlcgobj.a_bit_test_* git-svn-id: trunk@30717 - --- compiler/hlcgobj.pas | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/compiler/hlcgobj.pas b/compiler/hlcgobj.pas index 57d40157a7..d78cc5a26f 100644 --- a/compiler/hlcgobj.pas +++ b/compiler/hlcgobj.pas @@ -1596,8 +1596,12 @@ implementation end; procedure thlcgobj.a_bit_test_const_ref_reg(list: TAsmList; fromsize, destsize: tdef; bitnumber: aint; const ref: treference; destreg: tregister); + var + href: treference; begin - a_load_subsetref_reg(list,u8inttype,destsize,get_bit_const_ref_sref(bitnumber,fromsize,ref),destreg); + href:=ref; + g_ptrtypecast_ref(list,getpointerdef(fromsize),getpointerdef(u8inttype),href); + a_load_subsetref_reg(list,u8inttype,destsize,get_bit_const_ref_sref(bitnumber,fromsize,href),destreg); end; procedure thlcgobj.a_bit_test_const_reg_reg(list: TAsmList; setregsize, destsize: tdef; bitnumber: aint; setreg, destreg: tregister); @@ -1621,8 +1625,12 @@ implementation end; procedure thlcgobj.a_bit_test_reg_ref_reg(list: TAsmList; bitnumbersize, refsize, destsize: tdef; bitnumber: tregister; const ref: treference; destreg: tregister); + var + href: treference; begin - a_load_subsetref_reg(list,u8inttype,destsize,get_bit_reg_ref_sref(list,bitnumbersize,refsize,bitnumber,ref),destreg); + href:=ref; + g_ptrtypecast_ref(list,getpointerdef(refsize),getpointerdef(u8inttype),href); + a_load_subsetref_reg(list,u8inttype,destsize,get_bit_reg_ref_sref(list,bitnumbersize,refsize,bitnumber,href),destreg); end; procedure thlcgobj.a_bit_test_reg_loc_reg(list: TAsmList; bitnumbersize, locsize, destsize: tdef; bitnumber: tregister; const loc: tlocation; destreg: tregister); @@ -1705,12 +1713,17 @@ implementation end; procedure thlcgobj.a_bit_set_const_ref(list: TAsmList; doset: boolean; destsize: tdef; bitnumber: tcgint; const ref: treference); + var + href: treference; begin - a_load_const_subsetref(list,u8inttype,ord(doset),get_bit_const_ref_sref(bitnumber,destsize,ref)); + href:=ref; + g_ptrtypecast_ref(list,getpointerdef(destsize),getpointerdef(u8inttype),href); + a_load_const_subsetref(list,u8inttype,ord(doset),get_bit_const_ref_sref(bitnumber,destsize,href)); end; procedure thlcgobj.a_bit_set_const_reg(list: TAsmList; doset: boolean; destsize: tdef; bitnumber: tcgint; destreg: tregister); begin + g_ptrtypecast_reg(list,getpointerdef(destsize),getpointerdef(u8inttype),destreg); a_load_const_subsetreg(list,u8inttype,ord(doset),get_bit_const_reg_sreg(destsize,bitnumber,destreg)); end; @@ -1730,7 +1743,11 @@ implementation end; procedure thlcgobj.a_bit_set_reg_ref(list: TAsmList; doset: boolean; fromsize, tosize: tdef; bitnumber: tregister; const ref: treference); + var + href: treference; begin + href:=ref; + g_ptrtypecast_ref(list,getpointerdef(tosize),getpointerdef(u8inttype),href); a_load_const_subsetref(list,u8inttype,ord(doset),get_bit_reg_ref_sref(list,fromsize,tosize,bitnumber,ref)); end;