From 6d02aedf709c20eabb71996c2e8aec14c24df196 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sat, 14 Mar 2015 18:36:46 +0000 Subject: [PATCH] * support multiple register paralocs in tcgobj.a_loadfpu_ref_cgpara() git-svn-id: trunk@30223 - --- compiler/cgobj.pas | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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