This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Initial shrink-wrapping patch


On 10/05/11 17:13, Richard Guenther wrote:
> On Wed, Oct 5, 2011 at 12:29 AM, Richard Henderson <rth@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

Caused by the x86_64 expand_epilogue not generating REG_CFA_RESTORE
notes, and in another case by queuing but not emitting them.

Bootstrapping the following now. Ok? (Alternatively, could keep the
redzone logic, but make it depend on !flag_shrink_wrap).


Bernd

Attachment: redzone.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]