From: Thomas Schwinge Date: Wed, 18 Dec 2019 17:01:33 +0000 (+0100) Subject: Assert in 'libgomp/target.c:gomp_unmap_vars_internal' that we're not unmapping 'tgt... X-Git-Tag: misc/cutover-git~358 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83d1d065df01e4f21afd763c17f1d48e0a1161aa;p=thirdparty%2Fgcc.git 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 --- diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 472519c7e3e1..541a2c7610c3 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,5 +1,8 @@ 2019-12-18 Thomas Schwinge + * 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'. diff --git a/libgomp/target.c b/libgomp/target.c index a3cdb34bd511..67cd80a3c35e 100644 --- a/libgomp/target.c +++ b/libgomp/target.c @@ -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)