Joe Buck wrote:
Agreed; -O0 could in principle be sped up; the important thing is making sure that it happens. In this case, adding a pass that computes SSA information that is used only for uninitialized variable warnings costs time; it could be compensated for by finding other speedups, but taken alone it is a slowdown.
For one class of users, which includes many Ada users, speeding up is less of an issue than code size. In a large scale (millions of lines of code) application, the sheer size of the -O0 executable can be a serious impediment to development, and slows down the development cycle (compile/debug/fix/recompile), e.g. when this executable is so large that it takes ages to download to an embedded target, or when you have to start fiddling to set -g only in selected units, because the overall size of the executable is too large. We are seeing that GCC 4 is significantly worse than GCC 3 in this respect (although Eric has some ideas on how to help fix this by attacking unused size functions).