blob: e904f348ae47a4439655b45b0f851f5887d334fa [file] [log] [blame] [edit]
! RUN: %python %S/../test_errors.py %s %flang_fc1 %openmp_flags
! OpenMP Version 5.2
! Test that arrays in LINEAR clause are rejected on SIMD directive
! This test addresses issue #171007 - crash with array in LINEAR clause
subroutine test_1d_array_in_linear()
implicit none
integer :: j, arr(2)
!ERROR: List item 'arr' in LINEAR clause must be a scalar variable
!$omp simd linear(arr)
do j=1,10
end do
end subroutine
subroutine test_multidim_array()
implicit none
integer :: j, matrix(3,3)
!ERROR: List item 'matrix' in LINEAR clause must be a scalar variable
!$omp simd linear(matrix)
do j=1,10
end do
end subroutine
subroutine test_assumed_shape_array(arr)
implicit none
integer :: j
integer, intent(in) :: arr(:)
!ERROR: List item 'arr' in LINEAR clause must be a scalar variable
!$omp simd linear(arr)
do j=1,10
end do
end subroutine
subroutine test_multiple_vars_with_array()
implicit none
integer :: j, scalar1, arr(5), scalar2
!ERROR: List item 'arr' in LINEAR clause must be a scalar variable
!$omp simd linear(scalar1, arr, scalar2)
do j=1,10
scalar1 = j
scalar2 = j
end do
end subroutine
! Valid case - scalar should work fine
subroutine test_scalar_valid()
implicit none
integer :: j, scalar
!$omp simd linear(scalar)
do j=1,10
scalar = j
end do
end subroutine
! Valid case - multiple scalars should work
subroutine test_multiple_scalars_valid()
implicit none
integer :: j, scalar1, scalar2, scalar3
!$omp simd linear(scalar1, scalar2, scalar3)
do j=1,10
scalar1 = j
scalar2 = j
scalar3 = j
end do
end subroutine
! Valid case - declare simd with REF modifier allows arrays
subroutine test_declare_simd_ref_array_valid(arr)
implicit none
integer, intent(in) :: arr(:)
!$omp declare simd linear(ref(arr))
! No error expected - REF modifier allows assumed-shape arrays
end subroutine