From d0edbeeca0a741b5edbeaea909f27fe09478143e Mon Sep 17 00:00:00 2001 From: Kaz Kojima Date: Wed, 20 Oct 2004 13:57:22 +0000 Subject: [PATCH] re PR target/18032 ([4.0.0] SH: wrong code for EH) PR target/18032 * config/sh/sh.c (sh_expand_epilogue): Emit a blockage insn before the frame pointer adjustment when exception handling is enabled. From-SVN: r89333 --- gcc/ChangeLog | 6 ++++++ gcc/config/sh/sh.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f6266ac82f1..5a5d71992fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-10-20 Kaz Kojima + + PR target/18032 + * config/sh/sh.c (sh_expand_epilogue): Emit a blockage insn before + the frame pointer adjustment when exception handling is enabled. + 2004-10-20 Kazu Hirata * stor-layout.c: Fix a comment typo. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index d489a858f57..83a938eb7fa 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -5828,6 +5828,10 @@ sh_expand_epilogue (bool sibcall_p) if (frame_pointer_needed) { + /* We must avoid scheduling the epilogue with previous basic blocks + when exception handling is enabled. See PR/18032. */ + if (flag_exceptions) + emit_insn (gen_blockage ()); output_stack_adjust (frame_size, frame_pointer_rtx, e, &live_regs_mask); /* We must avoid moving the stack pointer adjustment past code