+ added tasmlist parameter to getintparaloc() (needed for llvm)

git-svn-id: trunk@30429 -
This commit is contained in:
Jonas Maebe 2015-04-04 14:29:16 +00:00
parent 2336d22985
commit 61e4a1b811
25 changed files with 85 additions and 109 deletions

View File

@ -1748,9 +1748,9 @@ implementation
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(list,pd,1,paraloc1);
paramanager.getintparaloc(list,pd,2,paraloc2);
paramanager.getintparaloc(list,pd,3,paraloc3);
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
a_loadaddr_ref_cgpara(list,dest,paraloc2);
a_loadaddr_ref_cgpara(list,source,paraloc1);

View File

@ -32,7 +32,6 @@ unit cpupara;
type
tcpuparamanager = class(tparamanager)
function getintparaloc(nr : longint) : tparalocation;override;
procedure create_param_loc_info(p : tabstractprocdef);override;
function getfuncretparaloc(p : tabstractprocdef) : tparalocation;override;
end;
@ -45,25 +44,6 @@ unit cpupara;
cpuinfo,cginfo,cgbase,
defbase;
function tcpuparamanager.getintparaloc(nr : longint) : tparalocation;
begin
fillchar(result,sizeof(tparalocation),0);
if nr<1 then
internalerror(2002070801)
else if nr<=8 then
begin
result.loc:=LOC_REGISTER;
result.register:=tregister(longint(R_2)+nr);
end
else
begin
result.loc:=LOC_REFERENCE;
result.reference.index:=stack_pointer_reg;
result.reference.offset:=(nr-8)*4;
end;
end;
function getparaloc(p : tdef) : tloc;
begin

View File

@ -2475,9 +2475,9 @@ unit cgcpu;
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(list,pd,1,paraloc1);
paramanager.getintparaloc(list,pd,2,paraloc2);
paramanager.getintparaloc(list,pd,3,paraloc3);
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
a_loadaddr_ref_cgpara(list,dest,paraloc2);
a_loadaddr_ref_cgpara(list,source,paraloc1);

View File

@ -28,6 +28,7 @@ unit cpupara;
uses
globtype,globals,
aasmdata,
cpuinfo,cpubase,cgbase,cgutils,
symconst,symtype,symdef,parabase,paramgr;
@ -38,7 +39,7 @@ unit cpupara;
function get_volatile_registers_mm(calloption : tproccalloption):tcpuregisterset;override;
function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override;
function ret_in_param(def:tdef;pd:tabstractprocdef):boolean;override;
procedure getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override;
function create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tvarargsparalist):longint;override;
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
@ -80,7 +81,7 @@ unit cpupara;
end;
procedure tcpuparamanager.getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
var
paraloc : pcgparalocation;
psym : tparavarsym;

View File

@ -550,9 +550,9 @@ unit cgcpu;
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(list,pd,1,paraloc1);
paramanager.getintparaloc(list,pd,2,paraloc2);
paramanager.getintparaloc(list,pd,3,paraloc3);
a_load_const_cgpara(list,OS_8,0,paraloc3);
a_load_reg_cgpara(list,OS_16,src,paraloc2);
a_load_reg_cgpara(list,OS_16,dst,paraloc1);
@ -1629,9 +1629,9 @@ unit cgcpu;
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(list,pd,1,paraloc1);
paramanager.getintparaloc(list,pd,2,paraloc2);
paramanager.getintparaloc(list,pd,3,paraloc3);
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
a_loadaddr_ref_cgpara(list,dest,paraloc2);
a_loadaddr_ref_cgpara(list,source,paraloc1);

View File

@ -2182,8 +2182,8 @@ implementation
if (cs_check_object in current_settings.localswitches) then
begin
pd:=search_system_proc('fpc_check_object_ext');
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
reference_reset_symbol(hrefvmt,current_asmdata.RefAsmSymbol(objdef.vmt_mangledname,AT_DATA),0,sizeof(pint));
if pd.is_pushleftright then
begin
@ -2205,7 +2205,7 @@ implementation
if (cs_check_range in current_settings.localswitches) then
begin
pd:=search_system_proc('fpc_check_object');
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(list,pd,1,cgpara1);
a_load_reg_cgpara(list,OS_ADDR,reg,cgpara1);
paramanager.freecgpara(list,cgpara1);
allocallcpuregisters(list);

View File

@ -3116,7 +3116,7 @@ implementation
current_asmdata.getjumplabel(oklabel);
a_cmp_const_reg_label(list,selftype,OC_NE,0,reg,oklabel);
cgpara1.init;
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(list,pd,1,cgpara1);
a_load_const_cgpara(list,s32inttype,aint(210),cgpara1);
paramanager.freecgpara(list,cgpara1);
g_call_system_proc(list,pd,[@cgpara1],nil);
@ -3149,9 +3149,9 @@ implementation
cgpara1.init;
cgpara2.init;
cgpara3.init;
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(pd,3,cgpara3);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
paramanager.getintparaloc(list,pd,3,cgpara3);
if pd.is_pushleftright then
begin
a_loadaddr_ref_cgpara(list,strdef,dest,cgpara1);
@ -3181,8 +3181,8 @@ implementation
pd:=search_system_proc('fpc_variant_copy_overwrite');
cgpara1.init;
cgpara2.init;
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
if pd.is_pushleftright then
begin
a_loadaddr_ref_cgpara(list,vardef,source,cgpara1);
@ -3225,7 +3225,7 @@ implementation
if incrfunc<>'' then
begin
pd:=search_system_proc(incrfunc);
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(list,pd,1,cgpara1);
{ widestrings aren't ref. counted on all platforms so we need the address
to create a real copy }
if is_widestring(t) then
@ -3239,8 +3239,8 @@ implementation
else
begin
pd:=search_system_proc('fpc_addref');
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
if is_open_array(t) then
InternalError(201103054);
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti),0,sizeof(pint));
@ -3279,7 +3279,7 @@ implementation
else if t.typ=variantdef then
begin
pd:=search_system_proc('fpc_variant_init');
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(list,pd,1,cgpara1);
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
paramanager.freecgpara(list,cgpara1);
g_call_system_proc(list,pd,[@cgpara1],nil);
@ -3289,8 +3289,8 @@ implementation
if is_open_array(t) then
InternalError(201103052);
pd:=search_system_proc('fpc_initialize');
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti),0,sizeof(pint));
if pd.is_pushleftright then
begin
@ -3339,8 +3339,8 @@ implementation
pd:=search_system_proc('fpc_dynarray_clear')
else
pd:=search_system_proc('fpc_finalize');
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti),0,sizeof(pint));
if pd.is_pushleftright then
begin
@ -3361,7 +3361,7 @@ implementation
end;
pd:=search_system_proc(decrfunc);
cgpara1.init;
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(list,pd,1,cgpara1);
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
paramanager.freecgpara(list,cgpara1);
g_call_system_proc(list,pd,[@cgpara1],nil);
@ -3379,9 +3379,9 @@ implementation
cgpara2.init;
cgpara3.init;
pd:=search_system_proc(name);
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(pd,3,cgpara3);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
paramanager.getintparaloc(list,pd,3,cgpara3);
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti),0,sizeof(pint));
{ if calling convention is left to right, push parameters 1 and 2 }
@ -3666,7 +3666,7 @@ implementation
{ do getmem call }
pd:=search_system_proc('fpc_getmem');
cgpara1.init;
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(list,pd,1,cgpara1);
a_load_reg_cgpara(list,sinttype,sizereg,cgpara1);
paramanager.freecgpara(list,cgpara1);
getmemres:=g_call_system_proc(list,pd,[@cgpara1],ptrarrdef);
@ -3681,9 +3681,9 @@ implementation
cgpara1.init;
cgpara2.init;
cgpara3.init;
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(pd,2,cgpara2);
paramanager.getintparaloc(pd,3,cgpara3);
paramanager.getintparaloc(list,pd,1,cgpara1);
paramanager.getintparaloc(list,pd,2,cgpara2);
paramanager.getintparaloc(list,pd,3,cgpara3);
if pd.is_pushleftright then
begin
{ load source }
@ -3720,7 +3720,7 @@ implementation
{ do freemem call }
pd:=search_system_proc('fpc_freemem');
cgpara1.init;
paramanager.getintparaloc(pd,1,cgpara1);
paramanager.getintparaloc(list,pd,1,cgpara1);
{ load source }
a_load_loc_cgpara(list,getpointerdef(arrdef),l,cgpara1);
paramanager.freecgpara(list,cgpara1);

