1! { dg-do compile }
2
3program associate1
4  type dl
5    integer :: i
6  end type
7  type dt
8    integer :: i
9    real :: a(3, 3)
10    type(dl) :: c(3, 3)
11  end type
12  integer :: v, i, j
13  real :: a(3, 3)
14  type(dt) :: b(3)
15  i = 1
16  j = 2
17  associate(k => v, l => a(i, j), m => a(i, :))
18  associate(n => b(j)%c(:, :)%i, o => a, p => b)
19!$omp parallel shared (l)	! { dg-error "ASSOCIATE name" }
20!$omp end parallel
21!$omp parallel firstprivate (m)	! { dg-error "ASSOCIATE name" }
22!$omp end parallel
23!$omp parallel reduction (+: k)	! { dg-error "ASSOCIATE name" }
24!$omp end parallel
25!$omp parallel do firstprivate (k)	! { dg-error "ASSOCIATE name" }
26  do i = 1, 10
27  end do
28!$omp parallel do lastprivate (n)	! { dg-error "ASSOCIATE name" }
29  do i = 1, 10
30  end do
31!$omp parallel do private (o)	! { dg-error "ASSOCIATE name" }
32  do i = 1, 10
33  end do
34!$omp parallel do shared (p)	! { dg-error "ASSOCIATE name" }
35  do i = 1, 10
36  end do
37!$omp task private (k)		! { dg-error "ASSOCIATE name" }
38!$omp end task
39!$omp task shared (l)		! { dg-error "ASSOCIATE name" }
40!$omp end task
41!$omp task firstprivate (m)	! { dg-error "ASSOCIATE name" }
42!$omp end task
43!$omp do private (l)		! { dg-error "ASSOCIATE name" }
44  do i = 1, 10
45  end do
46!$omp do reduction (*: k)	! { dg-error "ASSOCIATE name" }
47  do i = 1, 10
48  end do
49!$omp sections private(o)	! { dg-error "ASSOCIATE name" }
50!$omp section
51!$omp section
52!$omp end sections
53!$omp parallel sections firstprivate(p)	! { dg-error "ASSOCIATE name" }
54!$omp section
55!$omp section
56!$omp endparallelsections
57!$omp parallelsections lastprivate(m)	! { dg-error "ASSOCIATE name" }
58!$omp section
59!$omp section
60!$omp endparallelsections
61!$omp sections reduction(+:k)	! { dg-error "ASSOCIATE name" }
62!$omp section
63!$omp section
64!$omp end sections
65!$omp simd private (l)		! { dg-error "ASSOCIATE name" }
66  do i = 1, 10
67  end do
68  k = 1
69!$omp simd lastprivate (m)	! { dg-error "ASSOCIATE name" }
70  do i = 1, 10
71  end do
72  k = 1
73!$omp simd reduction (+: k)	! { dg-error "ASSOCIATE name" }
74  do i = 1, 10
75  end do
76  k = 1
77!$omp simd linear (k : 2)	! { dg-error "ASSOCIATE name" }
78  do i = 1, 10
79    k = k + 2
80  end do
81  end associate
82  end associate
83end program
84