summaryrefslogtreecommitdiff
path: root/gcc/resource.c
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-25 23:43:43 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-25 23:43:43 +0000
commit4642b20509ae69830c44ffc3f59d9b86088c7fdb (patch)
tree6156335a45a8824c4127a4a8fb96fa8c5f78b50c /gcc/resource.c
parent0ce25b06293a6daa30df18c6745b28d893325fff (diff)
downloadgcc-4642b20509ae69830c44ffc3f59d9b86088c7fdb.tar.gz
* except.h (can_throw): Declare it.
* except.c (can_throw): Give it external linkage. * resource.c (find_dead_or_set_registers): Use can_throw. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34178 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/resource.c')
-rw-r--r--gcc/resource.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/resource.c b/gcc/resource.c
index 23f5e0e4ead..d84fabeee1d 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -422,6 +422,14 @@ find_dead_or_set_registers (target, res, jump_target, jump_count, set, needed)
rtx this_jump_insn = insn;
next = NEXT_INSN (insn);
+
+ /* If this instruction can throw an exception, then we don't
+ know where we might end up next. That means that we have to
+ assume that whatever we have already marked as live really is
+ live. */
+ if (can_throw (insn))
+ break;
+
switch (GET_CODE (insn))
{
case CODE_LABEL: