On Sat, 1 Mar 2008, Richard Kenner wrote: > > int f(int a, int b) { return 0 * (a + b); } > > > > get the potentially trapping arithmetic folded away. If -ftrapv is to > > have properly defined semantics, those must include trapping if (a + b) > > overflows in the above code. > > Why? Is there any language that requires such semantics?
They are the natural interpretation of -ftrapv that's simplest to describe in terms of the abstract machine of the C standard: any signed integer arithmetic overflow in the abstract machine (and maybe integer division by 0, signed or unsigned) should be guaranteed to yield a trap at runtime. http://gcc.gnu.org/ml/gcc-patches/2007-01/msg02026.html http://gcc.gnu.org/ml/gcc/2007-09/msg00399.html describe my understanding of these natural semantics. -- Joseph S. Myers [EMAIL PROTECTED]