https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97061
Bug ID: 97061 Summary: [OpenMP] ICE in in omp_add_variable, at gimplify.c:6955 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: openmp Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org Target Milestone: --- Found when looking at PR95654 - reduced + modified version of libgomp.fortran/pr66199-5.f90. The following ICEs with "gfortran -fopenmp test.f90": 6 | u(d1) = 5 | internal compiler error: in omp_add_variable, at gimplify.c:6955 0x671359 omp_add_variable ../../repos/gcc/gcc/gimplify.c:6955 integer function f3 (a1, b1) integer :: a1, b1, d1 integer u(0:1023) !$omp teams distribute parallel do simd default(none) firstprivate (a1, b1) shared(u) lastprivate(d1) do d1 = a1, b1-1 u(d1) = 5 end do end That's the assert: /* The only combination of data sharing classes we should see is FIRSTPRIVATE and LASTPRIVATE. However, OpenACC permits reduction variables to be used in data sharing clauses. */ gcc_assert ((ctx->region_type & ORT_ACC) != 0 || ((nflags & GOVD_DATA_SHARE_CLASS) == (GOVD_FIRSTPRIVATE | GOVD_LASTPRIVATE)) || (flags & GOVD_DATA_SHARE_CLASS) == 0); Original dump: #pragma omp teams firstprivate(a1) firstprivate(b1) shared(u) default(none) #pragma omp distribute lastprivate(d1) #pragma omp parallel firstprivate(a1) firstprivate(b1) lastprivate(d1) shared(u) default(none) #pragma omp for nowait #pragma omp simd linear(d1:1) lastprivate(d1)