sharing1.f90 585 B

123456789101112131415161718192021222324252627282930
  1. ! { dg-do run }
  2. use omp_lib
  3. integer :: i, j, k
  4. logical :: l
  5. common /b/ i, j
  6. i = 4
  7. j = 8
  8. l = .false.
  9. !$omp parallel private (k) firstprivate (i) shared (j) num_threads (2) &
  10. !$omp& reduction (.or.:l)
  11. if (i .ne. 4 .or. j .ne. 8) l = .true.
  12. !$omp barrier
  13. k = omp_get_thread_num ()
  14. if (k .eq. 0) then
  15. i = 14
  16. j = 15
  17. end if
  18. !$omp barrier
  19. if (k .eq. 1) then
  20. if (i .ne. 4 .or. j .ne. 15) l = .true.
  21. i = 24
  22. j = 25
  23. end if
  24. !$omp barrier
  25. if (j .ne. 25 .or. i .ne. (k * 10 + 14)) l = .true.
  26. !$omp end parallel
  27. if (l .or. j .ne. 25) call abort
  28. end