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

--- Comment #10 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tamar Christina <tnfch...@gcc.gnu.org>:

https://gcc.gnu.org/g:3f69db1812106cb5bab203e17a60300ac51cdc68

commit r14-8880-g3f69db1812106cb5bab203e17a60300ac51cdc68
Author: Tamar Christina <tamar.christ...@arm.com>
Date:   Thu Feb 8 10:43:13 2024 +0000

    middle-end: don't cache restart_loop in vectorizable_live_operations
[PR113808]

    There's a bug in vectorizable_live_operation that restart_loop is defined
    outside the loop.

    This variable is supposed to indicate whether we are doing a first or last
    index reduction.  The problem is that by defining it outside the loop it
becomes
    dependent on the order we visit the USE/DEFs.

    In the given example, the loop isn't PEELED, but we visit the early exit
uses
    first.  This then sets the boolean to true and it can't get to false again.

    So when we visit the main exit we still treat it as an early exit for that
    SSA name.

    This cleans it up and renames the variables to something that's hopefully
    clearer to their intention.

    gcc/ChangeLog:

            PR tree-optimization/113808
            * tree-vect-loop.cc (vectorizable_live_operation): Don't cache the
            value cross iterations.

    gcc/testsuite/ChangeLog:

            PR tree-optimization/113808
            * gfortran.dg/vect/vect-early-break_1-PR113808.f90: New test.

Reply via email to