Extend optimization for integer bit test on __atomic_fetch_[or|and]_*
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 1 Nov 2022 16:49:18 +0000 (09:49 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 7 Nov 2022 19:18:21 +0000 (11:18 -0800)
commit03ed4e57e3d46a61513b3d1ab1720997aec8cf71
tree5c077907598402c6266c63575d64378b10f8ac2f
parent2ee0165f72be96083deaa8fd315bcfed011acd52
Extend optimization for integer bit test on __atomic_fetch_[or|and]_*

Extend optimization for

_1 = __atomic_fetch_or_4 (ptr_6, 0x80000000, _3);
_5 = (signed int) _1;
_4 = _5 >= 0;

to

_1 = __atomic_fetch_or_4 (ptr_6, 0x80000000, _3);
_5 = (signed int) _1;
if (_5 >= 0)

gcc/

PR middle-end/102566
* tree-ssa-ccp.cc (optimize_atomic_bit_test_and): Also handle
if (_5 < 0) and if (_5 >= 0).

gcc/testsuite/

PR middle-end/102566
* g++.target/i386/pr102566-7.C
gcc/testsuite/g++.target/i386/pr102566-7.C [new file with mode: 0644]
gcc/tree-ssa-ccp.cc