1 /* { dg-do compile { target { c || c++11 } } } */
2 /* { dg-additional-options "-std=c23" { target c } } */
4 extern void dummy (int);
9 [[omp::directive (tile
sizes(0))]] /* { dg-error "'sizes' argument needs positive integral constant" } */
10 for (int i
= 0; i
< 100; ++i
)
13 [[omp::directive (tile
sizes(-1))]] /* { dg-error "'sizes' argument needs positive integral constant" } */
14 for (int i
= 0; i
< 100; ++i
)
17 [[omp::directive (tile
sizes())]] /* { dg-error "expected expression before" "" { target c } } */
18 for (int i
= 0; i
< 100; ++i
) /* { dg-error "expected primary-expression before" "" { target c++ } .-1 } */
21 [[omp::directive (tile sizes
)]] /* { dg-error "expected '\\\(' before end of line" } */
22 for (int i
= 0; i
< 100; ++i
)
25 [[omp::directive (tile
sizes(1) sizes(1))]] /* { dg-error "expected end of line before 'sizes'" } */
26 for (int i
= 0; i
< 100; ++i
)
29 [[omp::directive (tile
, sizes(1), sizes(1))]] /* { dg-error "expected end of line before ','" } */
30 for (int i
= 0; i
< 100; ++i
)
33 [[omp::sequence (directive (tile
sizes(1, 2)),
34 directive (tile
sizes(1)))]] /* { dg-error "'tile' construct generates 1 loops with canonical form but 2 loops are needed" } */
35 for (int i
= 0; i
< 100; ++i
)
36 for (int j
= 0; j
< 100; ++j
)
39 [[omp::sequence (directive (tile
sizes(1)),
40 directive (unroll partia
), /* { dg-error "expected an OpenMP clause before 'partia'" } */
41 directive (tile
sizes(1)))]] /* { dg-error "generated loop of 'unroll' construct without 'partial' clause does not have canonical form" "" { target *-*-* } .-1 } */
42 for (int i
= 0; i
< 100; ++i
)
45 [[omp::sequence (directive (tile
sizes(1)),
46 directive (unroll
))]] /* { dg-error "generated loop of 'unroll' construct without 'partial' clause does not have canonical form" } */
47 for (int i
= 0; i
< 100; ++i
)
50 [[omp::sequence (directive (tile
sizes(1)),
51 directive (unroll full
))]] /* { dg-error "generated loop of 'unroll' construct without 'partial' clause does not have canonical form" } */
52 for (int i
= 0; i
< 100; ++i
)
55 [[omp::sequence (directive (tile
sizes(8,8)),
56 directive (unroll partial
), /* { dg-error "'unroll' construct with 'partial' clause generates just one loop with canonical form but 2 loops are needed" } */
57 directive (tile
sizes(1)))]]
58 for (int i
= 0; i
< 100; ++i
)
61 [[omp::sequence (directive (tile
sizes(8,8)),
62 directive (unroll partial
))]] /* { dg-error "'unroll' construct with 'partial' clause generates just one loop with canonical form but 2 loops are needed" } */
63 for (int i
= 0; i
< 100; ++i
)
66 [[omp::directive (tile
sizes(1, 2))]] /* { dg-error "non-rectangular 'tile'" } */
67 for (int i
= 0; i
< 100; ++i
)
68 for (int j
= i
; j
< 100; ++j
)
71 [[omp::directive (tile
sizes(1, 2))]] /* { dg-error "non-rectangular 'tile'" } */
72 for (int i
= 0; i
< 100; ++i
)
73 for (int j
= 2; j
< i
; ++j
)
76 [[omp::directive (tile
sizes(1, 2, 3))]]
77 for (int i
= 0; i
< 100; ++i
) /* { dg-error "not enough nested loops" } */
78 for (int j
= 0; j
< 100; ++j
)
81 [[omp::directive (tile
sizes(1, 2))]]
82 for (int i
= 0; i
< 100; ++i
) /* { dg-error "inner loops must be perfectly nested" } */
85 for (int j
= 0; j
< 100; ++j
)
89 [[omp::directive (tile
sizes(1, 2))]]
90 for (int i
= 0; i
< 100; ++i
) /* { dg-error "inner loops must be perfectly nested" } */
92 for (int j
= 0; j
< 100; ++j
)
98 [[omp::directive (tile
sizes(s
))]] /* { dg-error "'sizes' argument needs positive integral constant" "" { target { ! c++98_only } } } */
99 /* { dg-error "the value of 's' is not usable in a constant expression" "" { target { c++ && { ! c++98_only } } } .-1 } */
100 for (int i
= 0; i
< 100; ++i
)
103 [[omp::directive (tile
sizes(42.0))]] /* { dg-error "'sizes' argument needs positive integral constant" } */
104 for (int i
= 0; i
< 100; ++i
)