diff options
author | Andrew Pinski <apinski@marvell.com> | 2023-05-30 15:54:32 -0700 |
---|---|---|
committer | Andrew Pinski <apinski@marvell.com> | 2023-06-02 19:22:13 +0000 |
commit | df0853d72d38247aed577a4511450c91794f2f06 (patch) | |
tree | 9636e8099fb9e99afe89496f3736aa46516c88f8 /libgcc | |
parent | 84d080a29a780973bef47171ba708ae2f7b4ee47 (diff) | |
download | gcc-df0853d72d38247aed577a4511450c91794f2f06.zip gcc-df0853d72d38247aed577a4511450c91794f2f06.tar.gz gcc-df0853d72d38247aed577a4511450c91794f2f06.tar.bz2 |
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.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions