https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106379
--- Comment #4 from Andrew Macleod <amacleod at redhat dot com> --- Ranger actually appears to handle both cases the same. VRP1 gets it whilst ranger does not. I believe this to be because we are match and simplifying _1 = ~c_5(D); _2 = _1 & s_4(D); with c_5 == s_4... but at this point, the simplification code doesn't understand the relation oracle, so I beleive it to be missing the fact that _2 will evaluate to 0 because it doesnt see the equivalency. VRP1 gets it because its in intergrated in the legacy range that passed in as an equivset. I will shortly get to some equivalency processing during simplificatoin as a part of trying to remove VRP1. We should then pick this up with in EVRP.