* tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / routine-1.c
blob2a36b3b1fac6b1b7661b33d7dafeceb11902534e
1 // { dg-additional-options "-fno-exceptions" }
3 // Defaults, if not "#include"d from ../libgomp.oacc-c++/routine-1-*.C.
4 #ifndef TEMPLATE
5 # define TEMPLATE
6 # define TYPE int
7 # define RETURN_1 TYPE
8 # define RETURN_2
9 #endif
11 #include <stdlib.h>
13 #pragma acc routine
14 TEMPLATE
15 RETURN_1 fact(TYPE n) RETURN_2
17 if (n == 0 || n == 1)
18 return 1;
19 else
20 return n * fact (n - 1);
23 int main()
25 int *s, *g, *w, *v, *gw, *gv, *wv, *gwv, i, n = 10;
27 s = (int *) malloc (sizeof (int) * n);
28 g = (int *) malloc (sizeof (int) * n);
29 w = (int *) malloc (sizeof (int) * n);
30 v = (int *) malloc (sizeof (int) * n);
31 gw = (int *) malloc (sizeof (int) * n);
32 gv = (int *) malloc (sizeof (int) * n);
33 wv = (int *) malloc (sizeof (int) * n);
34 gwv = (int *) malloc (sizeof (int) * n);
36 #pragma acc parallel loop async copyout(s[0:n]) seq
37 for (i = 0; i < n; i++)
38 s[i] = fact (i);
40 #pragma acc parallel loop async copyout(g[0:n]) gang
41 for (i = 0; i < n; i++)
42 g[i] = fact (i);
44 #pragma acc parallel loop async copyout(w[0:n]) worker
45 for (i = 0; i < n; i++)
46 w[i] = fact (i);
48 #pragma acc parallel loop async copyout(v[0:n]) vector
49 for (i = 0; i < n; i++)
50 v[i] = fact (i);
52 #pragma acc parallel loop async copyout(gw[0:n]) gang worker
53 for (i = 0; i < n; i++)
54 gw[i] = fact (i);
56 #pragma acc parallel loop async copyout(gv[0:n]) gang vector
57 for (i = 0; i < n; i++)
58 gv[i] = fact (i);
60 #pragma acc parallel loop async copyout(wv[0:n]) worker vector
61 for (i = 0; i < n; i++)
62 wv[i] = fact (i);
64 #pragma acc parallel loop async copyout(gwv[0:n]) gang worker vector
65 for (i = 0; i < n; i++)
66 gwv[i] = fact (i);
68 #pragma acc wait
70 for (i = 0; i < n; i++)
71 if (s[i] != fact (i))
72 abort ();
73 for (i = 0; i < n; i++)
74 if (g[i] != s[i])
75 abort ();
76 for (i = 0; i < n; i++)
77 if (w[i] != s[i])
78 abort ();
79 for (i = 0; i < n; i++)
80 if (v[i] != s[i])
81 abort ();
82 for (i = 0; i < n; i++)
83 if (gw[i] != s[i])
84 abort ();
85 for (i = 0; i < n; i++)
86 if (gv[i] != s[i])
87 abort ();
88 for (i = 0; i < n; i++)
89 if (wv[i] != s[i])
90 abort ();
91 for (i = 0; i < n; i++)
92 if (gwv[i] != s[i])
93 abort ();
95 return 0;