It's on my large TODO list, somewhere at the bottom, to propose to make -O1 stop after early optimizations and drop right to expansion from there. That would turn optimization expectations upside-down of course, but early optimizations should be mostly reducing code size (and thus increase compile speed) with no fancy optimization that inhibit debugging (SRA, IPA-SRA, switch conversion and function splitting are an exception, but all but SRA are not enabled at -O1). So we'd move to compile-time and debuggability for -O1 (I'd expect compile time that should be better or at least not a lot slower than -O0).
I am all in favor of such work, but I would approach it in two steps. First make it a separate -O level, then depending on how successful this is in practice, propose making -O1 mean this new level. If you do both steps at once, you get opposition on the basis of change-is-bad, rather than to the substance of the new level of optimization.
Richard.