Lower zeroing array assignment to memset for allocatable arrays.
[official-gcc.git] / gcc / testsuite / c-c++-common / gomp / target-implicit-map-2.c
blob222272df5b1ed7a79142bf6ed6ca8f92cc442877
1 /* { dg-do compile } */
2 /* { dg-additional-options "-fdump-tree-gimple" } */
3 #include <stdlib.h>
5 #define N 10
7 struct S
9 int a, b;
10 int *ptr;
11 int c, d;
14 int
15 main (void)
17 struct S a;
18 a.ptr = (int *) malloc (sizeof (int) * N);
20 for (int i = 0; i < N; i++)
21 a.ptr[i] = 0;
23 #pragma omp target enter data map(to: a.ptr, a.ptr[:N])
25 #pragma omp target
26 for (int i = 0; i < N; i++)
27 a.ptr[i] += 1;
29 #pragma omp target update from(a.ptr[:N])
31 for (int i = 0; i < N; i++)
32 if (a.ptr[i] != 1)
33 abort ();
35 #pragma omp target map(a.ptr[:N])
36 for (int i = 0; i < N; i++)
37 a.ptr[i] += 1;
39 #pragma omp target update from(a.ptr[:N])
41 for (int i = 0; i < N; i++)
42 if (a.ptr[i] != 2)
43 abort ();
45 #pragma omp target exit data map(from:a.ptr, a.ptr[:N])
47 return 0;
50 /* { dg-final { scan-tree-dump {#pragma omp target num_teams.* map\(tofrom:a \[len: [0-9]+\]\[implicit\]\)} "gimple" } } */
52 /* { dg-final { scan-tree-dump {#pragma omp target num_teams.* map\(struct:a \[len: 1\]\) map\(alloc:a\.ptr \[len: [0-9]+\]\) map\(tofrom:\*_[0-9]+ \[len: [0-9]+\]\) map\(attach:a\.ptr \[bias: 0\]\)} "gimple" } } */
53 /* { dg-final { scan-tree-dump-not {map\(struct:a \[len: 1\]\) map\(alloc:a\.ptr \[len: 0\]\)} "gimple" } } */