1 /* Verify that 'acc_delete' etc. with zero size is a no-op. */
8 #define UNHANDLED_GOMP_MAP_ZERO_LEN_ARRAY_SECTION
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
);
21 main (int argc
, char **argv
)
25 unsigned char *a
= (unsigned char *) malloc (N
);
28 for (size_t i
= 0; i
< N
; ++i
)
31 void *a_d
= acc_copyin (a
, N
);
34 for (size_t i
= 0; i
< N
; ++i
)
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
88 acc_delete_finalize_async (a
, size
, async
++);
89 verify_mapped_unchanged (a
, N
);
95 assert (!acc_is_present (a
, N
));