1*3323a4bdSKiran Chandramohan! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp 2*3323a4bdSKiran Chandramohan! OpenMP Version 5.1 3*3323a4bdSKiran Chandramohan! Check OpenMP construct validity for the following directives: 4*3323a4bdSKiran Chandramohan! 2.21.2 Threadprivate Directive 5*3323a4bdSKiran Chandramohan 6*3323a4bdSKiran Chandramohanprogram threadprivate02 7*3323a4bdSKiran Chandramohan integer :: arr1(10) 8*3323a4bdSKiran Chandramohan common /blk1/ a1 9*3323a4bdSKiran Chandramohan real, save :: eq_a, eq_b, eq_c, eq_d 10*3323a4bdSKiran Chandramohan 11*3323a4bdSKiran Chandramohan !$omp threadprivate(arr1) 12*3323a4bdSKiran Chandramohan 13*3323a4bdSKiran Chandramohan !$omp threadprivate(/blk1/) 14*3323a4bdSKiran Chandramohan 15*3323a4bdSKiran Chandramohan !$omp threadprivate(blk1) 16*3323a4bdSKiran Chandramohan 17*3323a4bdSKiran Chandramohan !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block 18*3323a4bdSKiran Chandramohan !$omp threadprivate(a1) 19*3323a4bdSKiran Chandramohan 20*3323a4bdSKiran Chandramohan equivalence(eq_a, eq_b) 21*3323a4bdSKiran Chandramohan !ERROR: A variable in a THREADPRIVATE directive cannot appear in an EQUIVALENCE statement 22*3323a4bdSKiran Chandramohan !$omp threadprivate(eq_a) 23*3323a4bdSKiran Chandramohan 24*3323a4bdSKiran Chandramohan !ERROR: A variable in a THREADPRIVATE directive cannot appear in an EQUIVALENCE statement 25*3323a4bdSKiran Chandramohan !$omp threadprivate(eq_c) 26*3323a4bdSKiran Chandramohan equivalence(eq_c, eq_d) 27*3323a4bdSKiran Chandramohan 28*3323a4bdSKiran Chandramohancontains 29*3323a4bdSKiran Chandramohan subroutine func() 30*3323a4bdSKiran Chandramohan integer :: arr2(10) 31*3323a4bdSKiran Chandramohan integer, save :: arr3(10) 32*3323a4bdSKiran Chandramohan common /blk2/ a2 33*3323a4bdSKiran Chandramohan common /blk3/ a3 34*3323a4bdSKiran Chandramohan save /blk3/ 35*3323a4bdSKiran Chandramohan 36*3323a4bdSKiran Chandramohan !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 37*3323a4bdSKiran Chandramohan !$omp threadprivate(arr2) 38*3323a4bdSKiran Chandramohan 39*3323a4bdSKiran Chandramohan !$omp threadprivate(arr3) 40*3323a4bdSKiran Chandramohan 41*3323a4bdSKiran Chandramohan !$omp threadprivate(/blk2/) 42*3323a4bdSKiran Chandramohan 43*3323a4bdSKiran Chandramohan !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block 44*3323a4bdSKiran Chandramohan !$omp threadprivate(a2) 45*3323a4bdSKiran Chandramohan 46*3323a4bdSKiran Chandramohan !$omp threadprivate(/blk3/) 47*3323a4bdSKiran Chandramohan 48*3323a4bdSKiran Chandramohan !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block 49*3323a4bdSKiran Chandramohan !$omp threadprivate(a3) 50*3323a4bdSKiran Chandramohan end 51*3323a4bdSKiran Chandramohanend 52*3323a4bdSKiran Chandramohan 53*3323a4bdSKiran Chandramohanmodule mod4 54*3323a4bdSKiran Chandramohan integer :: arr4(10) 55*3323a4bdSKiran Chandramohan common /blk4/ a4 56*3323a4bdSKiran Chandramohan 57*3323a4bdSKiran Chandramohan !$omp threadprivate(arr4) 58*3323a4bdSKiran Chandramohan 59*3323a4bdSKiran Chandramohan !$omp threadprivate(/blk4/) 60*3323a4bdSKiran Chandramohan 61*3323a4bdSKiran Chandramohan !$omp threadprivate(blk4) 62*3323a4bdSKiran Chandramohan 63*3323a4bdSKiran Chandramohan !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block 64*3323a4bdSKiran Chandramohan !$omp threadprivate(a4) 65*3323a4bdSKiran Chandramohanend 66*3323a4bdSKiran Chandramohan 67*3323a4bdSKiran Chandramohansubroutine func5() 68*3323a4bdSKiran Chandramohan integer :: arr5(10) 69*3323a4bdSKiran Chandramohan common /blk5/ a5 70*3323a4bdSKiran Chandramohan 71*3323a4bdSKiran Chandramohan !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 72*3323a4bdSKiran Chandramohan !$omp threadprivate(arr5) 73*3323a4bdSKiran Chandramohan 74*3323a4bdSKiran Chandramohan !$omp threadprivate(/blk5/) 75*3323a4bdSKiran Chandramohan 76*3323a4bdSKiran Chandramohan !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 77*3323a4bdSKiran Chandramohan !$omp threadprivate(blk5) 78*3323a4bdSKiran Chandramohan 79*3323a4bdSKiran Chandramohan !ERROR: A variable in a THREADPRIVATE directive cannot be an element of a common block 80*3323a4bdSKiran Chandramohan !$omp threadprivate(a5) 81*3323a4bdSKiran Chandramohanend 82