https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107881
--- Comment #14 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I have a patch which is able to optimize this to: t1_3 = b_1(D) >= a_2(D); _6 = b_1(D) > a_2(D); _4 = t1_3 ^ _6; But then we need to handle some simplifications for ^. I will handle that next week or so ...