| ! { dg-do compile } |
| ! { dg-options "-fopenmp" } |
| |
| subroutine collapse1 |
| integer :: i, j, k, a(1:3, 4:6, 5:7) |
| real :: r |
| logical :: l |
| integer, save :: thr |
| !$omp threadprivate (thr) |
| l = .false. |
| a(:, :, :) = 0 |
| !$omp parallel do collapse(4) schedule(static, 4) ! { dg-error "not enough DO loops for collapsed" } |
| do i = 1, 3 |
| do j = 4, 6 |
| do k = 5, 7 |
| a(i, j, k) = i + j + k |
| end do |
| end do |
| end do |
| !$omp parallel do collapse(2) |
| do i = 1, 5, 2 |
| do j = i + 1, 7, i ! { dg-error "collapsed loops don.t form rectangular iteration space" } |
| end do |
| end do |
| !$omp parallel do collapse(2) shared(j) |
| do i = 1, 3 |
| do j = 4, 6 ! { dg-error "iteration variable present on clause other than PRIVATE or LASTPRIVATE" } |
| end do |
| end do |
| !$omp parallel do collapse(2) |
| do i = 1, 3 |
| do j = 4, 6 |
| end do |
| k = 4 |
| end do |
| !$omp parallel do collapse(2) |
| do i = 1, 3 |
| do ! { dg-error "cannot be a DO WHILE or DO without loop control" } |
| end do |
| end do |
| !$omp parallel do collapse(2) |
| do i = 1, 3 |
| do r = 4, 6 ! { dg-warning "must be integer" } |
| end do |
| end do |
| end subroutine collapse1 |
| |
| subroutine collapse1_2 |
| integer :: i |
| !$omp parallel do collapse(2) |
| do i = -6, 6 ! { dg-error "cannot be redefined inside loop beginning" } |
| do i = 4, 6 ! { dg-error "collapsed loops don.t form rectangular iteration space|cannot be redefined" } |
| end do |
| end do |
| end subroutine collapse1_2 |
| |
| ! { dg-error "iteration variable must be of type integer" "integer" { target *-*-* } 43 } |