Hi! On 2020-05-19T17:42:22+0200, I wrote: > On 2019-12-17T22:02:27-0800, Julian Brown wrote: >> --- a/libgomp/oacc-mem.c >> +++ b/libgomp/oacc-mem.c > >> @@ -571,14 +570,16 @@ present_create_copy (unsigned f, void *h, size_t s, int async) >> >> goacc_aq aq = get_goacc_asyncqueue (async); >> >> - tgt = gomp_map_vars_async (acc_dev, aq, mapnum, &hostaddrs, NULL, &s, >> - &kinds, true, GOMP_MAP_VARS_OPENACC); >> - n = tgt->list[0].key; >> - assert (n->refcount == 1); >> - assert (n->dynamic_refcount == 0); >> - n->dynamic_refcount++; >> + gomp_map_vars_async (acc_dev, aq, mapnum, &hostaddrs, NULL, &s, &kinds, >> + true, GOMP_MAP_VARS_OPENACC_ENTER_DATA); >> >> - d = tgt->to_free; >> + gomp_mutex_lock (&acc_dev->lock); >> + n = lookup_host (acc_dev, h, s); >> + assert (n != NULL); >> + assert (n->tgt_offset == 0); >> + assert ((uintptr_t) h == n->host_start); >> + d = (void *) n->tgt->tgt_start; >> + gomp_mutex_unlock (&acc_dev->lock); >> } > > [...], is there a reason that you changed this code to look up > 'n = lookup_host ([...])'? This is the case that 'gomp_map_vars' enters > a new mapping, so by construction, 'n = tgt->list[0].key' must hold? I > tested the following: [...], and don't see any regressions. You've included something similar (even slightly better!) in a bigger other patch that you've sent, so I've now combined/split that out, and pushed "[OpenACC] Use 'tgt' returned from 'gomp_map_vars'" to master branch in commit f233418ccf6a16eb3bf53018852c5f8926780143, and releases/gcc-10 branch in commit c44c9858962ab8045d57d531a83b430dd7be8d5a, see attached. Grüße Thomas ----------------- Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter