[MLton] profiling and tail calls
Matthew Fluet
fluet@cs.cornell.edu
Tue, 16 Nov 2004 15:42:16 -0500 (EST)
> > Is it true or false that -profile XYZ can change the tail-recursive
> > nature of a program?
>
> Yes. :-)
>
> Seriously, to err on the safe side, I would have to say true.
> Although, I would think the optimizer should get it.
>
> Then the Ssa shrinker has an optimization that notices when the only
> operations that make a call nontail are profiling operations, and if
> so, moves them before the call.
>
> So, I can't think of a case that would slip through. But I'm a long
> ways from a proof.
I understand, and that's what I thought.
I note that lib/cml/tests/ping-pong.mlb runs in constant stack space
without profiling, but runs with >= O(n) stack space with profiling (of
any sort).