61 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp2! OpenMP Version 4.53! 2.15.4.2 copyprivate Clause4! All list items that appear in the copyprivate clause must be either5! threadprivate or private in the enclosing context.6 7program omp_copyprivate8 integer :: a(10), b(10)9 real, dimension(:), allocatable :: c10 real, dimension(:), pointer :: d11 integer, save :: k12 13 !$omp threadprivate(k)14 15 k = 1016 a = 1017 b = a + 1018 19 !$omp parallel20 !$omp single21 a = a + k22 !$omp end single copyprivate(k)23 !$omp single24 b = b - a25 !ERROR: COPYPRIVATE variable 'b' is not PRIVATE or THREADPRIVATE in outer context26 !$omp end single copyprivate(b)27 !$omp end parallel28 29 !$omp parallel sections private(a)30 !$omp section31 !$omp parallel32 !$omp single33 a = a * b + k34 !ERROR: COPYPRIVATE variable 'a' is not PRIVATE or THREADPRIVATE in outer context35 !$omp end single copyprivate(a)36 !$omp end parallel37 !$omp end parallel sections38 39 !The use of FIRSTPRIVATE with COPYPRIVATE is allowed40 !$omp parallel firstprivate(a)41 !$omp single42 a = a + k43 !$omp end single copyprivate(a)44 !$omp end parallel45 46 print *, a, b47 48 !$omp task49 !$omp parallel private(c, d)50 allocate(c(5))51 allocate(d(10))52 !$omp single53 c = 2254 d = 3355 !Check that 'c' and 'd' inherit PRIVATE DSA from the enclosing PARALLEL56 !and no error occurs.57 !$omp end single copyprivate(c, d)58 !$omp end parallel59 !$omp end task60end program omp_copyprivate61