Re: [PATCH PR90078]Capping comp_cost computation in ivopts

bin.cheng bin.cheng@linux.alibaba.com
Sun May 5 06:02:00 GMT 2019


> ------------------------------------------------------------------
> Sender:Jakub Jelinek <jakub@redhat.com>
> Sent At:2019 Apr. 17 (Wed.) 19:27
> Recipient:Bin.Cheng <amker.cheng@gmail.com>
> Cc:bin.cheng <bin.cheng@linux.alibaba.com>; GCC Patches <gcc-patches@gcc.gnu.org>
> Subject:Re: [PATCH PR90078]Capping comp_cost computation in ivopts
> 
> 
> On Wed, Apr 17, 2019 at 07:14:05PM +0800, Bin.Cheng wrote:
> > > As
> > > #define INFTY 10000000
> > > what is the reason to keep the previous condition as well?
> > > I mean, if cost1.cost == INFTY or cost2.cost == INFTY,
> > > cost1.cost + cost2.cost >= INFTY too.
> > > Unless costs can go negative.
> > It's a bit complicated, but in general, costs can go negative.
> 
> Ok, no objections from me then (but as I don't know anything about it,
> not an ack either; you are ivopts maintainer, so you don't need one).

Hi,
The previous patch was reverted on GCC-9 because of PR90240.  PR90240 is now
fixed by another patch.  This is the updated patch for PR90078.  It promotes type
of ivopts cost from int to int64_t, as well as change behavior of infinite_cost overflow
from saturation to assert.
Please note, implicit conversions are kept in cost computation as before without
introducing any narrowing.

Bootstrap/test on x86_64 along with PR90240 patch.  Is it OK?

Thanks,
bin
2019-05-05  Bin Cheng  <bin.cheng@linux.alibaba.com>

        PR tree-optimization/90078
        * tree-ssa-loop-ivopts.c (inttypes.h): Include new header file.
        (INFTY): Increase the value for infinite cost.
        (struct comp_cost): Promote type of members to int64_t.
        (infinite_cost): Don't set complexity in initialization.
        (comp_cost::operator +,-,+=,-+,/=,*=): Assert when cost computation
        overflows to infinite_cost.
        (adjust_setup_cost): Promote type of parameter and cost computation
        to int64_t.
        (struct ainc_cost_data, struct iv_ca): Promote type of member to
        int64_t.
        (get_scaled_computation_cost_at, determine_iv_cost): Promote type of
        cost computation to int64_t.
        (determine_group_iv_costs, iv_ca_dump, find_optimal_iv_set): Use
        int64_t's format specifier in dump.

2018-05-05  Bin Cheng  <bin.cheng@linux.alibaba.com>

        PR tree-optimization/90078
        * g++.dg/tree-ssa/pr90078.C: New test.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Fix-pr90078-by-promoting-type-of-IVOPTs-cost-to-int6.patch
Type: application/octet-stream
Size: 14220 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20190505/e807bea3/attachment.obj>


More information about the Gcc-patches mailing list