If it had some other purpose, and a slight slowness was a side effect, then OK. But when the entire purpose is reversed that's a problem.
Fix the bug, but don't make a mountain out of a mole hill.
I don't see any mountain either. Are you reading some emotional context I'm missing?
GCC has had way worse than this before. You should've been there for the great 2.95 -> 3.0 switch.
That was comical.
This is a pretty minor flub compared to the other non-optimizing "optimizations" that GCC has.
We're talking about the potential to slow down every single function by inserting unnecessary register save/restores. The compiler is operating at a level where this sort of thing matters, and will make a difference in your code.
Give me a non-contrived example where this tiny amount of function call overhead makes an actual difference, and I'll eat my words.
Give me a non-contrived example where this tiny amount of function call overhead makes an actual difference, and I'll eat my words.
A "non-contrived" example would require a whole-app benchmark; a micro-benchmark is already provided by the post author.
Nobody said the sky is falling (or that we're making a "mountain" out of it), but it is slower, and if it wasn't important to optimize function prologues/epilogues and register allocation, why exactly do we bother doing it at all?
To turn it around, give me a non-contrived example of a large code base where this "tiny" amount of function call overhead doesn't make an actual wall-clock difference, and I'll eat my words.
To put your complaint in context, you seem to be saying any micro-optimization of functional call overhead is not worth noting because it's noise amidst I/O, syscall overhead, or a million other things that are also expensive. A position which ignores the fact that the cheaper you make everything else, the more time you have left over for things you can't make cheaper.
Function calls don't screw over the instruction cache.
Executing code at lots of different addresses screws over the instruction cache.