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

--- Comment #3 from CVS 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:cf3a120084e94614a4917f71940325cd4b537f24

commit r13-1575-gcf3a120084e94614a4917f71940325cd4b537f24
Author: Richard Biener <rguent...@suse.de>
Date:   Fri Jul 8 10:41:59 2022 +0200

    tree-optimization/106226 - move vectorizer virtual SSA update

    When we knowingly have broken virtual SSA form we need to update
    it before we eventually perform slpeel manual updating which will
    call delete_update_ssa.  Currently that's done on-demand but
    communicating whether it's a known unavoidable case is broken
    there.  The following makes that a synchronous operation but
    instead of actually performing the update we instead recod the
    need, clear the update SSA sub-state and force virtual renaming
    at the very end of the vectorization pass.

            PR tree-optimization/106226
            * tree-vect-loop-manip.cc (vect_do_peeling): Assert that
            no SSA update is needed.  Move virtual SSA update ...
            * tree-vectorizer.cc (pass_vectorize::execute): ... here,
            via forced virtual renaming when TODO_update_ssa_only_virtuals
            is queued.
            (vect_transform_loops): Return TODO_update_ssa_only_virtuals
            when virtual SSA update is required.
            (try_vectorize_loop_1): Adjust.
            * tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow
            virtual renaming if the ABI forces an aggregate return
            but the original call did not have a virtual definition.

            * gfortran.dg/pr106226.f: New testcase.

Reply via email to