https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98813
--- Comment #4 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> --- Thanks, Richard! One interesting thing: below code is vectorized: void foo (const double *__restrict__ A, const double *__restrict__ B, double *__restrict__ C, int n, int k, int m) { if (n > 0 && m > 0 && k > 0) for (unsigned int l_m = 0; l_m < m; l_m++) C[n + l_m] += A[k + l_m] * B[k]; }