View File

@ -51,7 +51,7 @@ unit cpupara;
other memory models, this mechanism has to be extended somehow to
support 32-bit addresses on a 16-bit CPU.
}
procedure getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override;
function create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tvarargsparalist):longint;override;
procedure createtempparaloc(list: TAsmList;calloption : tproccalloption;parasym : tparavarsym;can_use_final_stack_loc : boolean;var cgpara:TCGPara);override;
@ -227,7 +227,7 @@ unit cpupara;
end;
procedure tcpuparamanager.getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
var
paraloc : pcgparalocation;
psym: tparavarsym;

View File

@ -156,7 +156,7 @@ implementation
internalerror(2012010601);
pd:=tprocdef(tprocsym(sym).ProcdefList[0]);
paraloc1.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
hlcg.a_load_reg_cgpara(current_asmdata.CurrAsmList,resultdef,location.reference.base,paraloc1);
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
paraloc1.done;

View File

@ -43,7 +43,7 @@ interface
{Returns a structure giving the information on the storage of the parameter
(which must be an integer parameter)
@param(nr Parameter number of routine, starting from 1)}
procedure getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
function create_paraloc_info(p : TAbstractProcDef; side: tcallercallee):longint;override;
function create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tvarargsparalist):longint;override;
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
@ -64,7 +64,7 @@ implementation
hlcgobj;
procedure tcpuparamanager.GetIntParaLoc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
procedure tcpuparamanager.GetIntParaLoc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
begin
{ not yet implemented/used }
internalerror(2010121001);

View File

@ -634,9 +634,9 @@ unit cgcpu;
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(list,pd,1,paraloc1);
paramanager.getintparaloc(list,pd,2,paraloc2);
paramanager.getintparaloc(list,pd,3,paraloc3);
a_load_const_cgpara(list,OS_8,0,paraloc3);
a_load_const_cgpara(list,size,a,paraloc2);
a_load_reg_cgpara(list,OS_32,reg,paraloc1);
@ -669,9 +669,9 @@ unit cgcpu;
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(list,pd,1,paraloc1);
paramanager.getintparaloc(list,pd,2,paraloc2);
paramanager.getintparaloc(list,pd,3,paraloc3);
a_load_const_cgpara(list,OS_8,0,paraloc3);
a_load_reg_cgpara(list,OS_32,reg1,paraloc2);
a_load_reg_cgpara(list,OS_32,reg2,paraloc1);

View File

@ -1480,9 +1480,9 @@ begin
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd, 1, paraloc1);
paramanager.getintparaloc(pd, 2, paraloc2);
paramanager.getintparaloc(pd, 3, paraloc3);
paramanager.getintparaloc(list, pd, 1, paraloc1);
paramanager.getintparaloc(list, pd, 2, paraloc2);
paramanager.getintparaloc(list, pd, 3, paraloc3);
a_load_const_cgpara(list, OS_SINT, len, paraloc3);
a_loadaddr_ref_cgpara(list, dest, paraloc2);
a_loadaddr_ref_cgpara(list, Source, paraloc1);

View File

@ -1237,7 +1237,7 @@ implementation
begin
pd:=search_system_proc('fpc_safecallcheck');
cgpara.init;
paramanager.getintparaloc(pd,1,cgpara);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,cgpara);
cg.a_load_reg_cgpara(current_asmdata.CurrAsmList,OS_INT,NR_FUNCTION_RESULT_REG,cgpara);
paramanager.freecgpara(current_asmdata.CurrAsmList,cgpara);
cg.g_call(current_asmdata.CurrAsmList,'FPC_SAFECALLCHECK');

View File

@ -1268,7 +1268,7 @@ implementation
{ send the vmt parameter }
pd:=search_system_proc('fpc_catches');
reference_reset_symbol(href2,current_asmdata.RefAsmSymbol(excepttype.vmt_mangledname,AT_DATA),0,sizeof(pint));
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
cg.a_loadaddr_ref_cgpara(current_asmdata.CurrAsmList,href2,paraloc1);
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
fpc_catches_res:=hlcg.g_call_system_proc(current_asmdata.CurrAsmList,pd,[@paraloc1],nil);
@ -1387,7 +1387,7 @@ implementation
nil otherwise. }
pd:=search_system_proc('fpc_safecallhandler');
cgpara.init;
paramanager.getintparaloc(pd,1,cgpara);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,cgpara);
if is_class(current_procinfo.procdef.struct) then
begin
selfsym:=tparavarsym(current_procinfo.procdef.parast.Find('self'));

View File

@ -326,7 +326,7 @@ implementation
begin
paraloc1.init;
pd:=search_system_proc('fpc_tls_add');
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
if not(vo_is_weak_external in gvs.varoptions) then
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(gvs.mangledname),0,sizeof(pint))
else
@ -377,7 +377,7 @@ implementation
if pvd.typ<>procvardef then
internalerror(2012120901);
paraloc1.init;
paramanager.getintparaloc(tprocvardef(pvd),1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,tprocvardef(pvd),1,paraloc1);
hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,pvd);
reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_THREADVAR_RELOCATE'),0,pvd.size);
hlcg.a_load_ref_reg(current_asmdata.CurrAsmList,pvd,pvd,href,hregister);

View File

@ -426,7 +426,7 @@ implementation
cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_INT,OC_NE,0,hdenom,hl);
paraloc1.init;
pd:=search_system_proc('fpc_handleerror');
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
cg.a_load_const_cgpara(current_asmdata.CurrAsmList,OS_S32,aint(200),paraloc1);
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);

View File

@ -305,7 +305,7 @@ implementation
internalerror(2012010601);
pd:=tprocdef(tprocsym(sym).ProcdefList[0]);
paraloc1.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
hlcg.a_load_reg_cgpara(current_asmdata.CurrAsmList,left.resultdef,location.reference.base,paraloc1);
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
paraloc1.done;
@ -393,7 +393,7 @@ implementation
(sym.typ<>procsym) then
internalerror(2012010602);
pd:=tprocdef(tprocsym(sym).ProcdefList[0]);
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
hlcg.a_load_reg_cgpara(current_asmdata.CurrAsmList,left.resultdef,location.reference.base,paraloc1);
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
hlcg.allocallcpuregisters(current_asmdata.CurrAsmList);
@ -778,8 +778,8 @@ implementation
if is_dynamic_array(left.resultdef) then
begin
pd:=search_system_proc('fpc_dynarray_rangecheck');
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
if pd.is_pushleftright then
begin
cg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.location,paraloc1);
@ -820,8 +820,8 @@ implementation
begin
helpername:='fpc_'+tstringdef(left.resultdef).stringtypname+'_rangecheck';
pd:=search_system_proc(helpername);
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
if pd.is_pushleftright then
begin
cg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.location,paraloc1);

View File

@ -413,9 +413,9 @@ implementation
{ fpc_pushexceptaddr(exceptionframetype, setjmp_buffer, exception_address_chain_entry) }
pd:=search_system_proc('fpc_pushexceptaddr');
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,3,paraloc3);
if pd.is_pushleftright then
begin
{ type of exceptionframe }
@ -445,7 +445,7 @@ implementation
{ fpc_setjmp(result_of_pushexceptaddr_call) }
pd:=search_system_proc('fpc_setjmp');
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
hlcg.a_load_reg_cgpara(list,pushexceptres.def,tmpresloc.register,paraloc1);
paramanager.freecgpara(list,paraloc1);
@ -1393,7 +1393,7 @@ implementation
begin
pd:=search_system_proc('fpc_stackcheck');
paraloc1.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
cg.a_load_const_cgpara(list,OS_INT,current_procinfo.calc_stackframe_size,paraloc1);
paramanager.freecgpara(list,paraloc1);
paraloc1.done;
@ -1408,7 +1408,7 @@ implementation
pd:=search_system_proc('fpc_stackcheck');
paraloc1.init;
{ Also alloc the register needed for the parameter }
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
paramanager.freecgpara(list,paraloc1);
{ Call the helper }
cg.allocallcpuregisters(list);

