* optimize shortstring concatenations if they're on the right side of an assignment to directly use the left side instead of a temporary

This commit is contained in:
Sven/Sarah Barth 2022-10-09 13:20:14 +02:00
parent 32261a0f6d
commit 02aac653d2
2 changed files with 14 additions and 2 deletions

View File

@ -3382,7 +3382,13 @@ implementation
{ create the call to the concat routine both strings as arguments }
if assigned(aktassignmentnode) and
(aktassignmentnode.right=self) and
(aktassignmentnode.left.resultdef=resultdef) and
(
(aktassignmentnode.left.resultdef=resultdef) or
(
is_shortstring(aktassignmentnode.left.resultdef) and
is_shortstring(resultdef)
)
) and
valid_for_var(aktassignmentnode.left,false) then
begin
para:=ccallparanode.create(

View File

@ -341,7 +341,13 @@ begin
arrp.allow_array_constructor:=true;
if assigned(aktassignmentnode) and
(aktassignmentnode.right=p) and
(aktassignmentnode.left.resultdef=p.resultdef) and
(
(aktassignmentnode.left.resultdef=p.resultdef) or
(
is_shortstring(aktassignmentnode.left.resultdef) and
is_shortstring(p.resultdef)
)
) and
valid_for_var(aktassignmentnode.left,false) then
begin
para:=ccallparanode.create(