On Thu, Feb 09, 2023 at 10:23:53AM +0100, Tobias Burnus wrote:
> libgomp: Fix reverse-offload for GOMP_MAP_TO_PSET
> 
> libgomp/
>       * target.c (gomp_target_rev): Dereference ptr
>       to get device address.
>       * libgomp.fortran/reverse-offload-5.f90: Add test
>       for unallocated allocatable.
> 
> --- a/libgomp/target.c
> +++ b/libgomp/target.c
> @@ -3579,8 +3579,14 @@ gomp_target_rev (uint64_t fn_ptr, uint64_t mapnum, 
> uint64_t devaddrs_ptr,
>                     }
>                   int k;
>                   n2 = NULL;
> -                 cdata[i].present = true;
> +                 /* Dereference devaddrs[j] to get the device addr.  */
> +                 assert (devaddrs[j]-sizes[j] == cdata[i].devaddr);

Formatting, there should be spaces around - on both sides.

> +                 devaddrs[j] = *(uint64_t *) (uintptr_t) (devaddrs[i]
> +                                                          + sizes[j]);
> +                 cdata[j].present = true;
>                   cdata[j].devaddr = devaddrs[j];
> +                 if (devaddrs[j] == 0)
> +                   continue;
>                   k = gomp_map_cdata_lookup (cdata, devaddrs, kinds, sizes, j,
>                                              devaddrs[j],
>                                              devaddrs[j] + sizeof (void*),

Otherwise LGTM.

        Jakub

Reply via email to