This is a repost of the following:

https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546333.html

I made a minor edit to the ChangeLog, but the patch is otherwise
unchanged.  Including for completeness.

OK?

ChangeLog

        PR libgomp/92843

        libgomp/
        * oacc-mem.c (goacc_exit_data_internal): Don't copyout data mapped
        with acc_map_data in exit data directive.
        * testsuite/libgomp.oacc-c-c++-common/pr92843-1.c: Remove XFAIL.
---
 libgomp/oacc-mem.c                                      | 1 +
 libgomp/testsuite/libgomp.oacc-c-c++-common/pr92843-1.c | 1 -
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/libgomp/oacc-mem.c b/libgomp/oacc-mem.c
index 05998ebc6de..745cb132621 100644
--- a/libgomp/oacc-mem.c
+++ b/libgomp/oacc-mem.c
@@ -1258,6 +1258,7 @@ goacc_exit_data_internal (struct gomp_device_descr 
*acc_dev, size_t mapnum,
              }
 
            if (copyfrom
+               && n->refcount != REFCOUNT_INFINITY
                && (kind != GOMP_MAP_FROM || n->refcount == 0))
              gomp_copy_dev2host (acc_dev, aq, (void *) cur_node.host_start,
                                  (void *) (n->tgt->tgt_start + n->tgt_offset
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr92843-1.c 
b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr92843-1.c
index f16c46a37bf..db5b35b08d9 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr92843-1.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr92843-1.c
@@ -1,7 +1,6 @@
 /* Verify that 'acc_copyout' etc. is a no-op if there's still a structured
    reference count.  */
 
-/* { dg-xfail-run-if "TODO PR92843" { *-*-* } } */
 /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
 
 #include <assert.h>
-- 
2.23.0

Reply via email to