It's likely that this feature may go through several iterations before we settle on some code that everyone is happy with.  At the moment I'm trying to design and develop a system that captures everything, like propagating through nested or recursive calls and calling internal functions that are, by all accounts, pure (e.g. Sqrt).

Constant propagation and simplification isn't perfect, especially where there's implicit typecasting and inline expansion.  Room for improvement elsewhere.

Gareth aka. Kit

On 30/04/2020 10:48, Jonas Maebe wrote:
On 30/04/2020 07:24, Sven Barth via fpc-devel wrote:
Well, Jonas is right that if you have a node tree that only has constant
nodes as inputs the tnode.simplify method should (in theory) be able to
completely collapse that (under the assumption that this is also handled
by call nodes and such).
Simplify by itself cannot do that, but simplify + constant propagation
can (once constant propagation gets extended). There is no reason why it
should not be able to handle out-parameters, and it can already collapse
entire (simple) functions into a single assignment of a constant to a
function result (when combined with -Oodeadstore).

I cannot think of a single reason why a particular
propagation/simplification/emulation/... feature should not be supported
by constant propagation, but should be supported when evaluating pure
functions.


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


--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

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

Reply via email to