diff options
author | Hans Boehm <boehm@acm.org> | 2001-10-02 02:01:55 +0000 |
---|---|---|
committer | Jim Wilson <wilson@redhat.com> | 2001-10-02 02:01:55 +0000 |
commit | 43ee293b958d895e8342f8a1a429a6bbf2646010 (patch) | |
tree | 23fad9853195254501859547741dec90a918226b | |
parent | 36ba388ed99610e4f71b42670b70aeb32af749a1 (diff) |
Fix for ia64-java bug reported by Hans Boehm.
* optabs.c (emit_libcall_block): When using non-call exceptions,
don't add REG_LIBCALL reg notes to trapping calls.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@45934 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/optabs.c | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d55106d9412..bbb780ed679 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-10-01 Hans Boehm <boehm@acm.org> + + * optabs.c (emit_libcall_block): When using non-call exceptions, + don't add REG_LIBCALL reg notes to trapping calls. + 2001-10-01 David Billinghurst <David.Billinghurst@riotinto.com> * flow.c (propagate_block_delete_libcall): Remove unused first arg diff --git a/gcc/optabs.c b/gcc/optabs.c index 035beac0493..5b47c13a316 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -2957,9 +2957,13 @@ emit_libcall_block (insns, target, result, equiv) first = NEXT_INSN (prev); /* Encapsulate the block so it gets manipulated as a unit. */ - REG_NOTES (first) = gen_rtx_INSN_LIST (REG_LIBCALL, last, - REG_NOTES (first)); - REG_NOTES (last) = gen_rtx_INSN_LIST (REG_RETVAL, first, REG_NOTES (last)); + if (!flag_non_call_exceptions || !may_trap_p (equiv)) + { + REG_NOTES (first) = gen_rtx_INSN_LIST (REG_LIBCALL, last, + REG_NOTES (first)); + REG_NOTES (last) = gen_rtx_INSN_LIST (REG_RETVAL, first, + REG_NOTES (last)); + } } /* Generate code to store zero in X. */ |