This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Call do_pending_stack_adjust in expand_resx_expr (PR rtl-optimization/36419)
- From: Jakub Jelinek <jakub at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 6 Jun 2008 06:16:29 -0400
- Subject: [PATCH] Call do_pending_stack_adjust in expand_resx_expr (PR rtl-optimization/36419)
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
This patch fixes only part of the PR36419 issues. When not accumulating
outgoing args and RESX does't result into _Unwind_Resume, but local
jump, without this patch the stack pointer is misaligned or at different
DW_CFA_GNU_args_size level on a label when reaching it through different
edges.
Bootstrapped/regtested on x86_64-linux, ok for trunk and 4.3.2?
2008-06-06 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/36419
* except.c (expand_resx_expr): Call do_pending_stack_adjust () before
the emitting jump insn.
--- gcc/except.c.jj 2008-04-28 11:35:55.000000000 +0200
+++ gcc/except.c 2008-06-03 10:27:04.000000000 +0200
@@ -540,6 +540,7 @@ expand_resx_expr (tree exp)
cfun->eh->region_array, region_nr);
gcc_assert (!reg->resume);
+ do_pending_stack_adjust ();
reg->resume = emit_jump_insn (gen_rtx_RESX (VOIDmode, region_nr));
emit_barrier ();
}
Jakub