Andrei Alexandrescu wrote:
Walter Bright wrote:
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.
On what basis?
Trying to determine by static analysis if a function would evaluate within a
"reasonable" amount of time, or even if it would finish at all.
So let's suppose the compiler just attempts CTFE on those functions anyway, with
a timeout if they take too long. Suddenly we've just thrown all the compiler
performance out the window.