https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77689

--- Comment #18 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jan Hubicka <hubi...@gcc.gnu.org>:

https://gcc.gnu.org/g:f5fb9ff2396fd41fdd2e6d35a412e936d2d42f75

commit r14-2852-gf5fb9ff2396fd41fdd2e6d35a412e936d2d42f75
Author: Jan Hubicka <j...@suse.cz>
Date:   Fri Jul 28 16:18:32 2023 +0200

    loop-split improvements, part 3

    extend tree-ssa-loop-split to understand test of the form
     if (i==0)
    and
     if (i!=0)
    which triggers only during the first iteration.  Naturally we should
    also be able to trigger last iteration or split into 3 cases if
    the test indeed can fire in the middle of the loop.

    Last iteration is bit trickier pattern matching so I want to do it
    incrementally, but I implemented easy case using value range that handled
    loops with constant iterations.

    The testcase gets misupdated profile, I will also fix that incrementally.

    gcc/ChangeLog:

            PR middle-end/77689
            * tree-ssa-loop-split.cc: Include value-query.h.
            (split_at_bb_p): Analyze cases where EQ/NE can be turned
            into LT/LE/GT/GE; return updated guard code.
            (split_loop): Use guard code.

    gcc/testsuite/ChangeLog:

            PR middle-end/77689
            * g++.dg/tree-ssa/loop-split-1.C: New test.

Reply via email to