Hi! OpenMP 5.0 will change the default, when neither monotonic nor nonmonotonic modifier is present on dynamic or guided schedule, it is now nonmonotonic, while in 4.5 the default was monotonic.
2017-05-04 Jakub Jelinek <ja...@redhat.com> * omp-expand.c (expand_parallel_call, expand_omp_for): For dynamic and guided schedule without monotonic and nonmonotonic modifier, default to nonmonotonic. * gcc.dg/gomp/for-4.c: Expected nonmonotonic functions in the dumps. * gcc.dg/gomp/for-5.c: Likewise. * g++.dg/gomp/for-4.C: Likewise. * g++.dg/gomp/for-5.C: Likewise. --- gcc/omp-expand.c.jj 2017-05-04 15:05:50.000000000 +0200 +++ gcc/omp-expand.c 2017-05-04 17:58:48.633304639 +0200 @@ -536,8 +536,8 @@ expand_parallel_call (struct omp_region break; case OMP_CLAUSE_SCHEDULE_DYNAMIC: case OMP_CLAUSE_SCHEDULE_GUIDED: - if (region->inner->sched_modifiers - & OMP_CLAUSE_SCHEDULE_NONMONOTONIC) + if ((region->inner->sched_modifiers + & OMP_CLAUSE_SCHEDULE_MONOTONIC) == 0) { start_ix2 = 3 + region->inner->sched_kind; break; @@ -5854,7 +5854,7 @@ expand_omp_for (struct omp_region *regio break; case OMP_CLAUSE_SCHEDULE_DYNAMIC: case OMP_CLAUSE_SCHEDULE_GUIDED: - if ((fd.sched_modifiers & OMP_CLAUSE_SCHEDULE_NONMONOTONIC) + if ((fd.sched_modifiers & OMP_CLAUSE_SCHEDULE_MONOTONIC) == 0 && !fd.ordered && !fd.have_ordered) { --- gcc/testsuite/gcc.dg/gomp/for-4.c.jj 2017-05-04 15:05:34.000000000 +0200 +++ gcc/testsuite/gcc.dg/gomp/for-4.c 2017-05-04 18:17:27.792233682 +0200 @@ -12,5 +12,5 @@ void foo (int n) bar(i); } -/* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_start" 1 "ompexp" } } */ -/* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_next" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_dynamic_start" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_dynamic_next" 1 "ompexp" } } */ --- gcc/testsuite/gcc.dg/gomp/for-5.c.jj 2017-05-04 15:05:34.000000000 +0200 +++ gcc/testsuite/gcc.dg/gomp/for-5.c 2017-05-04 18:19:16.363931760 +0200 @@ -12,5 +12,5 @@ void foo (int n) bar(i); } -/* { dg-final { scan-tree-dump-times "GOMP_loop_guided_start" 1 "ompexp" } } */ -/* { dg-final { scan-tree-dump-times "GOMP_loop_guided_next" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_guided_start" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_guided_next" 1 "ompexp" } } */ --- gcc/testsuite/g++.dg/gomp/for-4.C.jj 2017-05-04 15:05:46.000000000 +0200 +++ gcc/testsuite/g++.dg/gomp/for-4.C 2017-05-04 18:18:00.182845275 +0200 @@ -12,5 +12,5 @@ void foo (int n) bar(i); } -/* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_start" 1 "ompexp" } } */ -/* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_next" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_dynamic_start" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_dynamic_next" 1 "ompexp" } } */ --- gcc/testsuite/g++.dg/gomp/for-5.C.jj 2017-05-04 15:05:46.000000000 +0200 +++ gcc/testsuite/g++.dg/gomp/for-5.C 2017-05-04 18:18:12.796694018 +0200 @@ -12,5 +12,5 @@ void foo (int n) bar(i); } -/* { dg-final { scan-tree-dump-times "GOMP_loop_guided_start" 1 "ompexp" } } */ -/* { dg-final { scan-tree-dump-times "GOMP_loop_guided_next" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_guided_start" 1 "ompexp" } } */ +/* { dg-final { scan-tree-dump-times "GOMP_loop_nonmonotonic_guided_next" 1 "ompexp" } } */ Jakub