summaryrefslogtreecommitdiff
path: root/gcc/except.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-05-26 09:03:23 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-05-26 09:03:23 +0000
commit391436f30dbf688ad6223848cda0a715f4c01a84 (patch)
tree1b8a8f66410d26400dd751cde715f5e1ae786684 /gcc/except.c
parent347a3ab588617cc9fc45d44ac48b8d8a21e7dd43 (diff)
downloadgcc-391436f30dbf688ad6223848cda0a715f4c01a84.tar.gz
* except.c (can_throw_internal): Notice RESX instructions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82281 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.c')
-rw-r--r--gcc/except.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/except.c b/gcc/except.c
index 2dfd073e70a..5e9ce337431 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -3145,6 +3145,11 @@ can_throw_internal (rtx insn)
return false;
}
+ if (GET_CODE (insn) == JUMP_INSN
+ && GET_CODE (PATTERN (insn)) == RESX
+ && XINT (PATTERN (insn), 0) > 0)
+ return can_throw_internal_1 (XINT (PATTERN (insn), 0));
+
/* Every insn that might throw has an EH_REGION note. */
note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
if (!note || INTVAL (XEXP (note, 0)) <= 0)