https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110637
Bug ID: 110637
Summary: (type)(zeroonep !=/== 0) should be optimized as
(type)zeroonep/zeroonep^1 earlier than vrp
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: pinskia at gcc dot gnu.org
Target Milestone: ---
Take:
```
int f(int t)
{
t &= 1;
return t != 0;
}
```
Currently this only gets optimized at -O2 (due to VRP) to:
_4 = t_1(D) & 1;
return _4;
Likewise for:
```
int g(int t)
{
t &= 1;
return t == 0;
}
```
This was originally how I was going to solve PR 110539 but when we should
optimize to those gets in the way of other optimizations so I decided to fix PR
110539 a different way.