On 2/28/16, Linus Torvalds <torva...@linux-foundation.org> wrote: > The fact is, undefined compiler behavior is never a good idea. Not for > serious projects.
Actually, undefined behavior is essential for serious projects, but not for the reasons mentioned. If the language has no undefined behavior, then from the compiler's view, there is no such thing as a bad program. All programs will compile and enter functional debug (possibly after shipping to customer). On the other hand, a language with undefined behavior makes it possible for compilers (and their run-time support) to identify a program as wrong. The problem with the latest spate of compiler optimizations was not the optimization, but the lack of warnings about exploiting undefined behavior. -- Lawrence Crowl