1! { dg-do run } 2 3 use omp_lib 4 integer :: err, e 5 6!$omp atomic write 7 err = 0 8!$omp parallel shared(err) private(e) 9 if (omp_in_final ()) then 10!$omp atomic write 11 err = 1 12 endif 13!$omp task if (.false.) shared(err) 14 if (omp_in_final ()) then 15!$omp atomic write 16 err = 1 17 endif 18!$omp task if (.false.) shared(err) 19 if (omp_in_final ()) then 20!$omp atomic write 21 err = 1 22 endif 23!$omp end task 24!$omp end task 25!$omp atomic read 26 e = err 27!$omp task final (e .eq. 0) shared(err) 28 if (.not.omp_in_final ()) then 29!$omp atomic write 30 err = 1 31 endif 32!$omp taskyield 33!$omp taskwait 34!$omp task shared(err) 35 if (.not.omp_in_final ()) then 36!$omp atomic write 37 err = 1 38 endif 39!$omp end task 40!$omp end task 41!$omp end parallel 42!$omp atomic read 43 e = err 44 if (e .ne. 0) stop 1 45end 46