]>
Commit | Line | Data |
---|---|---|
8067caa8 | 1 | /* { dg-do compile } */ |
54bac0ce | 2 | /* { dg-options "-fopenmp -std=c23" } */ |
8067caa8 JJ |
3 | |
4 | void foo1 (); | |
5 | ||
6 | void | |
7 | foo () | |
8 | { | |
9 | [[omp::decl (declare variant (foo1) match (construct={parallel,for}))]] | |
10 | extern void foo2 (); | |
11 | [[omp::sequence (directive (parallel), directive (for))]] | |
12 | for (int i = 0; i < 5; i++) | |
13 | foo2 (); | |
14 | [[omp::decl (declare simd simdlen(4) linear(l) aligned(p:4) uniform(p) inbranch), | |
15 | omp::directive (declare simd simdlen(8) notinbranch)]] | |
16 | extern int foo3 (int l, int *p); | |
17 | [[omp::directive (declare simd simdlen(4) linear(l) aligned(p:4) uniform(p) inbranch), | |
18 | omp::decl (declare simd simdlen(8) notinbranch)]] | |
19 | extern int foo4 (int l, int *p); | |
20 | [[omp::decl (declare simd simdlen(4) linear(l) aligned(p:4) uniform(p) inbranch), | |
21 | omp::decl (declare simd simdlen(8) notinbranch)]] | |
22 | extern int foo5 (int l, int *p); | |
23 | } | |
24 | ||
25 | void bar1 (); | |
26 | ||
27 | void | |
28 | bar () | |
29 | { | |
30 | [[omp :: decl (declare variant (bar1), match (construct={parallel,for}))]] | |
31 | extern void bar2 (); | |
32 | [[omp::sequence (directive (parallel), directive (for))]] | |
33 | for (int i = 0; i < 5; i++) | |
34 | bar2 (); | |
35 | [[omp::decl (declare simd, simdlen(4), linear(l), aligned(p:4),uniform(p),inbranch), | |
36 | omp::directive (declare simd simdlen(8) notinbranch)]] | |
37 | extern int bar3 (int l, int *p); | |
38 | [[omp::directive (declare simd,simdlen(4),linear(l),aligned(p:4),uniform(p),inbranch), | |
39 | omp::decl (declare simd, simdlen(8), notinbranch)]] | |
40 | extern int bar4 (int l, int *p); | |
41 | [[omp::decl (declare simd, simdlen(4), linear(l), aligned(p:4), uniform(p), inbranch), | |
42 | omp::decl (declare simd, simdlen(8), notinbranch)]] | |
43 | extern int bar5 (int l, int *p); | |
44 | } | |
45 | ||
46 | struct S { int s; }; | |
47 | ||
48 | [[omp::decl (threadprivate)]] int t1, t2; | |
49 | int x1, t3 [[omp::decl (threadprivate)]], x2, t4 [[omp::decl (threadprivate)]] [5]; | |
50 | [[maybe_unused, omp::decl (threadprivate)]] int t5, t6; | |
51 | [[omp::decl (threadprivate)]] struct S t7, t8; | |
52 | [[omp::decl (declare target enter device_type (host))]] int d1, d2, d3 (int, int), d4; | |
53 | int x3, d5 [[omp::decl (declare target, enter, device_type (any))]], d6 [[omp::decl (declare target link)]], x4; | |
54 | int d7 [[omp::decl (declare target)]]; | |
55 | [[omp::decl (declare target), omp::decl (declare target)]] int d8, d9; | |
56 | ||
57 | void | |
58 | baz () | |
59 | { | |
60 | [[omp::decl (threadprivate)]] static int t1, t2; | |
61 | static int x1, t3 [[omp::decl (threadprivate)]], x2, t4 [[omp::decl (threadprivate)]] [5]; | |
62 | [[maybe_unused, omp::decl (threadprivate)]] extern int t5, t6; | |
63 | [[omp::decl (declare target enter)]] extern int d1, d2, d3 (int, int), d4; | |
64 | static int x3, d5 [[omp::decl (declare target, enter, device_type (any))]], d6 [[omp::decl (declare target link)]], x4; | |
65 | ++t1; ++t2; | |
66 | ++t3; ++t4[2]; | |
67 | ++t5; ++t6; | |
68 | ++d1; | |
69 | } |