diff --git a/compiler/ncgld.pas b/compiler/ncgld.pas index fa2029d100..e218f9a108 100644 --- a/compiler/ncgld.pas +++ b/compiler/ncgld.pas @@ -256,6 +256,7 @@ implementation endrelocatelab, norelocatelab : tasmlabel; paraloc1 : tcgpara; + vd, pvd : tdef; begin { we don't know the size of all arrays } @@ -452,10 +453,11 @@ implementation hregister:=location.register else begin - hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidpointertype); + vd:=getpointerdef(resultdef); + hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,vd); { we need to load only an address } location.size:=OS_ADDR; - hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,voidpointertype,voidpointertype,location,hregister); + hlcg.a_load_loc_reg(current_asmdata.CurrAsmList,vd,vd,location,hregister); end; { assume packed records may always be unaligned } if not(resultdef.typ in [recorddef,objectdef]) or