This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Call do_pending_stack_adjust in expand_resx_expr (PR rtl-optimization/36419)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]