|
@@ -49,10 +49,11 @@ implementation
|
|
|
|
|
|
uses
|
|
uses
|
|
systems,
|
|
systems,
|
|
- aasmdata,
|
|
|
|
|
|
+ aasmbase,aasmdata,aasmllvm,
|
|
nld,
|
|
nld,
|
|
- symtable,symconst,symdef,symsym,
|
|
|
|
- tgobj,cgbase,hlcgobj;
|
|
|
|
|
|
+ symtable,symconst,symdef,symsym,defutil,
|
|
|
|
+ procinfo,tgobj,
|
|
|
|
+ llvmbase,cgbase,hlcgobj;
|
|
|
|
|
|
function tllvmloadnode.pass_1: tnode;
|
|
function tllvmloadnode.pass_1: tnode;
|
|
begin
|
|
begin
|
|
@@ -75,6 +76,7 @@ procedure tllvmloadnode.pass_generate_code;
|
|
field: tfieldvarsym;
|
|
field: tfieldvarsym;
|
|
procreg, selfreg: tregister;
|
|
procreg, selfreg: tregister;
|
|
selfdef: tdef;
|
|
selfdef: tdef;
|
|
|
|
+ ai: taillvm;
|
|
begin
|
|
begin
|
|
inherited;
|
|
inherited;
|
|
case symtableentry.typ of
|
|
case symtableentry.typ of
|
|
@@ -117,6 +119,18 @@ procedure tllvmloadnode.pass_generate_code;
|
|
location.reference:=href;
|
|
location.reference:=href;
|
|
end;
|
|
end;
|
|
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;
|
|
end;
|
|
end;
|
|
|
|
|