https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109832
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|target |middle-end
Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot
gnu.org
Status|NEW |ASSIGNED
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think I know what is happening here.
Another testcase:
```
bool t();
bool f() {
bool x = t();
bool y = t();
return x | y;
}
```
But if we do this:
```
bool t();
bool f() {
bool x = t() ^ t();
bool y = t() ^ t();
return x | y;
}
```
it works.
So this comes down to ccmp expansion really. In the case where it is bad the
SSA_NAME comes from a non-gimple assign statement but in the good case it comes
from an assign statement.
I will solve this for GCC 16 (or assign it to someone to solve).