aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/ia64
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2007-09-12 23:19:51 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2007-09-12 23:19:51 +0200
commitc93646bd3ca88aa2cc99cc5a2090dc6ea4b39688 (patch)
tree828e93cbb23579f8ca8fc10515dcc6799ef95972 /gcc/config/ia64
parent901e210ea15908c46788ed2a01f523137efe4b05 (diff)
downloadgcc-c93646bd3ca88aa2cc99cc5a2090dc6ea4b39688.zip
gcc-c93646bd3ca88aa2cc99cc5a2090dc6ea4b39688.tar.gz
gcc-c93646bd3ca88aa2cc99cc5a2090dc6ea4b39688.tar.bz2
re PR target/32338 (Error: .prologue within prologue)
PR target/32338 * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage before sp restoration even when total_size is 0, but frame_pointer_needed. * gcc.dg/pr32338-1.c: New test. * gcc.dg/pr32338-2.c: New test. From-SVN: r128446
Diffstat (limited to 'gcc/config/ia64')
-rw-r--r--gcc/config/ia64/ia64.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 46f75c5..6a6a9e6 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -3437,7 +3437,9 @@ ia64_expand_epilogue (int sibcall_p)
finish_spill_pointers ();
- if (current_frame_info.total_size || cfun->machine->ia64_eh_epilogue_sp)
+ if (current_frame_info.total_size
+ || cfun->machine->ia64_eh_epilogue_sp
+ || frame_pointer_needed)
{
/* ??? At this point we must generate a magic insn that appears to
modify the spill iterators, the stack pointer, and the frame