This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fixed Regressions with "[committed] Use target-insns.def for prologue & epilogue insns"
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: Hans-Peter Nilsson <hans-peter dot nilsson at axis dot com>
- Cc: richard dot sandiford at arm dot com, gcc-patches at gcc dot gnu dot org
- Date: Thu, 02 Jul 2015 19:58:15 +0100
- Subject: Re: Fixed Regressions with "[committed] Use target-insns.def for prologue & epilogue insns"
- Authentication-results: sourceware.org; auth=none
- References: <201507021126 dot t62BQPN6026640 at ignucius dot se dot axis dot com>
Hans-Peter Nilsson <hans-peter.nilsson@axis.com> writes:
>> From: Richard Sandiford <rdsandiford@googlemail.com>
>> Date: Wed, 1 Jul 2015 23:26:59 +0200
>
>> Hans-Peter Nilsson <hans-peter.nilsson@axis.com> writes:
>> >> From: Richard Sandiford <richard.sandiford@arm.com>
>> >> Date: Tue, 30 Jun 2015 22:55:24 +0200
>> >
>> >> Bootstrapped & regression-tested on x86_64-linux-gnu and aarch64-linux-gnu.
>> >> Also tested via config-list.mk. Committed as preapproved.
>> >>
>> >> Thanks,
>> >> Richard
>> >>
>> >>
>> >> gcc/
>> >> * defaults.h (HAVE_epilogue, gen_epilogue): Delete.
>> >> * target-insns.def (epilogue, prologue, sibcall_prologue): New
>> >> targetm instruction patterns.
>> >> * alias.c (init_alias_analysis): Use them instead of HAVE_*/gen_*
>> >> interface.
>> >> * calls.c (expand_call): Likewise.
>> >> * cfgrtl.c (cfg_layout_finalize): Likewise.
>> >> * df-scan.c (df_get_entry_block_def_set): Likewise.
>> >> (df_get_exit_block_use_set): Likewise.
>> >> * dwarf2cfi.c (pass_dwarf2_frame::gate): Likewise.
>> >> * final.c (final_start_function): Likewise.
>> >> * function.c (thread_prologue_and_epilogue_insns): Likewise.
>> >> (reposition_prologue_and_epilogue_notes): Likewise.
>> >> * reorg.c (find_end_label): Likewise.
>> >> * toplev.c (process_options): Likewise.
>> >
>> > I think this one -being the most fitting patch in the range
>> > (225190:225210]- caused this regression for cris-elf:
>> >
>> > Running
>> > /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
>> > ...
>> > FAIL: gcc.target/cris/torture/no-pro-epi-1.c -O3 -g (internal
>> > compiler error)
>> > FAIL: gcc.target/cris/torture/no-pro-epi-1.c -O3 -g (test for excess
>> > errors)
>> >
>> > This test checks that the -mno-prologue-epilogue option works,
>> > whose semantics is supposedly self-explanatory.
>>
>> Well, yes and no :-)
>
> Hm...I take that as an affirmation on the regression but perhaps
> a "no" to some of the my statements...
Just the semantics being self-explanatory. It wasn't obvious to me
what we were supposed to do with CFI. "Whatever" works for me though...
>> which I guess means that the HAVE_prologue condition wasn't being
>> consistently tested. Now that it is: is -mno-prologue-epilogue
>> just supposed to generate empty prologues and epilogues, as implied
>> by the cris.c code? If so then removing the conditions on "prologue"
>> and "epilogue" should work. If not, then which of the
>> targetm.have_prologue ()
>> etc. conditions do you need to be true for -mno-prologue-epilogue?
>>
>> (You have the distinction of having the only port with conditional
>> prologue and epilogue patterns. :-))
>
> Not any longer. Also removed a stale comment.
> This committed patch fixes the noted regressions, without
> causing further regressions, testing cris-elf in a simulator.
>
> gcc:
> * config/cris/cris.md ("epilogue"): Remove condition.
> ("prologue"): Ditto.
Thanks.
Richard