https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89367
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- If the compiler can prove the addresses are the same or are different, then sure, it will evaluate to constant 0 or 1. The question is if the compiler must be able to prove it in all cases (which is impossible, in some cases it needs to do runtime checks and then it can't be a constant expression), and if the problematic cases include the above ones.