On 2019-04-07 03:25, Ben Grasset wrote:

Even the fact that FPC will not / cannot inline "procedure variable" calls is far from great. Just that alone would result in enormous speedups in a huge amount of places...

I'm sure there is code where that is the case, but I very much doubt this particular functionality would help with most code out there. E.g., if I enable FPC's whole-program devirtualisation on the compiler so that it tries to turn as many virtual calls into direct calls, and then feed the result to LLVM (so it can inline all of those previously indirect calls), the result is barely faster than the original code (it is quite a bit smaller though).

This is in spite of the fact that e.g. all of the originally virtual AfterConstruction and BeforeDestruction calls get removed completely (since they're empty), and quite a bit of the code generator, register allocator and node tree methods also get devirtualised.

Again, I'm sure there are programs where it does make a big difference, but I don't think the suggestion that this would help in "a huge amount of places" is correct in the general case.


Jonas
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to