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

--- Comment #17 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Robin Dapp <rd...@gcc.gnu.org>:

https://gcc.gnu.org/g:14cb0610559fa33f211e1546260458496fdc5e71

commit r15-6891-g14cb0610559fa33f211e1546260458496fdc5e71
Author: Robin Dapp <rd...@ventanamicro.com>
Date:   Fri Dec 27 17:29:25 2024 +0100

    match: Keep conditional in simplification to constant [PR118140].

    In PR118140 we simplify

      _ifc__33 = .COND_IOR (_41, d_lsm.7_11, _46, d_lsm.7_11);

    to 1:

    Match-and-simplified .COND_IOR (_41, d_lsm.7_11, _46, d_lsm.7_11) to 1

    when _46 == 1.  This happens by removing the conditional and applying
    a | 1 = 1.  Normally we re-introduce the conditional and its else value
    if needed but that does not happen here as we're not dealing with a
    vector type.  For correctness's sake, we must not remove the conditional
    even for non-vector types.

    This patch re-introduces a COND_EXPR in such cases.  For PR118140 this
    result in a non-vectorized loop.

            PR middle-end/118140

    gcc/ChangeLog:

            * gimple-match-exports.cc (maybe_resimplify_conditional_op): Add
            COND_EXPR when we simplified to a scalar gimple value but still
            have an else value.

    gcc/testsuite/ChangeLog:

            * gcc.dg/vect/pr118140.c: New test.
            * gcc.target/riscv/rvv/autovec/pr118140.c: New test.

Reply via email to