https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101262
Bug ID: 101262 Summary: GCC11 OpenMP optimization causes sigsegv on aligned constant array in darktable Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: johnnybit at gmail dot com Target Milestone: --- A loop with constant length arrays with openmp and simd optimization crashes with sigsegv when compilled with GCC11. Same code works with previous versions and with various Clang versions the code in question looks like #define PIXEL_CHAN 8 static const float centers_ops[PIXEL_CHAN] DT_ALIGNED_ARRAY = {-56.0f / 7.0f, // = -8.0f -48.0f / 7.0f, -40.0f / 7.0f, -32.0f / 7.0f, -24.0f / 7.0f, -16.0f / 7.0f, -8.0f / 7.0f, 0.0f / 7.0f}; #pragma omp simd aligned(centers_ops, factors:64) safelen(PIXEL_CHAN) reduction(+:result) for(int i = 0; i < PIXEL_CHAN; ++i) result += gaussian_func(expo - centers_ops[i], gauss_denom) * factors[i]; centers_ops is static const float [PIXEL_CHAN] factors is const float *const restric factors (which is PIXEL_CHAN length) the crash is on result += gaussian_func(expo - centers_ops[i], gauss_denom) * factors[i]; line. The reports in darktable are https://github.com/darktable-org/darktable/issues/9340 https://github.com/darktable-org/darktable/issues/9002