On Thu, Jun 30, 2005 at 09:02:48PM -0400, Andrew Pinski wrote: > But the reason question is why make it an undefined behavior instead of > an implementation defined? This would have made it clearer instead of > allowing the compiler not document what happens. Or is C++ > just following C here? In which case it might be better to ask the C > committee why it was done this way and real definition of undefined for > this case?
I already showed you the answer: loop optimization works better if you can ignore overflow. How much do you want to pay for "implementation defined"? If you specify the behavior of overflow precisely, then every optimizer in GCC must preserve this behavior. That has a high cost.