| ! PR fortran/79154 |
| ! { dg-do compile } |
| |
| pure real function foo (a, b) |
| real, intent(in) :: a, b |
| !$omp taskwait ! { dg-error "may not appear in PURE" } |
| foo = a + b |
| end function foo |
| pure function bar (a, b) |
| real, intent(in) :: a(8), b(8) |
| real :: bar(8) |
| integer :: i |
| !$omp do simd ! { dg-error "may not appear in PURE" } |
| do i = 1, 8 |
| bar(i) = a(i) + b(i) |
| end do |
| end function bar |
| pure function baz (a, b) |
| real, intent(in) :: a(8), b(8) |
| real :: baz(8) |
| integer :: i |
| !$omp do ! { dg-error "may not appear in PURE" } |
| do i = 1, 8 |
| baz(i) = a(i) + b(i) |
| end do |
| !$omp end do ! { dg-error "may not appear in PURE" } |
| end function baz |
| pure real function baz2 (a, b) |
| real, intent(in) :: a, b |
| !$omp target map(from:baz2) ! { dg-error "may not appear in PURE" } |
| baz2 = a + b |
| !$omp end target ! { dg-error "may not appear in PURE" } |
| end function baz2 |
| ! ELEMENTAL implies PURE |
| elemental real function fooe (a, b) |
| real, intent(in) :: a, b |
| !$omp taskyield ! { dg-error "may not appear in PURE" } |
| fooe = a + b |
| end function fooe |
| elemental real function baze (a, b) |
| real, intent(in) :: a, b |
| !$omp target map(from:baz) ! { dg-error "may not appear in PURE" } |
| baze = a + b |
| !$omp end target ! { dg-error "may not appear in PURE" } |
| end function baze |
| elemental impure real function fooei (a, b) |
| real, intent(in) :: a, b |
| !$omp taskyield ! { dg-bogus "may not appear in PURE" } |
| fooe = a + b |
| end function fooei |
| elemental impure real function bazei (a, b) |
| real, intent(in) :: a, b |
| !$omp target map(from:baz) ! { dg-bogus "may not appear in PURE" } |
| baze = a + b |
| !$omp end target ! { dg-bogus "may not appear in PURE" } |
| end function bazei |