! 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 program threadprivate02 integer :: arr1(10) common /blk1/ a1 real, save :: eq_a, eq_b, eq_c, eq_d !$omp threadprivate(arr1) !$omp threadprivate(/blk1/) !$omp threadprivate(blk1) !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block !$omp threadprivate(a1) equivalence(eq_a, eq_b) !ERROR: A variable in a THREADPRIVATE directive cannot appear in an EQUIVALENCE statement !$omp threadprivate(eq_a) !ERROR: A variable in a THREADPRIVATE directive cannot appear in an EQUIVALENCE statement !$omp threadprivate(eq_c) equivalence(eq_c, eq_d) contains subroutine func() integer :: arr2(10) integer, save :: arr3(10) common /blk2/ a2 common /blk3/ a3 save /blk3/ !ERROR: A variable that appears in a THREADPRIVATE directive must be declared in the scope of a module or have the SAVE attribute, either explicitly or implicitly !$omp threadprivate(arr2) !$omp threadprivate(arr3) !$omp threadprivate(/blk2/) !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block !$omp threadprivate(a2) !$omp threadprivate(/blk3/) !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block !$omp threadprivate(a3) end end module mod4 integer :: arr4(10) common /blk4/ a4 !$omp threadprivate(arr4) !$omp threadprivate(/blk4/) !$omp threadprivate(blk4) !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block !$omp threadprivate(a4) end subroutine func5() integer :: arr5(10) common /blk5/ a5 !ERROR: A variable that appears in a THREADPRIVATE directive must be declared in the scope of a module or have the SAVE attribute, either explicitly or implicitly !$omp threadprivate(arr5) !$omp threadprivate(/blk5/) !ERROR: A variable that appears in a THREADPRIVATE directive must be declared in the scope of a module or have the SAVE attribute, either explicitly or implicitly !$omp threadprivate(blk5) !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block !$omp threadprivate(a5) end