aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/gomp/nesting-2.f90
blob: d8014d6f151a85a9a9995cc4d5b5249c8e301516 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
subroutine foo
  integer :: i, j
  !$omp taskloop
  do i = 0, 63
      !$omp do			! { dg-error "region may not be closely nested inside of" }
      do j = 0, 9
      end do
      !$omp single		! { dg-error "region may not be closely nested inside of" }
      !$omp end single
      !$omp sections		! { dg-error "region may not be closely nested inside of" }
        !$omp section
        block
        end block
      !$omp end sections
      !$omp barrier		! { dg-error "region may not be closely nested inside of" }
      !$omp master		! { dg-error "region may not be closely nested inside of" }  -- ?
        block; end block ! otherwise not generated
      !$omp end master
      !$omp masked		! { dg-error "region may not be closely nested inside of" }  -- ?
        block; end block ! otherwise not generated
      !$omp end masked
      !$omp scope			! { dg-error "region may not be closely nested inside of" }  -- ?
        block; end block ! otherwise not generated
      !$omp end scope
      !$omp ordered		! { dg-error "region may not be closely nested inside of" }
      !$omp end ordered
      !$omp ordered threads	! { dg-error "region may not be closely nested inside of" }
      !$omp end ordered
      !$omp ordered simd threads	! { dg-error ".ordered. .simd. must be closely nested inside .simd. region" }
      !$omp end ordered
      !$omp simd
      do j = 0, 9
        !$omp ordered simd
        !$omp end ordered
      end do
      !$omp critical
        !$omp simd
        do j = 0, 9
          !$omp ordered simd
          !$omp end ordered
        end do
      !$omp end critical
  end do
  !$omp taskloop
  do i = 0, 63
    !$omp parallel
      !$omp do
      do j = 0, 9
      end do
      !$omp single
      !$omp end single
      !$omp sections
        !$omp section
        block; end block
      !$omp end sections
      !$omp barrier
      !$omp master
        block; end block ! otherwise not generated
      !$omp end master
      !$omp masked
        block; end block ! otherwise not generated
      !$omp end masked
      !$omp scope
        block; end block ! otherwise not generated
      !$omp end scope
      !$omp ordered		! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
      !$omp end ordered
      !$omp ordered threads	! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
      !$omp end ordered
      !$omp simd
      do j = 0, 9
        !$omp ordered simd
        !$omp end ordered
      end do
      !$omp critical
        !$omp simd
        do j = 0, 9
          !$omp ordered simd
          !$omp end ordered
        end do
      !$omp end critical
    !$omp end parallel
  end do
  !$omp taskloop
  do i = 0, 63
    !$omp target
      !$omp do
      do j = 0, 9
      end do
      !$omp single
      !$omp end single
      !$omp sections
        !$omp section
        block; end block
      !$omp end sections
      !$omp barrier
      !$omp master
        block; end block ! otherwise not generated
      !$omp end master
      !$omp masked
        block; end block ! otherwise not generated
      !$omp end masked
      !$omp scope
        block; end block ! otherwise not generated
      !$omp end scope
      !$omp ordered		! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
      !$omp end ordered
      !$omp ordered threads	! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
      !$omp end ordered
      !$omp simd
      do j = 0, 9
        !$omp ordered simd
        !$omp end ordered
      end do
      !$omp critical
        !$omp simd
        do j = 0, 9
          !$omp ordered simd
          !$omp end ordered
        end do
      !$omp end critical
    !$omp end target
  end do
  !$omp ordered
    !$omp ordered			! { dg-error "region may not be closely nested inside of" }
    !$omp end ordered
  !$omp end ordered
  !$omp ordered threads
    !$omp ordered			! { dg-error "region may not be closely nested inside of" }
    !$omp end ordered
  !$omp end ordered
  !$omp ordered
    !$omp ordered threads		! { dg-error "region may not be closely nested inside of" }
    !$omp end ordered
  !$omp end ordered
  !$omp ordered threads
    !$omp ordered threads		! { dg-error "region may not be closely nested inside of" }
    !$omp end ordered
  !$omp end ordered
  !$omp critical
    !$omp ordered simd		! { dg-error ".ordered. .simd. must be closely nested inside .simd. region" }
    !$omp end ordered
  !$omp end critical
  !$omp do ordered
  do i = 0, 63
    !$omp parallel
      !$omp ordered threads	! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
      !$omp end ordered
    !$omp end parallel
  end do
  !$omp do ordered
  do i = 0, 63
    !$omp parallel
      !$omp ordered		! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
      !$omp end ordered
    !$omp end parallel
  end do
  !$omp do ordered(1)
  do i = 0, 63
    !$omp parallel
      !$omp ordered depend(source)	! { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause" }
      !$omp ordered depend(sink: i - 1)	! { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause" }
    !$omp end parallel
  end do
end