https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91227
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- > if (p >= a || p <= a + 3) I think you mean &&. I believe we could fold it to true or false as we wish: false because the preexisting pointer cannot point to a local object, true because you are only allowed to compare pointers into the same object.