1 /* PR middle-end/99928 */
2 /* { dg-do compile } */
3 /* { dg-options "-fopenmp -fdump-tree-gimple" } */
4
5 int j00a, j00b, j01a, j01b, j02a, j02b, j03a, j03b, j04a, j04b;
6 int j06a, j06b, j07a, j07b, j08a, j08b, j09a, j09b, j10a, j10b;
7
8 void
foo(void)9 foo (void)
10 {
11 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j00a\\)" "gimple" } } */
12 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j00a\\)" "gimple" } } *//* FIXME: This should be on for instead. */
13 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j00a\\)" "gimple" } } *//* FIXME. */
14 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j00a\\)" "gimple" } } */
15 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } */
16 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
17 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } *//* FIXME. */
18 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } */
19 #pragma omp distribute parallel for simd collapse(2) default(none)
20 for (j00a = 0; j00a < 64; j00a++)
21 for (j00b = 0; j00b < 4; j00b++)
22 ;
23 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j01a\\)" "gimple" } } */
24 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j01a\\)" "gimple" } } */
25 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j01b\\)" "gimple" } } */
26 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j01b\\)" "gimple" } } */
27 #pragma omp distribute simd collapse(2)
28 for (j01a = 0; j01a < 64; j01a++)
29 for (j01b = 0; j01b < 4; j01b++)
30 ;
31 }
32
33 void
bar(void)34 bar (void)
35 {
36 int j05a, j05b, j11a, j11b, j12a, j12b;
37 /* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j02a\\)" "gimple" } } */
38 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j02a\\)" "gimple" } } */
39 /* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j02b\\)" "gimple" } } */
40 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j02b\\)" "gimple" } } */
41 #pragma omp for simd collapse(2)
42 for (j02a = 0; j02a < 64; j02a++)
43 for (j02b = 0; j02b < 4; j02b++)
44 ;
45 /* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(j03a\\)" "gimple" } } */
46 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j03a\\)" "gimple" } } *//* NOTE: This is implementation detail. */
47 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j03a\\)" "gimple" } } */
48 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j03a\\)" "gimple" } } */
49 /* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(j03b\\)" "gimple" } } */
50 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j03b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
51 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j03b\\)" "gimple" } } */
52 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j03b\\)" "gimple" } } */
53 #pragma omp master taskloop simd collapse(2) default(none)
54 for (j03a = 0; j03a < 64; j03a++)
55 for (j03b = 0; j03b < 4; j03b++)
56 ;
57 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j04a\\)" "gimple" } } *//* FIXME: This should be on for instead. */
58 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j04a\\)" "gimple" } } *//* FIXME. */
59 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j04a\\)" "gimple" } } */
60 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
61 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } *//* FIXME. */
62 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } */
63 #pragma omp parallel for simd collapse(2) default(none)
64 for (j04a = 0; j04a < 64; j04a++)
65 for (j04b = 0; j04b < 4; j04b++)
66 ;
67 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j05a\\)" "gimple" } } */
68 /* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(j05a\\)" "gimple" } } */
69 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j05a\\)" "gimple" } } *//* NOTE: This is implementation detail. */
70 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j05a\\)" "gimple" } } */
71 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j05a\\)" "gimple" } } */
72 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j05b\\)" "gimple" } } */
73 /* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(j05b\\)" "gimple" } } */
74 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j05b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
75 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j05b\\)" "gimple" } } */
76 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j05b\\)" "gimple" } } */
77 #pragma omp parallel master taskloop simd collapse(2) default(none)
78 for (j05a = 0; j05a < 64; j05a++)
79 for (j05b = 0; j05b < 4; j05b++)
80 ;
81 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j06a" "gimple" } } */
82 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j06a\\)" "gimple" } } */
83 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j06a\\)" "gimple" } } *//* FIXME: This should be on for instead. */
84 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j06a\\)" "gimple" } } *//* FIXME. */
85 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j06a\\)" "gimple" } } */
86 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j06b" "gimple" } } */
87 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j06b\\)" "gimple" } } */
88 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
89 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } *//* FIXME. */
90 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } */
91 #pragma omp target parallel for simd collapse(2) default(none) defaultmap(none)
92 for (j06a = 0; j06a < 64; j06a++)
93 for (j06b = 0; j06b < 4; j06b++)
94 ;
95 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j07a" "gimple" } } */
96 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j07a\\)" "gimple" } } */
97 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j07a\\)" "gimple" } } */
98 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j07b" "gimple" } } */
99 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j07b\\)" "gimple" } } */
100 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j07b\\)" "gimple" } } */
101 #pragma omp target simd collapse(2) defaultmap(none)
102 for (j07a = 0; j07a < 64; j07a++)
103 for (j07b = 0; j07b < 4; j07b++)
104 ;
105 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j08a" "gimple" } } */
106 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j08a\\)" "gimple" } } */
107 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j08a\\)" "gimple" } } */
108 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j08a\\)" "gimple" } } */
109 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j08a\\)" "gimple" } } *//* FIXME: This should be on for instead. */
110 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j08a\\)" "gimple" } } *//* FIXME. */
111 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j08a\\)" "gimple" } } */
112 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j08b" "gimple" } } */
113 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j08b\\)" "gimple" } } */
114 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j08b\\)" "gimple" } } */
115 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } */
116 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
117 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } *//* FIXME. */
118 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } */
119 #pragma omp target teams distribute parallel for simd collapse(2) default(none) defaultmap(none)
120 for (j08a = 0; j08a < 64; j08a++)
121 for (j08b = 0; j08b < 4; j08b++)
122 ;
123 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j09a" "gimple" } } */
124 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j09a\\)" "gimple" } } */
125 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j09a\\)" "gimple" } } */
126 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j09a\\)" "gimple" } } */
127 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j09a\\)" "gimple" } } */
128 /* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j09b" "gimple" } } */
129 /* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j09b\\)" "gimple" } } */
130 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j09b\\)" "gimple" } } */
131 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j09b\\)" "gimple" } } */
132 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j09b\\)" "gimple" } } */
133 #pragma omp target teams distribute simd collapse(2) default(none) defaultmap(none)
134 for (j09a = 0; j09a < 64; j09a++)
135 for (j09b = 0; j09b < 4; j09b++)
136 ;
137 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j10a\\)" "gimple" } } *//* NOTE: This is implementation detail. */
138 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j10a\\)" "gimple" } } */
139 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j10a\\)" "gimple" } } */
140 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j10b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
141 /* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j10b\\)" "gimple" } } */
142 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j10b\\)" "gimple" } } */
143 #pragma omp taskloop simd collapse(2) default(none)
144 for (j10a = 0; j10a < 64; j10a++)
145 for (j10b = 0; j10b < 4; j10b++)
146 ;
147 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j11a\\)" "gimple" } } */
148 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j11a\\)" "gimple" } } */
149 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j11a\\)" "gimple" } } *//* FIXME: This should be on for instead. */
150 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j11a\\)" "gimple" } } *//* FIXME. */
151 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j11a\\)" "gimple" } } */
152 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j11b\\)" "gimple" } } */
153 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } */
154 /* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
155 /* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } *//* FIXME. */
156 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } */
157 #pragma omp teams distribute parallel for simd collapse(2) default(none)
158 for (j11a = 0; j11a < 64; j11a++)
159 for (j11b = 0; j11b < 4; j11b++)
160 ;
161 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j12a\\)" "gimple" } } */
162 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j12a\\)" "gimple" } } */
163 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j12a\\)" "gimple" } } */
164 /* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j12b\\)" "gimple" } } */
165 /* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j12b\\)" "gimple" } } */
166 /* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j12b\\)" "gimple" } } */
167 #pragma omp teams distribute simd collapse(2) default(none)
168 for (j12a = 0; j12a < 64; j12a++)
169 for (j12b = 0; j12b < 4; j12b++)
170 ;
171 }
172