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@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
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel