[fpc-devel] Managed Types, Undefined Bhaviour
Stefan Glienke
sglienke at dsharp.org
Fri Jun 29 19:03:58 CEST 2018
Delphi does not reuse them, every call to a function generates a temp
variable. Sure, if you call it in a loop it of course uses the same one.
But if you have 2 calls after each other the compiler generates two
variables. Even if they are in seperate code branches. I have often
enough optimized some code that caused huge prologue/epilogue just for
temp variables of different calls where only one could have happened
(like in a case statement). You can see exactly that in the answer by
David Heffernan you linked to. The loop keeps adding X while the other
two calls get an empty string passed.
Am 29.06.2018 um 18:27 schrieb Jonas Maebe:
> On 29/06/18 17:57, Stefan Glienke wrote:
>> Now we are back to using temp variables (both Delphi and FPC do) but
>> FPC again reuses its temp variable for A and B while Delphi uses
>> different ones. Now for some integer this might not be a big issue
>> but imagine you have something else in these arrays (for example any
>> managed type like an interface).
>> Not having properly cleared B because it still uses the temporary
>> content from A might cause some issues.
>
> My point was that Delphi sometimes also reuses temp variables. See the
> StackOverflow posts linked from the previous message. It does not do
> it in the same cases as FPC, but it does do it. So while you may be
> lucky more often in Delphi, relying on this behaviour is unsafe even
> there afaik.
>
>
> Jonas
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus
More information about the fpc-devel
mailing list