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

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Richard Sandiford <rsand...@gcc.gnu.org>:

https://gcc.gnu.org/g:06ee648e9bb8c121fbd93659f81d3380dba8be09

commit r14-8372-g06ee648e9bb8c121fbd93659f81d3380dba8be09
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Tue Jan 23 17:42:51 2024 +0000

    aarch64/expr: Use ccmp when the outer expression is used twice [PR100942]

    Ccmp is not used if the result of the and/ior is used by both
    a GIMPLE_COND and a GIMPLE_ASSIGN. This improves the code generation
    here by using ccmp in this case.
    Two changes is required, first we need to allow the outer statement's
    result be used more than once.
    The second change is that during the expansion of the gimple, we need
    to try using ccmp. This is needed because we don't use expand the ssa
    name of the lhs but rather expand directly from the gimple.

    A small note on the ccmp_4.c testcase, we should be able to get slightly
    better than with this patch but it is one extra instruction compared to
    before.

            PR target/100942

    gcc/ChangeLog:

            * ccmp.cc (ccmp_candidate_p): Add outer argument.
            Allow if the outer is true and the lhs is used more
            than once.
            (expand_ccmp_expr): Update call to ccmp_candidate_p.
            * expr.h (expand_expr_real_gassign): Declare.
            * expr.cc (expand_expr_real_gassign): New function, split out
from...
            (expand_expr_real_1): ...here.
            * cfgexpand.cc (expand_gimple_stmt_1): Use
expand_expr_real_gassign.

    gcc/testsuite/ChangeLog:

            * gcc.target/aarch64/ccmp_3.c: New test.
            * gcc.target/aarch64/ccmp_4.c: New test.
            * gcc.target/aarch64/ccmp_5.c: New test.

    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
    Co-Authored-By: Richard Sandiford <richard.sandif...@arm.com>
  • [Bug middle-end/100942] ccmp is... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to