Set num_threads to 50 on 32-bit hppa in two libgomp loop tests
[official-gcc.git] / libgomp / testsuite / libgomp.c-c++-common / taskloop-3.c
blob9650bf1c2cecf8c3531c17cfe43f5b09181ea07d
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3 /* { dg-additional-options "-std=c99" { target c } } */
5 int g;
6 int a[1024];
8 __attribute__((noinline, noclone)) int
9 f1 (int x)
11 #pragma omp taskloop firstprivate (x) lastprivate (x)
12 for (int i = 0; i < 64; i++)
14 if (x != 74)
15 __builtin_abort ();
16 if (i == 63)
17 x = i + 4;
19 return x;
22 __attribute__((noinline, noclone)) void
23 f2 (void)
25 #pragma omp taskloop firstprivate (g) lastprivate (g) nogroup
26 for (int i = 0; i < 64; i++)
28 if (g != 77)
29 __builtin_abort ();
30 if (i == 63)
31 g = i + 9;
35 __attribute__((noinline, noclone)) long long
36 f3 (long long a, long long b, long long c)
38 long long i;
39 int l;
40 #pragma omp taskloop default (none) lastprivate (i, l)
41 for (i = a; i < b; i += c)
42 l = i;
43 return l * 7 + i;
46 __attribute__((noinline, noclone)) long long
47 f4 (long long a, long long b, long long c, long long d,
48 long long e, long long f, int k)
50 long long i, j;
51 int l;
52 #pragma omp taskloop default (none) collapse(2) \
53 firstprivate (k) lastprivate (i, j, k, l)
54 for (i = a; i < b; i += e)
55 for (j = c; j < d; j += f)
57 if (k != 73)
58 __builtin_abort ();
59 if (i == 31 && j == 46)
60 k = i;
61 l = j;
63 return i + 5 * j + 11 * k + 17 * l;
66 int
67 main ()
69 #pragma omp parallel
70 #pragma omp single
72 if (f1 (74) != 63 + 4)
73 __builtin_abort ();
74 g = 77;
75 f2 ();
76 #pragma omp taskwait
77 if (g != 63 + 9)
78 __builtin_abort ();
79 if (f3 (7, 12, 2) != 11 * 7 + 13)
80 __builtin_abort ();
81 if (f4 (0, 32, 16, 48, 1, 2, 73) != 32 + 5 * 48 + 11 * 31 + 17 * 46)
82 __builtin_abort ();
84 return 0;