diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-02 02:01:55 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-02 02:01:55 +0000 |
commit | 35c33b840ae88bc546be3668d46adea3091bfa47 (patch) | |
tree | 23fad9853195254501859547741dec90a918226b /gcc/optabs.c | |
parent | 268cb4599aff2f94fe1b4f0619f90f637f5d4db0 (diff) | |
download | gcc-35c33b840ae88bc546be3668d46adea3091bfa47.tar.gz |
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: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45934 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 10 |
1 files changed, 7 insertions, 3 deletions
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. */ |