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
> >>



Reply via email to