https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67999
--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> --- GCC assumes objects will not wrap around zero only (well, it assumes objects cannot live at address zero but it also assumes that the pointer-to-one-element-after isn't zero or wraps around zero).