aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2011-10-05 17:17:12 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2011-10-05 17:17:12 +0000
commit17a3dae3c23664d4e264003af90061a9dae7b97c (patch)
treebf15a490848a030f770578ffa1d4dc056d9ceebd /gcc
parent878a917448a256186ebaa54451696455185a7f55 (diff)
downloadgcc-17a3dae3c23664d4e264003af90061a9dae7b97c.zip
gcc-17a3dae3c23664d4e264003af90061a9dae7b97c.tar.gz
gcc-17a3dae3c23664d4e264003af90061a9dae7b97c.tar.bz2
re PR bootstrap/50621 (Bootstrap failure)
PR bootstrap/50621 * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only if the function was not shrink-wrapped. (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached to an insn. * function.c (thread_prologue_and_epilogue_insns): Make sure the shrink_wrapped flag is set even if there is no dump file. From-SVN: r179560
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/i386/i386.c5
-rw-r--r--gcc/function.c5
3 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4bdda3d..cb4a1b9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
+
+ PR bootstrap/50621
+ * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
+ if the function was not shrink-wrapped.
+ (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
+ to an insn.
+ * function.c (thread_prologue_and_epilogue_insns): Make sure the
+ shrink_wrapped flag is set even if there is no dump file.
+
2011-10-05 DJ Delorie <dj@redhat.com>
Nick Clifton <nickc@redhat.com>
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 4c1db3a..25bc887 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -9134,7 +9134,8 @@ static GTY(()) rtx queued_cfa_restores;
static void
ix86_add_cfa_restore_note (rtx insn, rtx reg, HOST_WIDE_INT cfa_offset)
{
- if (cfa_offset <= cfun->machine->fs.red_zone_offset)
+ if (!crtl->shrink_wrapped
+ && cfa_offset <= cfun->machine->fs.red_zone_offset)
return;
if (insn)
@@ -10738,6 +10739,8 @@ ix86_expand_epilogue (int style)
GEN_INT (m->fs.sp_offset - UNITS_PER_WORD),
style, true);
}
+ else
+ ix86_add_queued_cfa_restore_notes (get_last_insn ());
/* Sibcall epilogues don't want a return instruction. */
if (style == 0)
diff --git a/gcc/function.c b/gcc/function.c
index 863f09d..2c0b897 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -5741,10 +5741,11 @@ thread_prologue_and_epilogue_insns (void)
if (dump_file)
fprintf (dump_file, "Shrink-wrapping aborted due to clobber.\n");
}
- else if (dump_file && entry_edge != orig_entry_edge)
+ else if (entry_edge != orig_entry_edge)
{
crtl->shrink_wrapped = true;
- fprintf (dump_file, "Performing shrink-wrapping.\n");
+ if (dump_file)
+ fprintf (dump_file, "Performing shrink-wrapping.\n");
}
fail_shrinkwrap: