[gcc(refs/users/marxin/heads/slp-function-v2)] [OpenACC] Don't open-code 'gomp_remove_var' in 'acc_unmap_data'

Martin Liska marxin@gcc.gnu.org
Thu Jun 11 09:53:04 GMT 2020


https://gcc.gnu.org/g:2112d3242f413979931e371423dcead9d19440e7

commit 2112d3242f413979931e371423dcead9d19440e7
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Fri May 29 14:21:03 2020 +0200

    [OpenACC] Don't open-code 'gomp_remove_var' in 'acc_unmap_data'
    
            libgomp/
            * oacc-mem.c (acc_unmap_data): Don't open-code 'gomp_remove_var'.
    
    Co-Authored-By: Julian Brown <julian@codesourcery.com>

Diff:
---
 libgomp/oacc-mem.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libgomp/oacc-mem.c b/libgomp/oacc-mem.c
index 6314f5d8b68..8e8c7c3093d 100644
--- a/libgomp/oacc-mem.c
+++ b/libgomp/oacc-mem.c
@@ -468,8 +468,6 @@ acc_unmap_data (void *h)
 		  (void *) h, (int) host_size);
     }
 
-  splay_tree_remove (&acc_dev->mem_map, n);
-
   struct target_mem_desc *tgt = n->tgt;
 
   if (tgt->refcount == REFCOUNT_INFINITY)
@@ -482,8 +480,12 @@ acc_unmap_data (void *h)
      'acc_map_data'.  */
   assert (tgt->refcount == 1);
 
-  free (tgt->array);
-  free (tgt);
+  /* Nullifying these fields prevents 'gomp_unmap_tgt' via 'gomp_remove_var'
+     from freeing the target memory.  */
+  tgt->tgt_end = 0;
+  tgt->to_free = NULL;
+
+  gomp_remove_var (acc_dev, n);
 
   gomp_mutex_unlock (&acc_dev->lock);


More information about the Gcc-cvs mailing list