Assert in 'libgomp/target.c:gomp_unmap_vars_internal' that we're not unmapping 'tgt' while it's still in use

libgomp/
	* target.c (gomp_unmap_vars_internal): Add a safeguard to
	'gomp_remove_var'.

From-SVN: r279534
This commit is contained in:
Thomas Schwinge 2019-12-18 18:01:33 +01:00 committed by Thomas Schwinge
parent cc3f11f5f5
commit 83d1d065df
2 changed files with 12 additions and 1 deletions

View file

@ -1,5 +1,8 @@
2019-12-18 Thomas Schwinge <thomas@codesourcery.com>
* target.c (gomp_unmap_vars_internal): Add a safeguard to
'gomp_remove_var'.
* target.c (gomp_to_device_kind_p): Handle 'GOMP_MAP_FORCE_FROM'
like 'GOMP_MAP_FROM'.

View file

@ -1225,7 +1225,15 @@ gomp_unmap_vars_internal (struct target_mem_desc *tgt, bool do_copyfrom,
+ tgt->list[i].offset),
tgt->list[i].length);
if (do_unmap)
gomp_remove_var (devicep, k);
{
struct target_mem_desc *k_tgt = k->tgt;
bool is_tgt_unmapped = gomp_remove_var (devicep, k);
/* It would be bad if TGT got unmapped while we're still iterating
over its LIST_COUNT, and also expect to use it in the following
code. */
assert (!is_tgt_unmapped
|| k_tgt != tgt);
}
}
if (aq)