Don wrote:
While running the semantic on each function body, the compiler could
fairly easily check to see if the function is CTFEable. (The main
complication is that it has to guess about how many iterations are
performed in loops). Then, when a CTFEable function is called with
compile-time constants as arguments, it could run CTFE on it, even if it
is not mandatory.
I think this is the halting problem, and is insoluble.
This is why the language does CTFE in well-defined circumstances and the CTFE
must succeed else a compilation time error.
I'm not seeing CTFE as a credible optimization tool, either, as none of my
programs would benefit at all from it. For example, what's a text editor going
to precompute?