https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91832
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- negative offset can indeed happen. Valid cases would be hidden inside pointer-based MEM_REFs though, from code like p = p - 4; ... = *p; which we'd represent as MEM[p, -4]