https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111542
Bug ID: 111542
Summary: [11/12/13/14 Regression]
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: pinskia at gcc dot gnu.org
Target Milestone: ---
Take:
```
_Bool f(int x,int y)
{
_Bool a = x == 0;
_Bool b = y == 0;
_Bool t = a & b;
return t & !a;
}
```
This used to optimize to 0 in GCC 6 but starting with GCC 7, we get:
```
_5 = x_2(D) | y_3(D);
_6 = _5 == 0;
_1 = x_2(D) != 0;
_7 = _1 & _6;
```