Commit 7f206d8f by Richard Henderson Committed by Richard Henderson

except.c (reachable_handlers): Handle a region being removed out from under a RESX.

        * except.c (reachable_handlers): Handle a region being removed
        out from under a RESX.

From-SVN: r44363
parent 2c938d42
2001-07-25 Richard Henderson <rth@redhat.com>
* except.c (reachable_handlers): Handle a region being removed
out from under a RESX.
2001-07-25 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.c (alpha_emit_conditional_move): Always
swap GE/GT if its an fp comparison.
......
......@@ -2728,14 +2728,20 @@ reachable_handlers (insn)
region = cfun->eh->region_array[region_number];
type_thrown = NULL_TREE;
if (region->type == ERT_THROW)
if (GET_CODE (insn) == JUMP_INSN
&& GET_CODE (PATTERN (insn)) == RESX)
{
type_thrown = region->u.throw.type;
/* A RESX leaves a region instead of entering it. Thus the
region itself may have been deleted out from under us. */
if (region == NULL)
return NULL;
region = region->outer;
}
else if (GET_CODE (insn) == JUMP_INSN
&& GET_CODE (PATTERN (insn)) == RESX)
else if (region->type == ERT_THROW)
{
type_thrown = region->u.throw.type;
region = region->outer;
}
for (; region; region = region->outer)
if (reachable_next_level (region, type_thrown, &info) >= RNL_CAUGHT)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment