summaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-18 22:06:36 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-18 22:06:36 +0000
commit05ae776c039af0b27b80dfc443def90291345713 (patch)
treefbc2c77e2ddf6b70e1a93ba6afc611f8b36b9730 /gcc/explow.c
parentd0518928abfb487dea969fb92cf0ffae9242ac36 (diff)
downloadgcc-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.c4
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;