* typecast second_proc_to_procvar() results for llvm if the generic code

performed a simple location_copy() from one complex procvar type to
    another

git-svn-id: trunk@32426 -
This commit is contained in:
Jonas Maebe 2015-11-21 12:37:50 +00:00
parent 8cebb76572
commit 72c7cb2770

View File

@ -45,7 +45,7 @@ interface
procedure second_int_to_real;override;
{ procedure second_real_to_real;override; }
{ procedure second_cord_to_pointer;override; }
{ procedure second_proc_to_procvar;override; }
procedure second_proc_to_procvar;override;
procedure second_nil_to_methodprocvar; override;
procedure second_bool_to_int;override;
procedure second_int_to_bool;override;
@ -155,6 +155,22 @@ procedure tllvmtypeconvnode.second_int_to_real;
end;
procedure tllvmtypeconvnode.second_proc_to_procvar;
begin
inherited;
if not tabstractprocdef(resultdef).is_addressonly and
not tabstractprocdef(left.resultdef).is_addressonly then
begin
if location.loc<>LOC_REFERENCE then
internalerror(2015111902);
hlcg.g_ptrtypecast_ref(current_asmdata.CurrAsmList,
cpointerdef.getreusable(left.resultdef),
cpointerdef.getreusable(resultdef),
location.reference);
end;
end;
procedure tllvmtypeconvnode.second_nil_to_methodprocvar;
var
href: treference;