diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2011-10-05 17:17:12 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2011-10-05 17:17:12 +0000 |
commit | 17a3dae3c23664d4e264003af90061a9dae7b97c (patch) | |
tree | bf15a490848a030f770578ffa1d4dc056d9ceebd /gcc | |
parent | 878a917448a256186ebaa54451696455185a7f55 (diff) | |
download | gcc-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/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 5 | ||||
-rw-r--r-- | gcc/function.c | 5 |
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: |