aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans Boehm <boehm@acm.org>2001-10-02 02:01:55 +0000
committerJim Wilson <wilson@gcc.gnu.org>2001-10-01 19:01:55 -0700
commit11e9ecc58c0322bd217013371ecf8f4224ec5bca (patch)
tree23fad9853195254501859547741dec90a918226b /gcc
parent607a6500eae4624f2153f90a30919d3bf5aae2ef (diff)
downloadgcc-11e9ecc58c0322bd217013371ecf8f4224ec5bca.zip
gcc-11e9ecc58c0322bd217013371ecf8f4224ec5bca.tar.gz
gcc-11e9ecc58c0322bd217013371ecf8f4224ec5bca.tar.bz2
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. From-SVN: r45934
Diffstat (limited to 'gcc')
-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 d55106d..bbb780e 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 035beac..5b47c13 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. */