Hi!

On 2018-06-19T10:01:20-0700, Cesar Philippidis <ce...@codesourcery.com> wrote:
> --- a/libgomp/target.c
> +++ b/libgomp/target.c

> +attribute_hidden bool
> +gomp_remove_var (struct gomp_device_descr *devicep, splay_tree_key k)
> +{
> +  bool is_tgt_unmapped = false;
> +  splay_tree_remove (&devicep->mem_map, k);
> +  if (k->link_key)
> +    splay_tree_insert (&devicep->mem_map, (splay_tree_node) k->link_key);
> +  if (k->tgt->refcount > 1)
> +    k->tgt->refcount--;
> +  else
> +    {
> +      is_tgt_unmapped = true;
> +      gomp_unmap_tgt (k->tgt);
> +    }
> +  return is_tgt_unmapped;

This new function, can, like done here:

> @@ -1059,16 +1077,7 @@ gomp_unmap_vars (struct target_mem_desc *tgt, bool 
> do_copyfrom)
>                                     + tgt->list[i].offset),
>                           tgt->list[i].length);
>        if (do_unmap)
> -     {
> -       splay_tree_remove (&devicep->mem_map, k);
> -       if (k->link_key)
> -         splay_tree_insert (&devicep->mem_map,
> -                            (splay_tree_node) k->link_key);
> -       if (k->tgt->refcount > 1)
> -         k->tgt->refcount--;
> -       else
> -         gomp_unmap_tgt (k->tgt);
> -     }
> +     gomp_remove_var (devicep, k);
>      }

..., and here:

> @@ -1298,17 +1307,7 @@ gomp_unload_image_from_device (struct 
> gomp_device_descr *devicep,
>        else
>       {
>         splay_tree_key n = splay_tree_lookup (&devicep->mem_map, &k);
> -       splay_tree_remove (&devicep->mem_map, n);
> -       if (n->link_key)
> -         {
> -           if (n->tgt->refcount > 1)
> -             n->tgt->refcount--;
> -           else
> -             {
> -               is_tgt_unmapped = true;
> -               gomp_unmap_tgt (n->tgt);
> -             }
> -         }
> +       is_tgt_unmapped = gomp_remove_var (devicep, n);
>       }

..., also be used in 'gomp_exit_data', see attached "In
'libgomp/target.c:gomp_exit_data', remove open-coded 'gomp_remove_var'",
committed to trunk in r279118.


Grüße
 Thomas


From bbfdb255a0b5cb6e183e11026c2a482d4eeba981 Mon Sep 17 00:00:00 2001
From: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 9 Dec 2019 11:39:57 +0000
Subject: [PATCH] In 'libgomp/target.c:gomp_exit_data', remove open-coded
 'gomp_remove_var'

	libgomp/
	* target.c (gomp_exit_data): Use 'gomp_remove_var'.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@279118 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libgomp/ChangeLog |  4 ++++
 libgomp/target.c  | 11 +----------
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index a0bd25177d1..c5541bcec81 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,7 @@
+2019-12-09  Thomas Schwinge  <tho...@codesourcery.com>
+
+	* target.c (gomp_exit_data): Use 'gomp_remove_var'.
+
 2019-12-09  Tobias Burnus  <tob...@codesourcery.com>
 
 	* testsuite/libgomp.fortran/use_device_addr-3.f90: Make 'stop' codes
diff --git a/libgomp/target.c b/libgomp/target.c
index 84d6daa76ca..13f7921651f 100644
--- a/libgomp/target.c
+++ b/libgomp/target.c
@@ -2095,16 +2095,7 @@ gomp_exit_data (struct gomp_device_descr *devicep, size_t mapnum,
 					  - k->host_start),
 				cur_node.host_end - cur_node.host_start);
 	  if (k->refcount == 0)
-	    {
-	      splay_tree_remove (&devicep->mem_map, k);
-	      if (k->link_key)
-		splay_tree_insert (&devicep->mem_map,
-				   (splay_tree_node) k->link_key);
-	      if (k->tgt->refcount > 1)
-		k->tgt->refcount--;
-	      else
-		gomp_unmap_tgt (k->tgt);
-	    }
+	    gomp_remove_var (devicep, k);
 
 	  break;
 	default:
-- 
2.17.1

Attachment: signature.asc
Description: PGP signature

Reply via email to