> OK, to get an actual compiler question into the discussion,> are there any compilers that generate non-reentrant code for> a language that allows recursion when it isn't being used?

Yes, in the small-machine embedded systems world. On a modern 64-bit
machine with efficient addressing based on a stack pointer and/or
frame pointer, I suspect it would be a pessimization.

Note that recursion isn't the only issue -- there's also
multi-threading.

- Bob
[I expect that on modern machines where code is generally
read-only to allow sharing between processes, there's no
advantage to non-recursive code. Back in the 1960s, S/360
code typically had a static save area per routine that it
used for all its calls, and there was a fair amount of
extra complication to save stuff in a stack. -John]