mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-22 23:19:27 +01:00
* fixed llvm types for loading the address of a nested routine
git-svn-id: trunk@32594 -
This commit is contained in:
parent
d16d2e6e3c
commit
df9efdeb4c
@ -164,7 +164,7 @@ procedure tllvmtypeconvnode.second_proc_to_procvar;
|
|||||||
if location.loc<>LOC_REFERENCE then
|
if location.loc<>LOC_REFERENCE then
|
||||||
internalerror(2015111902);
|
internalerror(2015111902);
|
||||||
hlcg.g_ptrtypecast_ref(current_asmdata.CurrAsmList,
|
hlcg.g_ptrtypecast_ref(current_asmdata.CurrAsmList,
|
||||||
cpointerdef.getreusable(left.resultdef),
|
cpointerdef.getreusable(tprocdef(left.resultdef).getcopyas(procvardef,pc_normal)),
|
||||||
cpointerdef.getreusable(resultdef),
|
cpointerdef.getreusable(resultdef),
|
||||||
location.reference);
|
location.reference);
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -90,7 +90,7 @@ procedure tllvmloadnode.pass_generate_code;
|
|||||||
{ on little endian, location.register contains proc and
|
{ on little endian, location.register contains proc and
|
||||||
location.registerhi contains self; on big endian, it's the
|
location.registerhi contains self; on big endian, it's the
|
||||||
other way around }
|
other way around }
|
||||||
tg.gethltemp(current_asmdata.CurrAsmList,resultdef,resultdef.size,tt_normal,href);
|
tg.gethltemp(current_asmdata.CurrAsmList,pvdef,pvdef.size,tt_normal,href);
|
||||||
if target_info.endian=endian_little then
|
if target_info.endian=endian_little then
|
||||||
begin
|
begin
|
||||||
procreg:=location.register;
|
procreg:=location.register;
|
||||||
@ -110,7 +110,7 @@ procedure tllvmloadnode.pass_generate_code;
|
|||||||
else
|
else
|
||||||
selfdef:=cpointerdef.getreusable(left.resultdef);
|
selfdef:=cpointerdef.getreusable(left.resultdef);
|
||||||
mpref:=href;
|
mpref:=href;
|
||||||
hlcg.g_ptrtypecast_ref(current_asmdata.CurrAsmList,cpointerdef.getreusable(resultdef),cpointerdef.getreusable(methodpointertype),mpref);
|
hlcg.g_ptrtypecast_ref(current_asmdata.CurrAsmList,cpointerdef.getreusable(pvdef),cpointerdef.getreusable(methodpointertype),mpref);
|
||||||
hlcg.g_load_reg_field_by_name(current_asmdata.CurrAsmList,cprocvardef.getreusableprocaddr(procdef),trecorddef(methodpointertype),procreg,'proc',mpref);
|
hlcg.g_load_reg_field_by_name(current_asmdata.CurrAsmList,cprocvardef.getreusableprocaddr(procdef),trecorddef(methodpointertype),procreg,'proc',mpref);
|
||||||
hlcg.g_load_reg_field_by_name(current_asmdata.CurrAsmList,selfdef,trecorddef(methodpointertype),selfreg,'self',mpref);
|
hlcg.g_load_reg_field_by_name(current_asmdata.CurrAsmList,selfdef,trecorddef(methodpointertype),selfreg,'self',mpref);
|
||||||
location_reset_ref(location,LOC_REFERENCE,location.size,href.alignment);
|
location_reset_ref(location,LOC_REFERENCE,location.size,href.alignment);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user