https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111275
Bug ID: 111275
Summary: ifcombine and reassociation does not like to produce
`a ^ b` sometimes
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 f0(_Bool u, _Bool v)
{
_Bool t1, t;
t = !u & v;
t1 = !v & u;
if (t) goto L40;
if (t1) goto L40;
return 0;
L40:
return 1;
}
int f1(_Bool u, _Bool v)
{
_Bool t1, t;
t = !u & v;
if (t) goto L40;
t1 = !v & u;
if (t1) goto L40;
return 0;
L40:
return 1;
}
```
These 2 should just produce `return u ^ v;` (or `return u != v;`) but currently
only f0 does.