Issue error if a DO construct associated with a loop does not have loop control. Currently, it is issued only for the loop immediately following the loop construct. This patch extends it to cases like collapse where there is more than one loop associated. It also fixes a crash since the existing code always expects loop control. This is covered in OpenMP 4.5 standard, Section 2.7.1. "The do-loop cannot be a DO WHILE or a DO loop without loop control." OpenACC 3.3 covers this indirectly in Section 2.9.1. The trip count for all loops associated with the collapse clause must be computable and invariant in all the loops". Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D144290
15 lines
389 B
Fortran
15 lines
389 B
Fortran
! RUN: not %flang_fc1 -fdebug-unparse-with-symbols -fopenmp %s 2>&1 | FileCheck %s
|
|
! OpenMP Version 4.5
|
|
! 2.7.1 Loop Construct
|
|
program omp_doCollapse
|
|
integer:: i
|
|
!$omp parallel do collapse(2)
|
|
do i = 1, 3
|
|
!CHECK: Loop control is not present in the DO LOOP
|
|
!CHECK: associated with the enclosing LOOP construct
|
|
do
|
|
end do
|
|
end do
|
|
end program omp_doCollapse
|
|
|