Ping. https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00609.html
Thanks, Kyrill > -----Original Message----- > From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- > ow...@gcc.gnu.org] On Behalf Of Kyrill Tkachov > Sent: 12 August 2015 15:32 > To: Jeff Law; Steven Bosscher > Cc: Bernhard Reutner-Fischer; GCC Patches > Subject: Re: [PATCH][RTL-ifcvt] Make non-conditional execution if- > conversion more aggressive > > > On 11/08/15 18:09, Kyrill Tkachov wrote: > > On 11/08/15 18:05, Jeff Law wrote: > >> On 08/09/2015 03:20 PM, Steven Bosscher wrote: > >>> On Fri, Jul 31, 2015 at 7:26 PM, Jeff Law <l...@redhat.com> wrote: > >>>> So there's a tight relationship between the implementation of > >>>> bbs_ok_for_cmove_arith and insn_valid_noce_process_p. If there > >>>> wasn't, then we'd probably be looking to use note_stores and > note_uses. > >>> Perhaps I'm missing something, but what is wrong with using DF here > >>> instead of note_stores/note_uses? All the info on refs/mods of > >>> registers is available in the DF caches. > >> Nothing inherently wrong with using DF here. > > I have reworked the patch to use FOR_EACH_INSN_DEF and > > FOR_EACH_INSN_USE in bbs_ok_for_cmove_arith to extracts the > refs/mods and it seems to work. > > Is that what you mean by DF? > > I'm doing some more testing and hope to post the updated version soon. > > Here it is, I've used the FOR_EACH* macros from dataflow to gather the uses > and sets. > > Bootstrapped and tested on x86_64 and aarch64. > How does this look? > > Thanks, > Kyrill > > 2015-08-10 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * ifcvt.c (struct noce_if_info): Add then_simple, else_simple, > then_cost, else_cost fields. Change branch_cost field to unsigned int. > (end_ifcvt_sequence): Call set_used_flags on each insn in the > sequence. > Include rtl-iter.h. > (noce_simple_bbs): New function. > (noce_try_move): Bail if basic blocks are not simple. > (noce_try_store_flag): Likewise. > (noce_try_store_flag_constants): Likewise. > (noce_try_addcc): Likewise. > (noce_try_store_flag_mask): Likewise. > (noce_try_cmove): Likewise. > (noce_try_minmax): Likewise. > (noce_try_abs): Likewise. > (noce_try_sign_mask): Likewise. > (noce_try_bitop): Likewise. > (bbs_ok_for_cmove_arith): New function. > (noce_emit_all_but_last): Likewise. > (noce_emit_insn): Likewise. > (noce_emit_bb): Likewise. > (noce_try_cmove_arith): Handle non-simple basic blocks. > (insn_valid_noce_process_p): New function. > (contains_mem_rtx_p): Likewise. > (bb_valid_for_noce_process_p): Likewise. > (noce_process_if_block): Allow non-simple basic blocks > where appropriate. > > 2015-08-11 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * gcc.dg/ifcvt-1.c: New test. > * gcc.dg/ifcvt-2.c: Likewise. > * gcc.dg/ifcvt-3.c: Likewise. > > > Thanks, > > Kyrill > > > >> jeff > >>