Joe Buck <[EMAIL PROTECTED]> writes: > On Wed, Jan 17, 2007 at 05:48:34PM +0000, Andrew Haley wrote: > > From a performance/convenience angle, the best place to handle this is > > either libc or the kernel. Either of these can quite easily fix up > > the operands when a trap happens, with zero performance degradation of > > existing code. I don't think there's any need for gcc to be altered > > to handle this. > > How will the kernel know whether the overflow in the divide instruction > is because the user's source code has a '%' and not a '/'? We generate > the exact same instruction for i / minus_one(), after all, and in that > case the trap really should be there.
We don't need to generate a trap for INT_MIN / -1. That is undefined signed overflow. We can legitimately set the quotient register to INT_MIN while setting the remainder register to zero. (Hmmm, what should we do if -ftrapv is set? Probably generate a different code sequence in the compiler.) We do want to generate a trap for x / 0, of course. Ian