aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2020-05-14 15:49:52 +0200
committerThomas Schwinge <thomas@codesourcery.com>2020-06-04 18:56:37 +0200
commitf233418ccf6a16eb3bf53018852c5f8926780143 (patch)
treed01a177f5507320bf35e770fabf1a25246630ece
parent8d7794c0a2aa6696ab1a91ef209e8a9fe2df56ac (diff)
downloadgcc-f233418ccf6a16eb3bf53018852c5f8926780143.zip
gcc-f233418ccf6a16eb3bf53018852c5f8926780143.tar.gz
gcc-f233418ccf6a16eb3bf53018852c5f8926780143.tar.bz2
[OpenACC] Use 'tgt' returned from 'gomp_map_vars'
libgomp/ * oacc-mem.c (goacc_enter_datum): Use 'tgt' returned from 'gomp_map_vars'. (acc_map_data): Clean up accordingly. Co-Authored-By: Julian Brown <julian@codesourcery.com>
-rw-r--r--libgomp/oacc-mem.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/libgomp/oacc-mem.c b/libgomp/oacc-mem.c
index 6713846..e2fb651 100644
--- a/libgomp/oacc-mem.c
+++ b/libgomp/oacc-mem.c
@@ -355,7 +355,6 @@ acc_is_present (void *h, size_t s)
void
acc_map_data (void *h, void *d, size_t s)
{
- struct target_mem_desc *tgt = NULL;
size_t mapnum = 1;
void *hostaddrs = h;
void *devaddrs = d;
@@ -402,10 +401,13 @@ acc_map_data (void *h, void *d, size_t s)
gomp_mutex_unlock (&acc_dev->lock);
- tgt = gomp_map_vars (acc_dev, mapnum, &hostaddrs, &devaddrs, &sizes,
- &kinds, true, GOMP_MAP_VARS_ENTER_DATA);
+ struct target_mem_desc *tgt
+ = gomp_map_vars (acc_dev, mapnum, &hostaddrs, &devaddrs, &sizes,
+ &kinds, true, GOMP_MAP_VARS_ENTER_DATA);
assert (tgt);
+ assert (tgt->list_count == 1);
splay_tree_key n = tgt->list[0].key;
+ assert (n);
assert (n->refcount == 1);
assert (n->virtual_refcount == 0);
/* Special reference counting behavior. */
@@ -555,16 +557,17 @@ goacc_enter_datum (void **hostaddrs, size_t *sizes, void *kinds, int async)
goacc_aq aq = get_goacc_asyncqueue (async);
- gomp_map_vars_async (acc_dev, aq, mapnum, hostaddrs, NULL, sizes, kinds,
- true, GOMP_MAP_VARS_OPENACC_ENTER_DATA);
+ struct target_mem_desc *tgt
+ = gomp_map_vars_async (acc_dev, aq, mapnum, hostaddrs, NULL, sizes,
+ kinds, true, GOMP_MAP_VARS_OPENACC_ENTER_DATA);
+ assert (tgt);
+ assert (tgt->list_count == 1);
+ n = tgt->list[0].key;
+ assert (n);
+ assert (n->refcount == 1);
+ assert (n->virtual_refcount == 0);
- gomp_mutex_lock (&acc_dev->lock);
- n = lookup_host (acc_dev, hostaddrs[0], sizes[0]);
- assert (n != NULL);
- assert (n->tgt_offset == 0);
- assert ((uintptr_t) hostaddrs[0] == n->host_start);
- d = (void *) n->tgt->tgt_start;
- gomp_mutex_unlock (&acc_dev->lock);
+ d = (void *) tgt->tgt_start;
}
if (profiling_p)