[PATCH PR71437/V2]Simplify cond with assertions in threading

Bin.Cheng amker.cheng@gmail.com
Fri Feb 17 10:23:00 GMT 2017


On Fri, Feb 17, 2017 at 3:40 AM, Jeff Law <law@redhat.com> wrote:
> On 02/14/2017 03:05 AM, Bin Cheng wrote:
>>
>> Hi,
>> This is the second try fixing PR71437.  The old version patch tried to fix
>> issue in VRP but it requires further non-trivial change in VRP,
>> specifically, to better support variable value ranges.  This is not
>> appropriate at stage 4.  Alternatively, this patch tries to fix issue by
>> improving threading.  It additionally simplifies condition by using
>> assertion conditions.
>>
>> Bootstrap and test on x86_64 and AArch64.  Is it OK?
>>
>> Thanks,
>> bin
>>
>> 2017-02-13  Bin Cheng  <bin.cheng@arm.com>
>>
>>         PR tree-optimization/71437
>>         * tree-ssa-loop-niter.c (tree_simplify_using_condition): Only
>>         expand condition if new parameter says so.  Also change it to
>>         global.
>>         * tree-ssa-loop-niter.h (tree_simplify_using_condition): New
>>         declaration.
>>         * tree-ssa-threadedge.c (tree-ssa-loop-niter.h): New include file.
>>         (simplify_control_stmt_condition_1): Simplify condition using
>>         assert conditions.
>>
>> gcc/testsuite/ChangeLog
>> 2017-02-13  Bin Cheng  <bin.cheng@arm.com>
>>
>>         PR tree-optimization/71437
>>         * gcc.dg/tree-ssa/pr71437.c: New test.
>>
> So following up.  We're not going to get anywhere using the ranges in VRP.
> As Bin noted in the V1 patch, VRP prefers a useless range with constant
> bounds when a symbolic range would be better.  Thus the callbacks into VRP
> are doomed to failure.
>
> Bin's patch works around this by using the ASSERT_EXPRs to recover the
> symbolic range.  So it's a bit of a hack, but not a terrible one.  If we
> want to continue this path, we might still look for ways to avoid
> simplify_using_condition.
>
> One idea would be to go ahead and record the equivalence from the
> ASSERT_EXPR into the expression hash table and use the expression hash table
> to simplify the condition.  We didn't have that ability in the past, but
> should now after the refactorings from last year.
>
> It's slightly related to some ideas I've got around tackling 78496.
>
> I'm in/out of the office for until the 27th semi-randomly.  I'll try to poke
> at this while on the road.
Thanks for helping, I will hold this patch and let you work out a
generic fix in threading.

Thanks,
bin
>
> Jeff
>
>



More information about the Gcc-patches mailing list