mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 14:19:31 +02:00
+ support for llvm load nodes of labelsym using blockaddress()
git-svn-id: trunk@34945 -
This commit is contained in:
parent
3b7d9447ae
commit
ade45eb31a
@ -49,10 +49,11 @@ implementation
|
||||
|
||||
uses
|
||||
systems,
|
||||
aasmdata,
|
||||
aasmbase,aasmdata,aasmllvm,
|
||||
nld,
|
||||
symtable,symconst,symdef,symsym,
|
||||
tgobj,cgbase,hlcgobj;
|
||||
symtable,symconst,symdef,symsym,defutil,
|
||||
procinfo,tgobj,
|
||||
llvmbase,cgbase,hlcgobj;
|
||||
|
||||
function tllvmloadnode.pass_1: tnode;
|
||||
begin
|
||||
@ -75,6 +76,7 @@ procedure tllvmloadnode.pass_generate_code;
|
||||
field: tfieldvarsym;
|
||||
procreg, selfreg: tregister;
|
||||
selfdef: tdef;
|
||||
ai: taillvm;
|
||||
begin
|
||||
inherited;
|
||||
case symtableentry.typ of
|
||||
@ -117,6 +119,18 @@ procedure tllvmloadnode.pass_generate_code;
|
||||
location.reference:=href;
|
||||
end;
|
||||
end;
|
||||
labelsym:
|
||||
begin
|
||||
selfreg:=hlcg.getaddressregister(current_asmdata.CurrAsmList,voidcodepointertype);
|
||||
ai:=taillvm.blockaddress(
|
||||
current_asmdata.RefAsmSymbol(current_procinfo.procdef.mangledname,AT_FUNCTION),
|
||||
location.reference.symbol
|
||||
);
|
||||
current_asmdata.CurrAsmList.concat(
|
||||
taillvm.op_reg_tai_size(la_bitcast,selfreg,ai,voidcodepointertype)
|
||||
);
|
||||
reference_reset_base(location.reference,selfreg,0,location.reference.alignment);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user