https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70170
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Shouldn't -fno-delete-null-pointer-checks disable that? Or maybe only if the constant is "negative", because with -fno-delete-null-pointer-checks in theory some object could live at address NULL and you could have: ptr = &object_at_0[0]; ptr += 4; ... if (ptr - 4 == NULL)