diff options
author | Hans Boehm <boehm@acm.org> | 2001-10-02 02:01:55 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2001-10-01 19:01:55 -0700 |
commit | 11e9ecc58c0322bd217013371ecf8f4224ec5bca (patch) | |
tree | 23fad9853195254501859547741dec90a918226b /gcc | |
parent | 607a6500eae4624f2153f90a30919d3bf5aae2ef (diff) | |
download | gcc-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/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 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. */ |