1subroutine foo (p) 2 implicit none 3 logical :: p(:) 4 integer a, b, c, d, e, f, g, h; 5 integer :: i 6 a = -1; b = -1; c = -1; d = -1; e = -1; f = -1; g = -1; h = -1 7 !$omp teams 8 !$omp distribute lastprivate (conditional: a) ! { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } 9 do i = 1, 32 10 if (p(i)) & 11 a = i 12 end do 13 !$omp distribute simd lastprivate (conditional: b) ! { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } 14 do i = 1, 32 15 if (p(i)) & 16 b = i 17 end do 18 !$omp distribute parallel do lastprivate (conditional: c) ! { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } 19 do i = 1, 32 20 if (p(i)) & 21 c = i 22 end do 23 !$omp distribute parallel do simd lastprivate (conditional: d) ! { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } 24 do i = 1, 32 25 if (p(i)) & 26 d = i 27 end do 28 !$omp end teams 29 30 !$omp teams distribute parallel do lastprivate (conditional: e) ! { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } 31 do i = 1, 32 32 if (p(i)) & 33 e = i 34 end do 35 36 !$omp parallel 37 !$omp master 38 !$omp taskloop lastprivate (conditional: f) ! { dg-error "conditional 'lastprivate' clause on 'taskloop' construct" } 39 do i = 1, 32 40 if (p(i)) & 41 f = i 42 end do 43! !$omp master taskloop simd lastprivate (conditional: g) ! { dg!error "conditional 'lastprivate' clause on 'taskloop' construct" } 44! do i = 1, 32 45! if (p(i)) & 46! g = i 47! end do 48 !$omp end master 49 !$omp end parallel 50 51! !$omp parallel master taskloop simd lastprivate (conditional: h) ! { dg!error "conditional 'lastprivate' clause on 'taskloop' construct" } 52! do i = 1, 32 53! if (p(i)) & 54! h = i 55! end do 56! !$omp end parallel master taskloop simd 57end subroutine 58 59!struct S { int a, b; }; 60 61subroutine bar (p) 62 implicit none 63 logical :: p(:) 64 type s_t 65 integer :: a, b 66 end type s_t 67 type(s_t) s, t 68 integer i 69 s = s_t(-1, -1) 70 t = s_t( 1, 2) 71 !$omp parallel do lastprivate (conditional: s) ! { dg-error "non-scalar variable 's' in conditional 'lastprivate' clause" } 72 do i = 1, 32 73 if (p(i)) then 74 block 75 type(s_t) u 76 u = t 77 u%b = i 78 s = u 79 end block 80 end if 81 end do 82end subroutine 83