summaryrefslogtreecommitdiff
path: root/gcc/optabs.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-02 02:01:55 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-02 02:01:55 +0000
commit35c33b840ae88bc546be3668d46adea3091bfa47 (patch)
tree23fad9853195254501859547741dec90a918226b /gcc/optabs.c
parent268cb4599aff2f94fe1b4f0619f90f637f5d4db0 (diff)
downloadgcc-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.c10
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. */