retval2.f90 615 B

12345678910111213141516171819202122232425262728
  1. ! { dg-do run }
  2. function f1 ()
  3. real :: f1
  4. f1 = 6.5
  5. call sub1
  6. contains
  7. subroutine sub1
  8. use omp_lib
  9. logical :: l
  10. l = .false.
  11. !$omp parallel firstprivate (f1) num_threads (2) reduction (.or.:l)
  12. l = f1 .ne. 6.5
  13. if (omp_get_thread_num () .eq. 0) f1 = 8.5
  14. if (omp_get_thread_num () .eq. 1) f1 = 14.5
  15. !$omp barrier
  16. l = l .or. (omp_get_thread_num () .eq. 0 .and. f1 .ne. 8.5)
  17. l = l .or. (omp_get_thread_num () .eq. 1 .and. f1 .ne. 14.5)
  18. !$omp end parallel
  19. if (l) call abort
  20. f1 = -2.5
  21. end subroutine sub1
  22. end function f1
  23. real :: f1
  24. if (f1 () .ne. -2.5) call abort
  25. end