diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2003-03-28 23:40:51 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2003-03-28 23:40:51 +0000 |
commit | 7d798969ff2b148bc38bc86fba0a200d516f509f (patch) | |
tree | df31ac29a571e9ceb65c4857daf0fc3acc545dea /gcc | |
parent | 00dcfe8086bf78d40d74a44235fdc8b9f77a062e (diff) | |
download | gcc-7d798969ff2b148bc38bc86fba0a200d516f509f.zip gcc-7d798969ff2b148bc38bc86fba0a200d516f509f.tar.gz gcc-7d798969ff2b148bc38bc86fba0a200d516f509f.tar.bz2 |
gcc/ ChangeLog:
* config/s390/s390.c (s390_emit_prologoue): Make sure backchain is
set up before any trapping memory access if flag_non_call_exceptions.
libjava/ ChangeLog:
* configure.in (HAVE_BACKTRACE) [s390*-*-linux*]: Define.
* configure: Regenerate.
From-SVN: r64995
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b345fd7..2209c43 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-03-29 Ulrich Weigand <uweigand@de.ibm.com> + + * config/s390/s390.c (s390_emit_prologoue): Make sure backchain is + set up before any trapping memory access if flag_non_call_exceptions. + 2003-03-29 Alan Modra <amodra@bigpond.net.au> * reload1.c (reload_as_needed): Allow a USE in asm reloads. diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index befaf8f..b1e7c5b 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -5429,6 +5429,16 @@ s390_emit_prologue () set_mem_alias_set (addr, s390_sr_alias_set); insn = emit_insn (gen_move_insn (addr, temp_reg)); } + + /* If we support asynchronous exceptions (e.g. for Java), + we need to make sure the backchain pointer is set up + before any possibly trapping memory access. */ + + if (TARGET_BACKCHAIN && flag_non_call_exceptions) + { + addr = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode)); + emit_insn (gen_rtx_CLOBBER (VOIDmode, addr)); + } } /* Save fprs 8 - 15 (64 bit ABI). */ |