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

--- Comment #13 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>:

https://gcc.gnu.org/g:ceda727dafba6e05b510b5f8f4ccacfb507dc023

commit r15-3334-gceda727dafba6e05b510b5f8f4ccacfb507dc023
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Fri Aug 30 10:36:24 2024 -0700

    phiopt: Ignore some nop statements in heursics [PR116098]

    The heurstics that was added for PR71016, try to search to see
    if the conversion was being moved away from its definition. The problem
    is the heurstics would stop if there was a non GIMPLE_ASSIGN (and already
ignores
    debug statements) and in this case we would have a GIMPLE_LABEL that was
not
    being ignored. So we should need to ignore GIMPLE_NOP, GIMPLE_LABEL and
GIMPLE_PREDICT.
    Note this is now similar to how gimple_empty_block_p behaves.

    Note this fixes the wrong code that was reported by moving the VCE
(conversion) out before
    the phiopt/match could convert it into an bit_ior and move the VCE out with
the VCE being
    conditionally valid.

    Bootstrapped and tested on x86_64-linux-gnu.
    Also built and tested for aarch64-linux-gnu.

            PR tree-optimization/116098

    gcc/ChangeLog:

            * tree-ssa-phiopt.cc (factor_out_conditional_operation): Ignore
            nops, labels and predicts for heuristic for conversion with a
constant.

    gcc/testsuite/ChangeLog:

            * c-c++-common/torture/pr116098-1.c: New test.
            * gcc.target/aarch64/csel-1.c: New test.

    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Reply via email to