aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2003-03-28 23:40:51 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2003-03-28 23:40:51 +0000
commit7d798969ff2b148bc38bc86fba0a200d516f509f (patch)
treedf31ac29a571e9ceb65c4857daf0fc3acc545dea /gcc
parent00dcfe8086bf78d40d74a44235fdc8b9f77a062e (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/s390/s390.c10
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). */