Structure element mapping for OpenMP 5.0 v3
This is a merge of patch: https://gcc.gnu.org/pipermail/gcc-patches/2021-May/571515.html v2 patch already merged at18dd4f283e
, this commit only consists of the v2-to-v3 diff part in above URL. This v3 adds a small bug fix, where the initialization of the refcount didn't handle all cases, fixed by using gomp_refcount_increment here (more consistent). libgomp/ChangeLog: * target.c (gomp_map_vars_internal): For new key entries, set k->refcount to 0, remove initialization of k->structelem_refcount, use gomp_increment_refcount to consistently handle all increment cases. (manual cherry pick ofe7073707ba
)
This commit is contained in:
parent
091860deb6
commit
6b88ea4bb7
|
@ -1559,7 +1559,7 @@ gomp_map_vars_internal (struct gomp_device_descr *devicep,
|
|||
size_t align = (size_t) 1 << (kind >> rshift);
|
||||
tgt->list[i].key = k;
|
||||
k->tgt = tgt;
|
||||
k->refcount = 1;
|
||||
k->refcount = 0;
|
||||
k->dynamic_refcount = 0;
|
||||
if (field_tgt_clear != FIELD_TGT_EMPTY)
|
||||
{
|
||||
|
@ -1572,7 +1572,6 @@ gomp_map_vars_internal (struct gomp_device_descr *devicep,
|
|||
{
|
||||
/* Set to first structure element of sequence. */
|
||||
k->refcount |= REFCOUNT_STRUCTELEM_FLAG_FIRST;
|
||||
k->structelem_refcount = 1;
|
||||
field_tgt_structelem_first = k;
|
||||
}
|
||||
else
|
||||
|
@ -1596,6 +1595,11 @@ gomp_map_vars_internal (struct gomp_device_descr *devicep,
|
|||
k->tgt_offset = tgt_size;
|
||||
tgt_size += k->host_end - k->host_start;
|
||||
}
|
||||
/* First increment, from 0 to 1. gomp_increment_refcount
|
||||
encapsulates the different increment cases, so use this
|
||||
instead of directly setting 1 during initialization. */
|
||||
gomp_increment_refcount (k, refcount_set);
|
||||
|
||||
tgt->list[i].copy_from = GOMP_MAP_COPY_FROM_P (kind & typemask);
|
||||
tgt->list[i].always_copy_from
|
||||
= GOMP_MAP_ALWAYS_FROM_P (kind & typemask);
|
||||
|
|
Loading…
Reference in New Issue