https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99394
--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> --- testcase is: typedef float real_t; #define iterations 100000 #define LEN_1D 32000 #define LEN_2D 256 // array definitions real_t flat_2d_array[LEN_2D*LEN_2D]; real_t x[LEN_1D]; real_t a[LEN_1D],b[LEN_1D],c[LEN_1D],d[LEN_1D],e[LEN_1D], bb[LEN_2D][LEN_2D],cc[LEN_2D][LEN_2D],tt[LEN_2D][LEN_2D]; int indx[LEN_1D]; real_t* __restrict__ xx; real_t* yy; // %2.5 real_t s254(void) { // scalar and array expansion // carry around variable real_t x; for (int nl = 0; nl < 4*iterations; nl++) { x = b[LEN_1D-1]; for (int i = 0; i < LEN_1D; i++) { a[i] = (b[i] + x) * (real_t).5; x = b[i]; } } }