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:
parent
cc3f11f5f5
commit
83d1d065df
2 changed files with 12 additions and 1 deletions
|
@ -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'.
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue