https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111677
--- Comment #8 from Gianfranco <costamagnagianfranco at yahoo dot it> --- reduced testcase: typedef struct { int width } dt_bilateral_t; typedef dt_aligned_pixel_t[4]; #pragma omp declare simd void dt_bilateral_splat(dt_bilateral_t *b) { int oy = b; float *buf; long offsets[8]; for (int slice; slice < b; slice++) { for (int i; i < b->width; i++) { dt_aligned_pixel_t contrib; for (int k = 0; k < 4; k++) buf[offsets[k]] += contrib[k]; } float *dest, *src = oy; for (int i = 0; i < oy; i++) dest[i] += src[i]; } } removing openmp, fstack-protector-strong or ffast-math works.