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

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

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

commit r14-2620-gcbe5f6859a73b2acf203bd7d13f9fb245d63cbd4
Author: Richard Biener <rguent...@suse.de>
Date:   Tue Jul 18 10:02:52 2023 +0200

    middle-end/105715 - missed RTL if-conversion with COND_EXPR expansion

    When the COND_EXPR condition operand was split out to a separate stmt
    it became subject to CSE with other condition evaluations.  This
    unfortunately leads to TER no longer applying and in turn RTL
    expansion of COND_EXPRs no longer seeing the condition and thus
    failing to try conditional move expansion.  This can be seen with
    gcc.target/i386/pr45685.c when built with -march=cascadelake which
    then FAILs to produce the expected number of cmovs.

    It can also be seen when we create more COND_EXPRs early like for
    instruction selection of MIN/MAX operations that map to IEEE
    a > b ? a : b expression semantics.

            PR middle-end/105715
            * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
            (pass_gimple_isel::execute): ... this.  Duplicate
            comparison defs of COND_EXPRs.

Reply via email to