it's especially weird for floating point zero. I don't know if you know this, but the IEEE-754 encoding of floating point zero is just that: zeroes.
And you can initialize a 4-byte variable to integer zero without needing a literal global... so you should be able to do the same for floating point zero!
I don't know why I'm saying the compiler should be more optimized. That'd make my job harder.