annotate libgomp/testsuite/libgomp.c/taskloop-3.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-options "-O2 -std=c99" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 int g;
kono
parents:
diff changeset
5 int a[1024];
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 __attribute__((noinline, noclone)) int
kono
parents:
diff changeset
8 f1 (int x)
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 #pragma omp taskloop firstprivate (x) lastprivate (x)
kono
parents:
diff changeset
11 for (int i = 0; i < 64; i++)
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 if (x != 74)
kono
parents:
diff changeset
14 __builtin_abort ();
kono
parents:
diff changeset
15 if (i == 63)
kono
parents:
diff changeset
16 x = i + 4;
kono
parents:
diff changeset
17 }
kono
parents:
diff changeset
18 return x;
kono
parents:
diff changeset
19 }
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 __attribute__((noinline, noclone)) void
kono
parents:
diff changeset
22 f2 (void)
kono
parents:
diff changeset
23 {
kono
parents:
diff changeset
24 #pragma omp taskloop firstprivate (g) lastprivate (g) nogroup
kono
parents:
diff changeset
25 for (int i = 0; i < 64; i++)
kono
parents:
diff changeset
26 {
kono
parents:
diff changeset
27 if (g != 77)
kono
parents:
diff changeset
28 __builtin_abort ();
kono
parents:
diff changeset
29 if (i == 63)
kono
parents:
diff changeset
30 g = i + 9;
kono
parents:
diff changeset
31 }
kono
parents:
diff changeset
32 }
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 __attribute__((noinline, noclone)) long long
kono
parents:
diff changeset
35 f3 (long long a, long long b, long long c)
kono
parents:
diff changeset
36 {
kono
parents:
diff changeset
37 long long i;
kono
parents:
diff changeset
38 int l;
kono
parents:
diff changeset
39 #pragma omp taskloop default (none) lastprivate (i, l)
kono
parents:
diff changeset
40 for (i = a; i < b; i += c)
kono
parents:
diff changeset
41 l = i;
kono
parents:
diff changeset
42 return l * 7 + i;
kono
parents:
diff changeset
43 }
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 __attribute__((noinline, noclone)) long long
kono
parents:
diff changeset
46 f4 (long long a, long long b, long long c, long long d,
kono
parents:
diff changeset
47 long long e, long long f, int k)
kono
parents:
diff changeset
48 {
kono
parents:
diff changeset
49 long long i, j;
kono
parents:
diff changeset
50 int l;
kono
parents:
diff changeset
51 #pragma omp taskloop default (none) collapse(2) \
kono
parents:
diff changeset
52 firstprivate (k) lastprivate (i, j, k, l)
kono
parents:
diff changeset
53 for (i = a; i < b; i += e)
kono
parents:
diff changeset
54 for (j = c; j < d; j += f)
kono
parents:
diff changeset
55 {
kono
parents:
diff changeset
56 if (k != 73)
kono
parents:
diff changeset
57 __builtin_abort ();
kono
parents:
diff changeset
58 if (i == 31 && j == 46)
kono
parents:
diff changeset
59 k = i;
kono
parents:
diff changeset
60 l = j;
kono
parents:
diff changeset
61 }
kono
parents:
diff changeset
62 return i + 5 * j + 11 * k + 17 * l;
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 int
kono
parents:
diff changeset
66 main ()
kono
parents:
diff changeset
67 {
kono
parents:
diff changeset
68 #pragma omp parallel
kono
parents:
diff changeset
69 #pragma omp single
kono
parents:
diff changeset
70 {
kono
parents:
diff changeset
71 if (f1 (74) != 63 + 4)
kono
parents:
diff changeset
72 __builtin_abort ();
kono
parents:
diff changeset
73 g = 77;
kono
parents:
diff changeset
74 f2 ();
kono
parents:
diff changeset
75 #pragma omp taskwait
kono
parents:
diff changeset
76 if (g != 63 + 9)
kono
parents:
diff changeset
77 __builtin_abort ();
kono
parents:
diff changeset
78 if (f3 (7, 12, 2) != 11 * 7 + 13)
kono
parents:
diff changeset
79 __builtin_abort ();
kono
parents:
diff changeset
80 if (f4 (0, 32, 16, 48, 1, 2, 73) != 32 + 5 * 48 + 11 * 31 + 17 * 46)
kono
parents:
diff changeset
81 __builtin_abort ();
kono
parents:
diff changeset
82 }
kono
parents:
diff changeset
83 return 0;
kono
parents:
diff changeset
84 }