1.The theory of compilation is well developed, and there are compiler frameworks in which many optimizations have been proved correct.
2.Nevertheless, the practical art of compiler construction involves a morass of trade-offs between compilation speed, code quality, code debuggability, compiler modularity, compiler retargetability, and other goals.
3.It should be no surprise that optimizing compilers—like
all complex software systems—contain bugs.
4.Miscompilations often happen because optimization safety
checks are inadequate, static analyses are unsound, or transformations are flawed.
These bugs are out of reach for current and future automated program-verification tools because the specifications that need to be checked were never written down in a precise way, if they were written down at all