https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84803
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- So the reason is that data-ref analysis doesn't consider # VUSE <.MEM_20> _12 = MEM[(char *)"" + 1B]; as a load. It's an out-of-bound read which we don't fold optimistically or replace with a trap. At this point it's probably easiest to just handle the case of data-ref not producing a reference for constants.