diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-18 22:06:36 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-18 22:06:36 +0000 |
commit | 05ae776c039af0b27b80dfc443def90291345713 (patch) | |
tree | fbc2c77e2ddf6b70e1a93ba6afc611f8b36b9730 /gcc/explow.c | |
parent | d0518928abfb487dea969fb92cf0ffae9242ac36 (diff) | |
download | gcc-05ae776c039af0b27b80dfc443def90291345713.tar.gz |
PR middle-end/17813
* dojump.c (discard_pending_stack_adjust): New function.
(clear_pending_stack_adjust): Call it.
* expr.h (discard_pending_stack_adjust): Declare it.
* explow.c (emit_stack_save): Emit pending stack adjustments
before saving the stack pointer.
(emit_stack_restore): Discard pending stack adjustments before
restoring the stack pointer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89251 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/explow.c')
-rw-r--r-- | gcc/explow.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/explow.c b/gcc/explow.c index 62ca87c3ca0..45126f6c420 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -965,6 +965,7 @@ emit_stack_save (enum save_level save_level, rtx *psave, rtx after) rtx seq; start_sequence (); + do_pending_stack_adjust (); /* We must validize inside the sequence, to ensure that any instructions created by the validize call also get moved to the right place. */ if (sa != 0) @@ -976,6 +977,7 @@ emit_stack_save (enum save_level save_level, rtx *psave, rtx after) } else { + do_pending_stack_adjust (); if (sa != 0) sa = validize_mem (sa); emit_insn (fcn (sa, stack_pointer_rtx)); @@ -1032,6 +1034,8 @@ emit_stack_restore (enum save_level save_level, rtx sa, rtx after) gen_rtx_MEM (BLKmode, stack_pointer_rtx))); } + discard_pending_stack_adjust (); + if (after) { rtx seq; |