Hi! OpenMP 5.0 is changing a couple of APIs, so that for pointer arguments where the pointed array is not modified we use const void * instead of void *.
Committed to gomp-5_0-branch. 2017-06-12 Jakub Jelinek <ja...@redhat.com> * omp.h.in (omp_target_is_present, omp_target_disassociate_ptr): Change first argument from void * to const void *. (omp_target_memcpy, omp_target_memcpy_rect): Change second argument from void * to const void *. (omp_target_associate_ptr): Change first and second arguments from void * to const void *. * target.c (omp_target_is_present, omp_target_disassociate_ptr): Change ptr argument from void * to const void *. (omp_target_memcpy): Change src argument from void * to const void *. (omp_target_memcpy_rect): Likewise. (omp_target_memcpy_rect_worker): Likewise. Use const char * casts instead of char * where needed. (omp_target_associate_ptr): Change host_ptr and device_ptr arguments from void * to const void *. --- libgomp/omp.h.in.jj 2017-05-13 20:12:43.000000000 +0200 +++ libgomp/omp.h.in 2017-06-12 10:21:38.342724889 +0200 @@ -144,19 +144,20 @@ extern int omp_get_max_task_priority (vo extern void *omp_target_alloc (__SIZE_TYPE__, int) __GOMP_NOTHROW; extern void omp_target_free (void *, int) __GOMP_NOTHROW; -extern int omp_target_is_present (void *, int) __GOMP_NOTHROW; -extern int omp_target_memcpy (void *, void *, __SIZE_TYPE__, __SIZE_TYPE__, - __SIZE_TYPE__, int, int) __GOMP_NOTHROW; -extern int omp_target_memcpy_rect (void *, void *, __SIZE_TYPE__, int, +extern int omp_target_is_present (const void *, int) __GOMP_NOTHROW; +extern int omp_target_memcpy (void *, const void *, __SIZE_TYPE__, + __SIZE_TYPE__, __SIZE_TYPE__, int, int) + __GOMP_NOTHROW; +extern int omp_target_memcpy_rect (void *, const void *, __SIZE_TYPE__, int, const __SIZE_TYPE__ *, const __SIZE_TYPE__ *, const __SIZE_TYPE__ *, const __SIZE_TYPE__ *, const __SIZE_TYPE__ *, int, int) __GOMP_NOTHROW; -extern int omp_target_associate_ptr (void *, void *, __SIZE_TYPE__, +extern int omp_target_associate_ptr (const void *, const void *, __SIZE_TYPE__, __SIZE_TYPE__, int) __GOMP_NOTHROW; -extern int omp_target_disassociate_ptr (void *, int) __GOMP_NOTHROW; +extern int omp_target_disassociate_ptr (const void *, int) __GOMP_NOTHROW; #ifdef __cplusplus } --- libgomp/target.c.jj 2017-05-13 20:12:43.000000000 +0200 +++ libgomp/target.c 2017-06-12 10:25:41.051924583 +0200 @@ -2007,7 +2007,7 @@ omp_target_free (void *device_ptr, int d } int -omp_target_is_present (void *ptr, int device_num) +omp_target_is_present (const void *ptr, int device_num) { if (ptr == NULL) return 1; @@ -2039,8 +2039,9 @@ omp_target_is_present (void *ptr, int de } int -omp_target_memcpy (void *dst, void *src, size_t length, size_t dst_offset, - size_t src_offset, int dst_device_num, int src_device_num) +omp_target_memcpy (void *dst, const void *src, size_t length, + size_t dst_offset, size_t src_offset, int dst_device_num, + int src_device_num) { struct gomp_device_descr *dst_devicep = NULL, *src_devicep = NULL; bool ret; @@ -2107,7 +2108,7 @@ omp_target_memcpy (void *dst, void *src, } static int -omp_target_memcpy_rect_worker (void *dst, void *src, size_t element_size, +omp_target_memcpy_rect_worker (void *dst, const void *src, size_t element_size, int num_dims, const size_t *volume, const size_t *dst_offsets, const size_t *src_offsets, @@ -2129,21 +2130,25 @@ omp_target_memcpy_rect_worker (void *dst return EINVAL; if (dst_devicep == NULL && src_devicep == NULL) { - memcpy ((char *) dst + dst_off, (char *) src + src_off, length); + memcpy ((char *) dst + dst_off, (const char *) src + src_off, + length); ret = 1; } else if (src_devicep == NULL) ret = dst_devicep->host2dev_func (dst_devicep->target_id, (char *) dst + dst_off, - (char *) src + src_off, length); + (const char *) src + src_off, + length); else if (dst_devicep == NULL) ret = src_devicep->dev2host_func (src_devicep->target_id, (char *) dst + dst_off, - (char *) src + src_off, length); + (const char *) src + src_off, + length); else if (src_devicep == dst_devicep) ret = src_devicep->dev2dev_func (src_devicep->target_id, (char *) dst + dst_off, - (char *) src + src_off, length); + (const char *) src + src_off, + length); else ret = 0; return ret ? 0 : EINVAL; @@ -2164,7 +2169,7 @@ omp_target_memcpy_rect_worker (void *dst for (j = 0; j < volume[0]; j++) { ret = omp_target_memcpy_rect_worker ((char *) dst + dst_off, - (char *) src + src_off, + (const char *) src + src_off, element_size, num_dims - 1, volume + 1, dst_offsets + 1, src_offsets + 1, dst_dimensions + 1, @@ -2179,7 +2184,7 @@ omp_target_memcpy_rect_worker (void *dst } int -omp_target_memcpy_rect (void *dst, void *src, size_t element_size, +omp_target_memcpy_rect (void *dst, const void *src, size_t element_size, int num_dims, const size_t *volume, const size_t *dst_offsets, const size_t *src_offsets, @@ -2238,8 +2243,8 @@ omp_target_memcpy_rect (void *dst, void } int -omp_target_associate_ptr (void *host_ptr, void *device_ptr, size_t size, - size_t device_offset, int device_num) +omp_target_associate_ptr (const void *host_ptr, const void *device_ptr, + size_t size, size_t device_offset, int device_num) { if (device_num == GOMP_DEVICE_HOST_FALLBACK) return EINVAL; @@ -2300,7 +2305,7 @@ omp_target_associate_ptr (void *host_ptr } int -omp_target_disassociate_ptr (void *ptr, int device_num) +omp_target_disassociate_ptr (const void *ptr, int device_num) { if (device_num == GOMP_DEVICE_HOST_FALLBACK) return EINVAL; Jakub