Skip various cmp-mem-const tests on lp64 hppa*-*-*
[official-gcc.git] / libgomp / testsuite / libgomp.c-c++-common / ind-base-4.c
blob91549ac4d245af7a6c7cb2a94c884b35596baf6a
1 // { dg-do run }
2 // { dg-options "-fopenmp" }
4 #include <assert.h>
5 #include <stdlib.h>
7 typedef struct
9 int x[10];
10 } S;
12 typedef struct
14 S ***s;
15 } T;
17 typedef struct
19 T **t;
20 } U;
22 void
23 foo (void)
25 U *u = (U *) malloc (sizeof (U));
26 T *real_t = (T *) malloc (sizeof (T));
27 S *real_s = (S *) malloc (sizeof (S));
28 T **t_pp = &real_t;
29 S **s_pp = &real_s;
30 S ***s_ppp = &s_pp;
31 u->t = t_pp;
32 (*u->t)->s = s_ppp;
33 for (int i = 0; i < 10; i++)
34 (**((*u->t)->s))->x[i] = 0;
35 #pragma omp target map(u->t, *u->t, (*u->t)->s, *(*u->t)->s, **(*u->t)->s, \
36 (**(*u->t)->s)->x[0:10])
37 for (int i = 0; i < 10; i++)
38 (**((*u->t)->s))->x[i] = i * 3;
39 for (int i = 0; i < 10; i++)
40 assert ((**((*u->t)->s))->x[i] == i * 3);
41 free (real_s);
42 free (real_t);
43 free (u);
46 int main (int argc, char *argv[])
48 foo ();
49 return 0;