* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179560
138bc75d-0d04-0410-961f-
82ee72b054a4
+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>
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)
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)
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: