mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 11:49:23 +02:00
+ support for a_call_reg() on the llvm target (can call simple procvars now)
git-svn-id: branches/hlcgllvm@28480 -
This commit is contained in:
parent
3a78f4f580
commit
9d118567cd
@ -101,8 +101,10 @@ interface
|
||||
constructor getelementptr_reg_size_ref_size_const(dst:tregister;ptrsize:tdef;const ref:treference;indextype:tdef;index1:ptrint;indirect:boolean);
|
||||
constructor getelementptr_reg_tai_size_const(dst:tregister;const ai:tai;indextype:tdef;index1:ptrint;indirect:boolean);
|
||||
|
||||
{ e.g. dst = call retsize (paras) }
|
||||
{ e.g. dst = call retsize name (paras) }
|
||||
constructor call_size_name_paras(dst: tregister;retsize: tdef;name:tasmsymbol;paras: tfplist);
|
||||
{ e.g. dst = call retsize reg (paras) }
|
||||
constructor call_size_reg_paras(dst: tregister;retsize: tdef;reg:tregister;paras: tfplist);
|
||||
|
||||
procedure loadtai(opidx: longint; _ai: tai);
|
||||
procedure loaddef(opidx: longint; _def: tdef);
|
||||
@ -853,4 +855,15 @@ uses
|
||||
loadparas(3,paras);
|
||||
end;
|
||||
|
||||
|
||||
constructor taillvm.call_size_reg_paras(dst: tregister; retsize: tdef; reg: tregister; paras: tfplist);
|
||||
begin
|
||||
create_llvm(la_call);
|
||||
ops:=4;
|
||||
loadreg(0,dst);
|
||||
loaddef(1,retsize);
|
||||
loadreg(2,reg);
|
||||
loadparas(3,paras);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -429,10 +429,17 @@ implementation
|
||||
|
||||
|
||||
function thlcgllvm.a_call_reg(list: TAsmList; pd: tabstractprocdef; reg: tregister; const paras: array of pcgpara): tcgpara;
|
||||
var
|
||||
callparas: tfplist;
|
||||
llvmretdef,
|
||||
hlretdef,
|
||||
calldef: tdef;
|
||||
res: tregister;
|
||||
begin
|
||||
internalerror(2012042824);
|
||||
a_call_common(list,pd,paras,nil,res,calldef,hlretdef,llvmretdef,callparas);
|
||||
list.concat(taillvm.call_size_reg_paras(res,calldef,reg,callparas));
|
||||
result:=get_call_result_cgpara(pd,nil);
|
||||
// set_call_function_result(list,pd,pd.returndef,res,result);
|
||||
set_call_function_result(list,pd,llvmretdef,hlretdef,res,result);
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user