* fixed llvm types for loading the address of a nested routine

git-svn-id: trunk@32594 -
This commit is contained in:
Jonas Maebe 2015-12-05 18:03:45 +00:00
parent d16d2e6e3c
commit df9efdeb4c
2 changed files with 3 additions and 3 deletions

View File

@ -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;

View File

@ -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);