[fpc-devel] (patch) An attempt to improve assignments/functionresult reuse

Sergei Gorelkin sergei_gorelkin at mail.ru
Sat Dec 15 21:13:28 CET 2007

Sergei Gorelkin wrote:
> Florian Klaempfl wrote:
>> Ok, so I guess we can change this. Anybody volunteer to implement it :)?
> Well, if there is no hard time schedule imposed on this, I can try. I've 
> started all this, after all :)
I had investigated the issue. Surprisingly enough, changing string 
return convention does not cause any test failures on both Linux and 
Windows. The only issue is that statements like 's := Copy(s, ...)' 
start leaking memory, but that is easily fixed.

However, it seems that I understood reasons for the current 
implementation. It is exactly the same reason for which I've started 
this topic - until assignments of function return value can be properly 
optimized, the current implementation is more effective than Delphi's. 
Changing the convention right now will replace implicit exception frame 
in callee by a temp variable (with the same implicit frame) in caller, 
resulting in no performance increase at best.

So I guess that I should turn straight to DFA. However, some questions 
arise even before the start:

1. I see no place in compiler source where cs_opt_nodedfa flag is being 
set. How is it supposed to work?

2. DFA is currently disabled for functions with exception frames, which 
makes it useless for resolving the issue with automated types 
assignments. Any hints how to work around this?


More information about the fpc-devel mailing list