I definitely agre that having more than -O1 and -O2 is counter productive. I think it is worth separating out optimizations which are expensive in compile time, and hence retaining the -O1/-O2 distinction, since compile time can be a significant factor in large systems.