* call g_concatcopy() from a_load_ref_ref() if the size of the to be copied

data is big, because large load/store operations result in very slow code
    (and takes forever to generate by llc)

git-svn-id: trunk@34135 -
This commit is contained in:
Jonas Maebe 2016-07-15 14:34:43 +00:00
parent 88a736c95a
commit c05fa52775

View File

@ -810,6 +810,11 @@ implementation
sdref:=make_simple_ref(list,dref,tosize);
list.concat(taillvm.op_size_ref_size_ref(la_store,fromsize,sref,cpointerdef.getreusable(tosize),sdref));
end
else if (fromsize=tosize) and
not(fromsize.typ in [orddef,floatdef,enumdef]) and
(sref.refaddr<>addr_full) and
(fromsize.size>2*sizeof(aint)) then
g_concatcopy(list,fromsize,sref,dref)
else
inherited
end;