On Fri, 2005-06-03 at 13:03 -0400, Paul Schlie wrote: > > From: Joe Buck <[EMAIL PROTECTED]> > >> On Fri, Jun 03, 2005 at 11:43:32AM -0400, Andrew Pinski wrote: > >> Everyone's who writes C/C++ should know that overflow of signed is > >> undefined. > > > > In practice, however, this issue is commonly ignored, because people code > > in a hurry, then test the behavior of the executable code, and if on all > > platforms tested there are overflows, but the overflows wrap and as a > > result the expected thing happens, the problem will not be noticed. > > > > I'm sure there are plenty of production codes that assume signed integer > > overflow wraps, or at least make the weaker assumption that in > > > > a = b + c + d; > > > > where all variables are integers, if one of the intermediate terms > > can't be represented in an integer, we still get the correct result > > if the final result is representable in an integer. > > Agreed: > > - which why it should be assumed to wrap, especially given that most/all > current target, and likely most/all future targets do wrap (not trap) > signed overflows. (so would expect the compiler to ideally reflect reality > when analyzing code for optimization, not assume that "undefined" means > "ignore reality")?
In every case where practical, we build compilers to do what standards say we should do, not what people do to abuse those standards. There are places where the standard is murky, and we make hard decisions based on what people do in the field. This is not one of them.