blob: 0446c5eee2bfefaacd915be1b2e5d56d7aeb9e01 [file] [log] [blame]
module m
integer a, b
end module m
subroutine f2 (c, d, e, f)
use m
implicit none
integer i, l, c(*), d(*), e(64), f(64)
l = 1
!$omp do reduction (inscan, +: a) linear (l) ! { dg-error "'inscan' 'reduction' clause used together with 'linear' clause for a variable other than loop iterator" }
do i = 1, 64
block
a = a + c(i)
l = l + 1
end block
!$omp scan inclusive (a)
d(i) = a
end do
end
subroutine f5 (c, d)
use m
implicit none
integer i, c(64), d(64)
!$omp simd reduction (inscan, +: a)
do i = 1, 64
d(i) = a
!$omp scan exclusive (a, b) ! { dg-error "'b' specified in 'exclusive' clause but not in 'inscan' 'reduction' clause on the containing construct" }
a = a + c(i)
end do
end
subroutine f6 (c, d)
use m
implicit none
integer i, c(64), d(64)
!$omp simd reduction (inscan, +: a, b) ! { dg-error "'b' specified in 'inscan' 'reduction' clause but not in 'scan' directive clause" }
do i = 1, 64
d(i) = a
!$omp scan exclusive (a)
a = a + c(i)
end do
end
subroutine f7
use m
implicit none
integer i
!$omp simd reduction (inscan, +: a)
do i = 1, 64
if (i == 27) goto 123 ! { dg-error "invalid branch to/from OpenMP structured block" }
! { dg-warning "is not in the same block as the GOTO statement" "" { target *-*-* } .-1 }
!$omp scan exclusive (a)
block
123 a = 0 ! { dg-error "jump to label 'l1'" "" { target c++ } }
! { dg-warning "is not in the same block as the GOTO statement" "" { target *-*-* } .-1 }
end block
end do
end