aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Boehm <boehm@acm.org>2001-10-02 02:01:55 +0000
committerJim Wilson <wilson@redhat.com>2001-10-02 02:01:55 +0000
commit43ee293b958d895e8342f8a1a429a6bbf2646010 (patch)
tree23fad9853195254501859547741dec90a918226b
parent36ba388ed99610e4f71b42670b70aeb32af749a1 (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/ChangeLog5
-rw-r--r--gcc/optabs.c10
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. */