On Mon, 2013-09-23 at 13:38 -0600, Dave Allured - NOAA Affiliate wrote: > On Sun, Sep 22, 2013 at 10:03 PM, James K. Lowden > <jklowden@xxxxxxxxxxxxxxx> wrote: > > Regarding the OP's query > > > >> > int r = ab * bc; > > > > although the provided example is simple enough, it's the compiler's > > job is to generate object code, not to do static analysis. > > > > Even if the values are const, in the general case they could be > > modified by another module or another thread. The compiler simply > > doesn't have enough information to warn of every runtime overflow. > > I believe the CPU overflow flag is updated after most integer > arithmetic instructions. Does GCC have any facility for checking this > flag after each integer operation? This would be a runtime check, of > course, not a compile time check. > See -ftrapv option. Although trapping math is not supported on every target properly. E.g. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35412 or SH related http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54272 Cheers, Oleg