View File

@ -81,7 +81,7 @@ unit paramgr;
function get_volatile_registers_flags(calloption : tproccalloption):tcpuregisterset;virtual;
function get_volatile_registers_mm(calloption : tproccalloption):tcpuregisterset;virtual;
procedure getintparaloc(pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);virtual;
procedure getintparaloc(list: TAsmList; pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);virtual;
{# allocate an individual pcgparalocation that's part of a tcgpara
@ -624,7 +624,7 @@ implementation
end;
procedure tparamanager.getintparaloc(pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);
procedure tparamanager.getintparaloc(list: TAsmList; pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);
begin
if (nr<1) or (nr>pd.paras.count) then
InternalError(2013060101);

View File

@ -37,7 +37,7 @@ unit cpupara;
function get_volatile_registers_fpu(calloption : tproccalloption):tcpuregisterset;override;
function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override;
procedure getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override;
function create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tvarargsparalist):longint;override;
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
@ -78,7 +78,7 @@ unit cpupara;
end;
procedure tcpuparamanager.getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
var
paraloc : pcgparalocation;
psym : tparavarsym;

View File

@ -41,7 +41,7 @@ type
tproccalloption): boolean; override;
function ret_in_param(def: tdef; pd: tabstractprocdef): boolean; override;
procedure getintparaloc(pd : tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
function create_paraloc_info(p: tabstractprocdef; side: tcallercallee): longint; override;
function create_varargs_paraloc_info(p: tabstractprocdef; varargspara:
tvarargsparalist): longint; override;
@ -79,7 +79,7 @@ begin
result := [RS_F0..RS_F13];
end;
procedure tcpuparamanager.getintparaloc(pd : tabstractprocdef; nr: longint; var cgpara: tcgpara);
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara);
var
paraloc: pcgparalocation;
psym: tparavarsym;

View File

@ -692,7 +692,7 @@ unit cgppc;
begin
pd:=search_system_proc('mcount');
paraloc1.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(list,pd,1,paraloc1);
a_load_reg_cgpara(list,OS_ADDR,NR_R0,paraloc1);
paramanager.freecgpara(list,paraloc1);
paraloc1.done;

View File

@ -1102,9 +1102,9 @@ implementation
paraloc1.init;
paraloc2.init;
paraloc3.init;
paramanager.getintparaloc(pd,1,paraloc1);
paramanager.getintparaloc(pd,2,paraloc2);
paramanager.getintparaloc(pd,3,paraloc3);
paramanager.getintparaloc(list,pd,1,paraloc1);
paramanager.getintparaloc(list,pd,2,paraloc2);
paramanager.getintparaloc(list,pd,3,paraloc3);
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
a_loadaddr_ref_cgpara(list,dest,paraloc2);
a_loadaddr_ref_cgpara(list,source,paraloc1);

View File

@ -39,7 +39,6 @@ unit cpupara;
rtl are used.
}
tcpuparamanager = class(tparamanager)
function getintparaloc(nr : longint) : tparalocation;override;
procedure create_param_loc_info(p : tabstractprocdef);override;
function getselflocation(p : tabstractprocdef) : tparalocation;override;
end;
@ -54,10 +53,6 @@ unit cpupara;
cpuinfo,cginfo,cgbase,
defutil;
function tcpuparamanager.getintparaloc(nr : longint) : tparalocation;
begin
end;
procedure tcpuparamanager.create_param_loc_info(p : tabstractprocdef);
var
param_offset : integer;

View File

@ -438,8 +438,8 @@ unit cgcpu;
pd:=search_system_proc('_fpc_local_unwind');
para1.init;
para2.init;
paramanager.getintparaloc(pd,1,para1);
paramanager.getintparaloc(pd,2,para2);
paramanager.getintparaloc(list,pd,1,para1);
paramanager.getintparaloc(list,pd,2,para2);
reference_reset_symbol(href,l,0,1);
{ TODO: using RSP is correct only while the stack is fixed!!
(true now, but will change if/when allocating from stack is implemented) }