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

--- Comment #11 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:8f6ed71d8fff3c3c6249651a72aee084e31ffb9e

commit r14-8839-g8f6ed71d8fff3c3c6249651a72aee084e31ffb9e
Author: Tamar Christina <tamar.christ...@arm.com>
Date:   Wed Feb 7 10:58:25 2024 +0000

    middle-end: fix ICE when moving statements to empty BB [PR113731]

    We use gsi_move_before (&stmt_gsi, &dest_gsi); to request that the new
statement
    be placed before any other statement.  Typically this then moves the
current
    pointer to be after the statement we just inserted.

    However it looks like when the BB is empty, this does not happen and the
CUR
    pointer stays NULL.   There's a comment in the source of gsi_insert_before
that
    explains:

    /* If CUR is NULL, we link at the end of the sequence (this case happens

    This adds a default parameter to gsi_move_before to allow us to control
where
    the insertion happens.

    gcc/ChangeLog:

            PR tree-optimization/113731
            * gimple-iterator.cc (gsi_move_before): Take new parameter for
update
            method.
            * gimple-iterator.h (gsi_move_before): Default new param to
            GSI_SAME_STMT.
            * tree-vect-loop.cc (move_early_exit_stmts): Call gsi_move_before
with
            GSI_NEW_STMT.

    gcc/testsuite/ChangeLog:

            PR tree-optimization/113731
            * gcc.dg/vect/vect-early-break_111-pr113731.c: New test.

Reply via email to