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

--- Comment #7 from CVS 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:df0853d72d38247aed577a4511450c91794f2f06

commit r14-1507-gdf0853d72d38247aed577a4511450c91794f2f06
Author: Andrew Pinski <apin...@marvell.com>
Date:   Tue May 30 15:54:32 2023 -0700

    Fix PR 110042: ifcvt regression due to paradoxical subregs

    After r14-1014-gc5df248509b489364c573e8, GCC started to emit
    directly a zero_extract for `(t1&0x8)!=0`. This introduced
    a small regression where ifcvt would not do the ifconversion
    as there is now a paradoxical subreg in the dest which
    was being rejected. Since paradoxical subreg set the whole
    register, we can treat it as the same as a reg in the two places.

    OK? Bootstrapped and tested on x86_64-linux-gnu and aarch64-linux-gnu.

    gcc/ChangeLog:

            PR rtl-optimization/110042
            * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
            (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.

    gcc/testsuite/ChangeLog:

            PR rtl-optimization/110042
            * gcc.target/aarch64/csel_bfx_2.c: New test.

Reply via email to