Hi! In context of reviewing Julian's "OpenACC reference count overhaul", I'm generally reviewing (also known as: trying to understand) the libgomp OpenMP 'target' "refcount"ing , and I noticed something strange (?):
On 2015-07-30T22:44:33+0300, Ilya Verbin <iver...@gmail.com> wrote: > make check-target-libgomp passed. ok? (This eventually got into trunk in r228777 "Merge from gomp-4_1-branch to trunk".) > libgomp/ > * target.c > (gomp_offload_image_to_device): Set tgt's refcount to infinity. > --- a/libgomp/target.c > +++ b/libgomp/target.c > @@ -794,7 +807,7 @@ gomp_offload_image_to_device (struct gomp_device_descr > *devicep, > /* Insert host-target address mapping into splay tree. */ > struct target_mem_desc *tgt = gomp_malloc (sizeof (*tgt)); > tgt->array = gomp_malloc ((num_funcs + num_vars) * sizeof (*tgt->array)); > - tgt->refcount = 1; > + tgt->refcount = REFCOUNT_INFINITY; > tgt->tgt_start = 0; > tgt->tgt_end = 0; > tgt->to_free = NULL; I had understood that 'REFCOUNT_INFINITY' is only meant to be used for the 'refcount' in 'struct splay_tree_key_s', but here it's used for the 'refcount' in 'struct target_mem_desc'. However, all the other 'struct target_mem_desc' 'refcount' handling doesn't seem to take care of the special 'REFCOUNT_INFINITY' value. This might not be an actually observable bug (I have not verified, have not tried to construct a test case), but should this be changed anyway? (Back to 'tgt->refcount = 1'; not yet tested?) Grüße Thomas
signature.asc
Description: PGP signature