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