Set num_threads to 50 on 32-bit hppa in two libgomp loop tests
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / pr92984-1.c
blob319d6ccfd35f5322bd199e52ced531618d72c90d
1 /* Verify that 'acc_delete' etc. with zero size is a no-op. */
3 #include <assert.h>
4 #include <stdlib.h>
5 #include <openacc.h>
8 #define UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
11 static void
12 verify_mapped_unchanged (unsigned char *a, size_t N)
14 assert (acc_is_present (a, N));
16 for (size_t i = 0; i < N; ++i)
17 assert (a[i] == (unsigned char) i);
20 int
21 main (int argc, char **argv)
23 const size_t N = 256;
25 unsigned char *a = (unsigned char *) malloc (N);
26 assert (a);
28 for (size_t i = 0; i < N; ++i)
29 a[i] = 51;
31 void *a_d = acc_copyin (a, N);
32 assert (a_d);
34 for (size_t i = 0; i < N; ++i)
35 a[i] = i;
37 int async = 0;
39 const size_t size = 0;
41 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
42 #pragma acc exit data copyout (a[0:size])
43 verify_mapped_unchanged (a, N);
44 #endif
45 acc_copyout (a, size);
46 verify_mapped_unchanged (a, N);
47 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
48 #pragma acc exit data copyout (a[0:size]) async (async++)
49 verify_mapped_unchanged (a, N);
50 #endif
51 acc_copyout_async (a, size, async++);
52 verify_mapped_unchanged (a, N);
53 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
54 #pragma acc exit data copyout (a[0:size]) finalize
55 verify_mapped_unchanged (a, N);
56 #endif
57 acc_copyout_finalize (a, size);
58 verify_mapped_unchanged (a, N);
59 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
60 #pragma acc exit data copyout (a[0:size]) finalize async (async++)
61 verify_mapped_unchanged (a, N);
62 #endif
63 acc_copyout_finalize_async (a, size, async++);
64 verify_mapped_unchanged (a, N);
66 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
67 #pragma acc exit data delete (a[0:size])
68 verify_mapped_unchanged (a, N);
69 #endif
70 acc_delete (a, size);
71 verify_mapped_unchanged (a, N);
72 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
73 #pragma acc exit data delete (a[0:size]) async (async++)
74 verify_mapped_unchanged (a, N);
75 #endif
76 acc_delete_async (a, size, async++);
77 verify_mapped_unchanged (a, N);
78 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
79 #pragma acc exit data delete (a[0:size]) finalize
80 verify_mapped_unchanged (a, N);
81 #endif
82 acc_delete_finalize (a, size);
83 verify_mapped_unchanged (a, N);
84 #ifndef UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
85 #pragma acc exit data delete (a[0:size]) finalize async (async++)
86 verify_mapped_unchanged (a, N);
87 #endif
88 acc_delete_finalize_async (a, size, async++);
89 verify_mapped_unchanged (a, N);
91 acc_wait_all ();
93 acc_delete (a, N);
94 #if !ACC_MEM_SHARED
95 assert (!acc_is_present (a, N));
96 #endif
97 free (a);
99 return 0;