Files
clang-p2996/flang/test/Semantics/OpenMP/threadprivate01.f90
Michael Klemm fb5fd2d82f [flang][OpenMP] Compile proper omp_lib.mod from the openmp/src/include sources (#80874)
This PR changes the build system to use use the sources for the module
`omp_lib` and the `omp_lib.h` include file from the `openmp` runtime
project and not from a separate copy of these files. This will greatly
reduce potential for inconsistencies when adding features to the OpenMP
runtime implementation.

When the OpenMP subproject is not configured, this PR also disables the
corresponding LIT tests with a "REQUIRES" directive at the beginning of
the OpenMP test files.

---------

Co-authored-by: Valentin Clement (バレンタイン クレメン) <clementval@gmail.com>
2024-03-20 13:47:26 +01:00

54 lines
1.8 KiB
Fortran

! REQUIRES: openmp_runtime
! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
! OpenMP Version 5.1
! Check OpenMP construct validity for the following directives:
! 2.21.2 Threadprivate Directive
module thread_private01
use omp_lib
type my_type(kind_param, len_param)
integer, KIND :: kind_param
integer, LEN :: len_param
integer :: t_i
integer :: t_arr(10)
end type my_type
type(my_type(2, 4)) :: my_var
integer :: arr(10)
integer(kind=4) :: x
character(len=32) :: w
integer, dimension(:), allocatable :: y
!$omp threadprivate(my_var)
!ERROR: A variable that is part of another variable (as an array or structure element) cannot appear on the THREADPRIVATE directive
!$omp threadprivate(my_var%t_i)
!ERROR: A variable that is part of another variable (as an array or structure element) cannot appear on the THREADPRIVATE directive
!$omp threadprivate(my_var%t_arr)
!ERROR: A type parameter inquiry cannot appear on the THREADPRIVATE directive
!$omp threadprivate(my_var%kind_param)
!ERROR: A type parameter inquiry cannot appear on the THREADPRIVATE directive
!$omp threadprivate(my_var%len_param)
!$omp threadprivate(arr)
!ERROR: A variable that is part of another variable (as an array or structure element) cannot appear on the THREADPRIVATE directive
!$omp threadprivate(arr(1))
!ERROR: A variable that is part of another variable (as an array or structure element) cannot appear on the THREADPRIVATE directive
!$omp threadprivate(arr(1:2))
!ERROR: A type parameter inquiry cannot appear on the THREADPRIVATE directive
!$omp threadprivate(x%KIND)
!ERROR: A type parameter inquiry cannot appear on the THREADPRIVATE directive
!$omp threadprivate(w%LEN)
!ERROR: A type parameter inquiry cannot appear on the THREADPRIVATE directive
!$omp threadprivate(y%KIND)
end