aboutsummaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2004-10-19 00:06:36 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-10-18 22:06:36 +0000
commita494ed43ab2c384d58b403e38be9109ad2978de1 (patch)
treefbc2c77e2ddf6b70e1a93ba6afc611f8b36b9730 /gcc/explow.c
parent829acd784a11c16452dddf656ae2f63c5670bf7d (diff)
downloadgcc-a494ed43ab2c384d58b403e38be9109ad2978de1.zip
gcc-a494ed43ab2c384d58b403e38be9109ad2978de1.tar.gz
gcc-a494ed43ab2c384d58b403e38be9109ad2978de1.tar.bz2
re PR middle-end/17813 (ada bootstrap failure on i486-linux)
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. Co-Authored-By: Roger Sayle <roger@eyesopen.com> From-SVN: r89251
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 62ca87c..45126f6 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;