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

--- Comment #9 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:04918a2d3f20b02ac3efad1096c33894d57789a0

commit r15-9316-g04918a2d3f20b02ac3efad1096c33894d57789a0
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Apr 8 15:14:58 2025 +0200

    simplify-rtx: Fix up POPCOUNT optimization [PR119672]

    The gcc.dg/vect/pr113281-1.c test and many others ICE on riscv since
    presumably the r15-9238 change which allowed more cases of vector modes
    in simplify_const_relational_operation.
    In the testcase it is EQ of
    (popcount:SI (unspec:RVVMF32BI [
                (and:RVVMF32BI (const_vector:RVVMF32BI repeat [
                            (const_int 1 [0x1])
                        ])
                    (reg:RVVMF32BI 147 [ mask__6.8_35 ]))
                (reg:SI 143 [ _41 ])
                (const_int 0 [0])
                (reg:SI 66 vl)
                (reg:SI 67 vtype)
            ] UNSPEC_VPREDICATE))
    and
    (const_int 0 [0])
    which it tries to fold as EQ comparison of
    (unspec:RVVMF32BI [
            (and:RVVMF32BI (const_vector:RVVMF32BI repeat [
                        (const_int 1 [0x1])
                    ])
                (reg:RVVMF32BI 147 [ mask__6.8_35 ]))
            (reg:SI 143 [ _41 ])
            (const_int 0 [0])
            (reg:SI 66 vl)
            (reg:SI 67 vtype)
        ] UNSPEC_VPREDICATE)
    with
    (const_int 0 [0])
    which ICEs because const0_rtx isn't a vector.
    Fixed by using CONST0_RTX, so that we pass
    (const_vector:RVVMF32BI repeat [
            (const_int 0 [0])
        ])
    instead.

    2025-04-08  Jakub Jelinek  <ja...@redhat.com>

            PR rtl-optimization/119672
            * simplify-rtx.cc
(simplify_context::simplify_relational_operation_1):
            For POPCOUNT == 0 or != 0 optimizations use
            CONST0_RTX (GET_MODE (XEXP (op0, 0))) rather than const0_rtx.

Reply via email to