That *is* the --do-what-I-mean-not-what-I-write switch.
How can the compiler possibly know what you meant when you wrote something outside the language spec?
Take a very simple but common issue: undefined data. There are countless compiler analyses and transformations that mode code around, reallocate stack space, etc. that cause the undefined variable to have different (garbage) values. What might happen to work one day most assuredly will not when compiled with a compiler 2-3 versions newer.
What should the compiler do? Disable all code motion of and around the offending expression? That would be lunacy.