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).