blob: 38d3fe5c384261d71d7d61bba45d069bc2d187bc [file] [log] [blame]
! 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