Am 14.12.2022 um 12:15 schrieb J. Gareth Moreton via fpc-devel:

To better explain how purity analysis currently works (I'm sure there's a better name than "purity analysis"), it takes a copy of the unoptimised node tree (this is the same as the tree used for inline, and for a space saving, they share the same field), adds explicit definitions for the formal parameters so they equal the constants passed in, and then tries to collapse the node tree down to a single assignment to the result.  This is done by running the following operations in this order:


What do you mean with “share the same field”? A pure function might still be called and inlined like a normal function and for that you shouldn't transform the node tree needlessly as that might influence the debugging experience. So you should have two different copies, one for inlining and one for pure related transformations.

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to