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

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

https://gcc.gnu.org/g:34ed721929700b85f19f14fc56fb598a658b2bbc

commit r11-9227-g34ed721929700b85f19f14fc56fb598a658b2bbc
Author: Richard Biener <rguent...@suse.de>
Date:   Mon Oct 18 10:31:19 2021 +0200

    tree-optimization/102788 - avoid spurious bool pattern fails

    Bool pattern recog is required for correctness since vectorized
    compares otherwise produce -1 for true so any context where bool
    is used as value and not as condition or mask needs to be replaced
    with CMP ? 1 : 0.  When we fail to find a vector type for the
    result of such use we may not simply elide such transform since
    a new bool result can emerge when for example the cast_forwprop
    pattern is applied.  So the following avoids failing of the
    bool pattern recog process and instead not assign a vector type
    for the stmt.

    2021-10-18  Richard Biener  <rguent...@suse.de>

            PR tree-optimization/102788
            * tree-vect-patterns.c (vect_init_pattern_stmt): Allow
            a NULL vectype.
            (vect_pattern_recog_1): Likewise.
            (vect_recog_bool_pattern): Continue matching the pattern
            even if we do not have a vector type for a conversion
            result.

            * g++.dg/vect/pr102788.cc: New testcase.

    (cherry picked from commit eb032893675afea4b01cc6ad06a3e0dcfe9b51cd)

Reply via email to