https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111543
Bug ID: 111543
Summary: `(a & b) & ~a` could be optimized before reassociation
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:
```
_Bool fb(int x,int y)
{
_Bool a = x == 1;
_Bool b = y == 2;
_Bool t = a & b;
return t & !a;
}
int fi(int a,int b)
{
int t = a & b;
return t & ~a;
}
```
We should optimize both of these to `return 0` in ccp1.