Am 24.09.2010 15:36, schrieb Jonas Maebe: > > On 24 Sep 2010, at 14:35, Jonas Maebe wrote: > >> On 24 Sep 2010, at 11:48, Adrian Veith wrote: >> >>> Register allocation is on a comparable level for both versions. >> >> Delphi keeps the "Bar" pointer in a register, while FPC spills it to >> the stack. Because Bar is used in most of the most-executed >> statements, this has a huge impact. > > Correction: Delphi keeps the hidden parent frame pointer parameter in a > register (which is required every time Bar is accessed), while FPC puts > it on the stack. The end result is the same though: 1 extra memory > access every time Bar or any other variable from the parent procedure is > accessed.
I've almost a patch ready which should solve this. Furthermore, I improved cse a little bit. Nevertheless, this safes only 5% on my machine. Unfortunatly, I found no proper way to enable cse on dyn. array expressions, this should help for another 5%. Did anybody (Jonas?) profile which the real hot spot lines are? _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal