And if your GC doesn't dump the registers. Only with volatile you can keep all locals on the stack.
And yes, that's not stupid. It's actually faster than all the register "optimizations" for practical use cases in fast VM's. Register saving across calls and at the GC is much more expensive. mem2reg is an antipattern mostly