On Wed, Apr 26, 2017 at 3:32 PM, Bin.Cheng <amker.ch...@gmail.com> wrote: > On Wed, Apr 26, 2017 at 3:23 PM, Richard Biener > <richard.guent...@gmail.com> wrote: >> On Wed, Apr 26, 2017 at 3:37 PM, Bin.Cheng <amker.ch...@gmail.com> wrote: >>> On Wed, Apr 26, 2017 at 2:32 PM, Richard Biener >>> <richard.guent...@gmail.com> wrote: >>>> On Tue, Apr 18, 2017 at 12:52 PM, Bin Cheng <bin.ch...@arm.com> wrote: >>>>> Hi, >>>>> Given only integer variables are meaningful for register pressure >>>>> estimation in IVOPTs, >>>>> this patch skips non-integer type PHIs when counting register pressure. >>>>> Is it OK? >>>> >>>> Huh. I suppose it only makes a difference because you are ignoring >>>> POINTER_TYPE_P >>>> IVs? At least I would be surprised if get_iv returns true for float >>>> or vector PHIs (yeah, see >>>> early out in get_iv)? So why exclude POINTER_TYPE_P IVs? >>> Hmm, but if get_iv returns non-NULL, the phi won't be counted because >>> loop is continued? Actually, all IV and invariants are skipped by >>> checking get_iv, so this is only to skip floating point phis. >> >> Err, but AFAICS get_iv will return non-NULL for POINTER_TYPE_P IVs >> which you then skip by your added >> >> + if (!INTEGRAL_TYPE_P (TREE_TYPE (op))) >> + continue; >> >> thus float IVs are always skipped by means if get_iv returning NULL. >> >> Oh, the get_iv check continues for non-NULL result ... so it makes sense. >> But still, why exclude POINTER_TYPE_P non-IV ops? > POINTER_TYPE_P is simply an overlook, will update patch. Here is updated version picking up POINTER_TYPE_P.
Thanks, bin > > Thanks, > bin >> >> Richard. >> >>> Thanks, >>> bin >>>> >>>> Richard. >>>> >>>>> Thanks, >>>>> bin >>>>> >>>>> 2017-04-11 Bin Cheng <bin.ch...@arm.com> >>>>> >>>>> * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger >>>>> when counting register pressure. >>>>>
From 9c2d8f5f3b749863bcb9a32ff3a520a8d3eda9f1 Mon Sep 17 00:00:00 2001 From: Bin Cheng <binch...@e108451-lin.cambridge.arm.com> Date: Tue, 7 Mar 2017 16:26:27 +0000 Subject: [PATCH 26/33] skip-non_int-phi-reg-pressure-20170401.txt --- gcc/tree-ssa-loop-ivopts.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 205d118..8d6adfe 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -5579,6 +5579,10 @@ determine_set_costs (struct ivopts_data *data) if (get_iv (data, op)) continue; + if (!POINTER_TYPE_P (TREE_TYPE (op)) + && !INTEGRAL_TYPE_P (TREE_TYPE (op))) + continue; + n++; } -- 1.9.1