https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91326
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- For bar, we don't take advantage of the uninitialized variable enough, we still have "a_3(D) == 0" at expansion time (RTL gets rid of it, but too conservatively). For foo, indeed computing the min and max values of the array to get a range for any access to it would be nice.