On Wednesday, 23 December 2015 at 01:07:57 UTC, Walter Bright
wrote:
On 12/22/2015 10:29 AM, David Nadlinger wrote:
Not sure about how it arrives at the crazily unrolled loop,
but no recursion in
sight anymore.
It's doing tail recursion optimization, which turns the
recursion into a loop.
The recursive call is not quite a tail call by itself, which is
what Andrei pointed out using that example. But yes, that's what
happens.
Then the loop is unrolled 8 times.
Sure thing. I was rather surprised to see that happen given that
I only compiled with -O1, though, as it seems to be quite an
aggressive optimization.
— David