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

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

https://gcc.gnu.org/g:0f38666680d6ad0e40c4a8b6d94b2c93931cdf42

commit r14-8206-g0f38666680d6ad0e40c4a8b6d94b2c93931cdf42
Author: Richard Biener <rguent...@suse.de>
Date:   Wed Jan 17 13:24:22 2024 +0100

    tree-optimization/113374 - early break vect and virtual operands

    The following fixes wrong virtual operands being used for peeled
    early breaks where we can have different live ones and for multiple
    exits it makes sure to update the correct PHI arguments.

    I've introduced SET_PHI_ARG_DEF_ON_EDGE so we can avoid using
    a wrong edge to compute the PHI arg index from.

    I've took the liberty to understand the code again and refactor
    and comment it a bit differently.  The main functional change
    is that we preserve the live virtual operand on all exits.

            PR tree-optimization/113374
            * tree-ssa-operands.h (SET_PHI_ARG_DEF_ON_EDGE): New.
            * tree-vect-loop.cc (move_early_exit_stmts): Update
            virtual LC PHIs.
            * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
            Refactor.  Preserve virtual LC PHIs on all exits.

            * gcc.dg/vect/vect-early-break_106-pr113374.c: New testcase.

Reply via email to