brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 4dbb171 Raw
59 lines · plain
1// RUN: %libomptarget-compilexx-run-and-check-generic2// XFAIL: *3 4#include <cstdlib>5#include <cstdio>6#include <cassert>7 8struct S {9  int a;10  int b;11  int c;12};13 14struct T {15  S *s0;16  S *s1;17  S *s2;18};19 20int main() {21  T *v = (T *) malloc (sizeof(T));22  v->s0 = (S *) malloc (sizeof(S));23  v->s1 = (S *) malloc (sizeof(S));24  v->s2 = (S *) malloc (sizeof(S));25  v->s0->a = 10;26  v->s0->b = 10;27  v->s0->c = 10;28  v->s1->a = 20;29  v->s1->b = 20;30  v->s1->c = 20;31  v->s2->a = 30;32  v->s2->b = 30;33  v->s2->c = 30;34 35#pragma omp target map(to: v[:1]) map(tofrom: v->s1->b, v->s1->c, v->s2->b)36  {37    v->s1->b += 3;38    v->s1->c += 5;39    v->s2->b += 7;40  }41 42  printf ("%d\n", v->s0->a); // CHECK: 1043  printf ("%d\n", v->s0->b); // CHECK: 1044  printf ("%d\n", v->s0->c); // CHECK: 1045  printf ("%d\n", v->s1->a); // CHECK: 2046  printf ("%d\n", v->s1->b); // CHECK: 2347  printf ("%d\n", v->s1->c); // CHECK: 2548  printf ("%d\n", v->s2->a); // CHECK: 3049  printf ("%d\n", v->s2->b); // CHECK: 3750  printf ("%d\n", v->s2->c); // CHECK: 3051 52  free(v->s0);53  free(v->s1);54  free(v->s2);55  free(v);56 57  return 0;58}59