I hate to be pedantic here but I see the term TCO thrown around all the time. The Scheme standard requires that unbounded tail call functions can run in constant space.
This is a semantic difference, not an optimization. Turning off optimizations should never cause your program to crash.