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
|
extern void dummy (int);
void
test (void)
{
#pragma omp parallel for
#pragma omp tile sizes(0) /* { dg-error "'sizes' argument needs positive integral constant" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(-1) /* { dg-error "'sizes' argument needs positive integral constant" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp tile sizes(5, -42) /* { dg-error "'sizes' argument needs positive integral constant" } */
for (int i = 0; i < 100; ++i)
for (int j = 0; j < 100; ++j)
dummy (i);
#pragma omp tile sizes(0.5f) /* { dg-error "'sizes' argument needs positive integral constant" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes() /* { dg-error "expected expression before" "" { target c} } */
/* { dg-error "expected primary-expression before" "" { target c++ } .-1 } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(,) /* { dg-error "expected expression before" "" { target c } } */
/* { dg-error "expected primary-expression before" "" { target c++ } .-1 } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1,2 /* { dg-error "expected '\\\)' before end of line" "" { target c } } */
for (int i = 0; i < 100; ++i) /* { dg-error "not enough nested loops" "" { target c } } */
dummy (i); /* { dg-error "expected ',' before end of line" "" { target c++ } .-2 } */
#pragma omp parallel for
#pragma omp tile sizes /* { dg-error "expected '\\\(' before end of line" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1) sizes(1) /* { dg-error "expected end of line before 'sizes'" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1, 2)
#pragma omp tile sizes(1) /* { dg-error "'tile' construct generates 1 loops with canonical form but 2 loops are needed" } */
for (int i = 0; i < 100; ++i)
for (int j = 0; j < 100; ++j)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1)
#pragma omp unroll partia /* { dg-error "expected an OpenMP clause before 'partia'" } */
#pragma omp tile sizes(1) /* { dg-error "generated loop of 'unroll' construct without 'partial' clause does not have canonical form" "" { target *-*-* } .-1 } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1)
#pragma omp unroll /* { dg-error "generated loop of 'unroll' construct without 'partial' clause does not have canonical form" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1)
#pragma omp unroll full /* { dg-error "generated loop of 'unroll' construct without 'partial' clause does not have canonical form" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(8,8)
#pragma omp unroll partial /* { dg-error "'unroll' construct with 'partial' clause generates just one loop with canonical form but 2 loops are needed" } */
#pragma omp tile sizes(1)
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(8,8)
#pragma omp unroll partial /* { dg-error "'unroll' construct with 'partial' clause generates just one loop with canonical form but 2 loops are needed" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1, 2) /* { dg-error "non-rectangular 'tile'" "" { target c } } */
for (int i = 0; i < 100; ++i) /* { dg-error "non-rectangular 'tile'" "" { target c++ } } */
for (int j = i; j < 100; ++j)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1, 2) /* { dg-error "non-rectangular 'tile'" "" { target c } } */
for (int i = 0; i < 100; ++i) /* { dg-error "non-rectangular 'tile'" "" { target c++ } } */
for (int j = 2; j < i; ++j)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1, 2, 3)
for (int i = 0; i < 100; ++i) /* { dg-error "not enough nested loops" } */
for (int j = 0; j < 100; ++j)
dummy (i);
#pragma omp parallel for
#pragma omp tile sizes(1, 2)
for (int i = 0; i < 100; ++i) /* { dg-error "inner loops must be perfectly nested" } */
{
dummy (i);
for (int j = 0; j < 100; ++j)
dummy (j);
}
#pragma omp parallel for
#pragma omp tile sizes(1, 2)
for (int i = 0; i < 100; ++i) /* { dg-error "inner loops must be perfectly nested" } */
{
for (int j = 0; j < 100; ++j)
dummy (j);
dummy (i);
}
#pragma omp tile /* { dg-error "expected 'sizes'" } */
for (int i = 0; i < 100; ++i)
dummy (i);
#pragma omp tile sizes (1) sizes (1) /* { dg-error "expected end of line" } */
for (int i = 0; i < 100; ++i)
dummy (i);
}
|