https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81591
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Slightly adjusted testcase - no headers, no VLAs, etc.: int main () { #define MT 4 int a[MT * MT]; for (int i = 0; i < MT * MT; i++) a[i] = 0; #pragma omp parallel #pragma omp master { for (int k = 0; k < MT; k++) { int *a0 = &a[k * MT + k]; int *a2 = &a[k * MT + MT - 1]; #pragma omp task depend(inout:a0[0:1]) \ depend(inout:a2[0:1]) priority(1) { #pragma omp taskloop num_tasks(MT - k) priority(2) for (int m = k; m < MT; m++) a[k * MT + m] += 1; #pragma omp taskwait } } } for (int i = 0; i < MT * MT; i++) if (a[i] != ((i % MT) >= (i / MT))) __builtin_abort (); return 0; }