David Daney writes:
> Andrew Haley wrote:
> MIPS div instructions never trap. However I think that GCC always emits
> things like this when it cannot determine that the divisor is non zero:
> div $0,$17,$16
> bne $16,$0,1f
> break 7
> >No, there's no reason not to do it. You'll have to write some hairy
> >code to satisfy all the rules, though.
> What are the rules? Are they more complicated then throw an
> ArithmeticException when the divisor is zero?
Yes. You also have to do
if (dividend == (jint) 0x80000000L && divisor == -1)
and not throw an exception.
> > > Q3: Will using SIGTRAP in this manner make debugging programs that
> > > divide things by zero very difficult to debug under gdb?
> I have not tried it. But I think gdb uses "break" and SIGTRAP for
> breakpoints. Is it possible to get gdb to pass the signal to the
> debugee, so that it could be handled by the runtime support?
Well, gcj will generate either break or trap instructions. You can
tell gdb to ignore either.