On Wed, Oct 5, 2011 at 12:29 AM, Richard Henderson <r...@redhat.com> wrote: > On 10/04/2011 03:10 PM, Bernd Schmidt wrote: >> * doc/invoke.texi (-fshrink-wrap): Document. >> * opts.c (default_options_table): Add it. >> * common.opt (fshrink-wrap): Add. >> * function.c (emit_return_into_block): Remove useless declaration. >> (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx, >> requires_stack_frame_p, gen_return_pattern): New static functions. >> (emit_return_into_block): New arg simple_p. All callers changed. >> Use gen_return_pattern. >> (thread_prologue_and_epilogue_insns): Implement shrink-wrapping. >> * config/i386/i386.md (return): Expand into a simple_return. >> (simple_return): New expander): >> (simple_return_internal, simple_return_internal_long, >> simple_return_pop_internal_long, simple_return_indirect_internal): >> Renamed from return_internal, return_internal_long, >> return_pop_internal_long and return_indirect_internal; changed to use >> simple_return. >> * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand >> simple returns. >> (ix86_pad_returns): Likewise. >> * function.h (struct rtl_data): Add member shrink_wrapped. >> * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that >> are not jumps or sibcalls can't be compared. >> >> * gcc.target/i386/sw-1.c: New test. > > Ok. > > As a followup, I think this option needs to be disabled for profiling > and profile_after_prologue. Should be a mere matter of frobbing the > options at startup.
This breaks bootstrap on x86_64-linux. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50621 Richard. > > r~ >