blob: 073615625b7ff1731c7541926bf29fc3372fe819 [file] [log] [blame]
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <stdio.h>
#define N 32
typedef struct {
int x2[10][N];
} x1type;
typedef struct {
x1type x1[10];
} p2type;
typedef struct {
p2type *p2;
} p1type;
typedef struct {
p1type *p1;
} x0type;
typedef struct {
x0type x0[10];
} p0type;
int main(int argc, char *argv[])
{
p0type *p0;
int k1 = 0, k2 = 0, k3 = 0, n = N;
p0 = (p0type *) malloc (sizeof *p0);
p0->x0[0].p1 = (p1type *) malloc (sizeof *p0->x0[0].p1);
p0->x0[0].p1->p2 = (p2type *) malloc (sizeof *p0->x0[0].p1->p2);
memset (p0->x0[0].p1->p2, 0, sizeof *p0->x0[0].p1->p2);
#pragma omp target map(tofrom: p0->x0[k1].p1->p2[k2].x1[k3].x2[4][0:n]) \
map(to: p0->x0[k1].p1, p0->x0[k1].p1->p2) \
map(to: p0->x0[k1].p1[0])
{
for (int i = 0; i < n; i++)
p0->x0[k1].p1->p2[k2].x1[k3].x2[4][i] = i;
}
for (int i = 0; i < n; i++)
assert (i == p0->x0[k1].p1->p2[k2].x1[k3].x2[4][i]);
return 0;
}