diff --git a/compiler/cgobj.pas b/compiler/cgobj.pas index b508c27b28..f1e4ffa5fa 100644 --- a/compiler/cgobj.pas +++ b/compiler/cgobj.pas @@ -1644,13 +1644,22 @@ implementation var href : treference; hsize: tcgsize; + paraloc: PCGParaLocation; begin case cgpara.location^.loc of LOC_FPUREGISTER,LOC_CFPUREGISTER: begin - cgpara.check_simple_location; paramanager.alloccgpara(list,cgpara); - a_loadfpu_ref_reg(list,size,size,ref,cgpara.location^.register); + paraloc:=cgpara.location; + href:=ref; + while assigned(paraloc) do + begin + if not(paraloc^.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER]) then + internalerror(2015031501); + a_loadfpu_ref_reg(list,paraloc^.size,paraloc^.size,href,paraloc^.register); + inc(href.offset,tcgsize2size[paraloc^.size]); + paraloc:=paraloc^.next; + end; end; LOC_REFERENCE,LOC_CREFERENCE: begin