&gt; I don&#x27;t believe C should be a language where the compiler does all sorts of high-level optimisation; it should be a straightforward &quot;do what I say&quot; type of language where you get almost exactly what you write, and the only optimisations should be at the level of things like instruction selection --- the optimisations that a programmer would not be able to do at the source level.<p>In that case, you&#x27;re asking for easily 3x-5x less performance in the software you use every day, if not more. You can get essentially this by turning on -O0 and compiling, say, Firefox. This is done in debugging, and it&#x27;s a terrible browsing experience.<p>Compiler optimizations are really, really important. CSE, GVN, LICM, SROA, etc. aren&#x27;t done for fun. They&#x27;re done because modern software depends on them to be fast.<p>Writing low-level &quot;post-optimized&quot; code is at odds with good engineering practice. If you can&#x27;t factor things out into functions and count on an inliner to inline them and then propagate away constants, SROA away intermediate structures, etc. then you&#x27;re essentially telling programmers they can&#x27;t factor code out into functions. If your compiler refuses to do the Hacker&#x27;s Delight integer divide optimization (which, by the way, you need good constprop to make good use of a lot of the time), then you&#x27;re telling programmers they have to get out their copy from their bookshelf and compute the magic number every time they want to <i>integer divide</i> fast (especially on ARM). This sort of thing puts a huge drain on developer productivity and maintainability.