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.ch...@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.ch...@arm.com>

        PR tree-optimization/71437
        * gcc.dg/tree-ssa/pr71437.c: New test.

Looking at this code for the first time in a long time, I wonder if the handling of ASSERT_EXPRs ought to move into the callback provided by VRP. The code here has become rather convoluted.

Given I want to remove the instances of the threader called by VRP that cleanup may not be worth the effort. Not sure. Punting that decition to gcc-8.

I'm a bit surprised that this isn't detected by the callback into VRP. I'll take a peek at that next week.

Jeff

Reply via email to