https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93291
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to David Malcolm from comment #1) > I'm not sure where the difference between the targets originates; is there a > way to force the usage of bitwise-or here? Try to write it this way: bool tmp1 = p == 0B; bool tmp2 = q == 0B bool tmp = tmp1 | tmp2; if (tmp) ....