Exception causing insns in delay slots

Jason Merrill jason@redhat.com
Fri Apr 26 04:51:00 GMT 2002


>>>>> "David" == David S Miller <davem@redhat.com> writes:

>    From: Jason Merrill <jason@redhat.com>
>    Date: Fri, 26 Apr 2002 12:15:30 +0100

>> Ok, this seems to doubly confirm the need for my reorg fix.
   
>    I wouldn't expect trapping instructions to have any unwind information
>    impact, except that the unwind info needs to be correct when we reach them.
>    This would only be a problem if the trapping insn is scheduled in the
>    delay slot of an insn which adjusts the stack.  I could imagine that being
>    true of some sort of combined call-push insn, but I'm not aware of any such
>    beast, certainly not on a target with delay slots.

> We don't emit the notes properly.  When reorg puts an exception
> causing instruction into a delay slot, and that instruction is the
> only exception causing instruction in that particular exception
> region, we currently don't emit the notes correctly.  My original
> email of this thread shows the details around this.

Right, I agree that your patch is a good short-term fix to the problem of
not properly finding the exception region for an insn in a delay slot, due
to the notes being in the wrong place.

> Even if it could emit the notes properly, we couldn't unwind to
> the sucker correctly.  This is because of all the "current->ra - 1"
> buisness and the assumption (which you mentioned) of the code stream
> being linear.

This is what I don't understand.  The current->ra - 1 business should give
us the trapping instruction, which is what we want.  The only way the
non-linearity would be a problem for a delayed trapping insn would be if
the unwind info were different before and after (numerically) the call insn,
which I don't think can happen.

Jason



More information about the Java mailing list