Yes, highly optimising compilers can be less predictable. But given the choice between two compilers, where one is easier to reason about but the other produces faster overall code, I'd pick the latter every time.
miniblog.
Related Posts
Quantifying rate of language change in Rust! https://words.steveklabnik.com/how-often-does-rust-change
Putting numbers on this is hard, but produces some interesting methodologies.
Decompiling Super Mario 64 by carefully writing C that produces the same assembly!
https://gbatemp.net/threads/super-mario-64-has-been-decompiled.542918/
A huge task, although shipping the game without aggressive optimisations made it easier apparently.
Type systems can be nominal or structural, they might force an option type, and they might even encode side effects (IO or exceptions).
I think the biggest single improvement (where compiles≈correct) is exhaustiveness checking. This produces thoroughness and often robustness.