[fpc-devel] Need patch for bugs : 0011503 / 0009472
Jonas Maebe
jonas.maebe at elis.ugent.be
Thu Jun 19 14:13:04 CEST 2008
On 19 Jun 2008, at 13:53, Boian Mitov wrote:
> This functionality works in all versions of Delphi 5-2007. We
> support them all, and we have done so for years. We have no problems
> to compile with such optimizations turned off.
One final time: please read the comments to http://bugs.freepascal.org/view.php?id=9472
.
It's not an optimisation which needs to be turned off. On the
contrary, you are depending on a particular optimisation to be
performed (namely skipping the use of temporary function results when
assigning the result of a function returning an interface to certain
classes of local variables). The effects of this behaviour can also be
emulated by clearing all temps immediately after their use, as Michael
indicates, in which case you obviously get slower and much more
bloated code (and make the compiler code itself also more complex).
I repeat: there is absolutely nothing wrong with using a temporary
function result in such situations, and depending on it not being used
is an error in your code. Your program will also break under Delphi
e.g. when you assign the interface result of a nested functions to a
local variable and also access this variable from the nested function.
You also have not explained why it is so crucial that the interfaces
are immediately released.
> We need proper reference counting.
There is proper reference counting: there are no memory leaks. That's
really all that automatic reference counting guarantees.
You may also want to have a look at http://wiki.freepascal.org/Code_Conversion_Guide#Semantical_differences
for a couple more implementation differences between Delphi and FPC.
Jonas
More information about the fpc-devel
mailing list