One comment mentions Chris Lattner's <i>What Every C Programmer Should Know About Undefined Behavior</i> [1], which is probably a better explanation to why compilers want to exploit UB including signed overflow. I think ryg's explanation is one more obscure case where UB helps, rather than a main reason.<p>[1] <a href="http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html" rel="nofollow">http://blog.llvm.org/2011/05/what-every-c-programmer-should-...</a>