]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fix up 'libgomp.c++/target-std__[...]-concurrent-usm.C' dynamic memory allocation
authorThomas Schwinge <tschwinge@baylibre.com>
Fri, 30 May 2025 09:37:46 +0000 (11:37 +0200)
committerThomas Schwinge <tschwinge@baylibre.com>
Wed, 14 Jan 2026 15:00:56 +0000 (16:00 +0100)
commite9e76f76073dbe6293c3366210b19bf4699bc646
treedbd270407333c1b0d5bb4dbd10b3bd7e24be40b1
parent3dc9eedd95ad88129e55bf2218b7f60f4f95b2c2
Fix up 'libgomp.c++/target-std__[...]-concurrent-usm.C' dynamic memory allocation

OpenMP/USM implies memory accessible from host as well as device, but doesn't
imply that allocation vs. deallocation may be done in the opposite context.
For most of the test cases, (by construction) we're not allocating memory
during device execution, so have nothing to clean up.  (..., but still document
these semantics.)  But for a few, we have to clean up:
'libgomp.c++/target-std__map-concurrent-usm.C',
'libgomp.c++/target-std__multimap-concurrent-usm.C',
'libgomp.c++/target-std__multiset-concurrent-usm.C',
'libgomp.c++/target-std__set-concurrent-usm.C'.

For 'libgomp.c++/target-std__multimap-concurrent-usm.C' (only), this issue
already got addressed in commit 90f2ab4b6e1463d8cb89c70585e19987a58f3de1
"libgomp.c++/target-std__multimap-concurrent.C: Fix USM memory freeing".
However, instead of invoking the 'clear' function (which doesn't generally
guarantee to release dynamically allocated memory; for example, see PR123582
"C++ unordered associative container: dynamic memory management"), we properly
restore the respective object into pristine state.

libgomp/
* testsuite/libgomp.c++/target-std__array-concurrent-usm.C:
'#define OMP_USM'.
* testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__list-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__span-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__map-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__set-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__vector-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__deque-concurrent-usm.C:
Likewise.
* testsuite/libgomp.c++/target-std__array-concurrent.C: Comment.
* testsuite/libgomp.c++/target-std__bitset-concurrent.C: Likewise.
* testsuite/libgomp.c++/target-std__deque-concurrent.C: Likewise.
* testsuite/libgomp.c++/target-std__forward_list-concurrent.C:
Likewise.
* testsuite/libgomp.c++/target-std__list-concurrent.C: Likewise.
* testsuite/libgomp.c++/target-std__span-concurrent.C: Likewise.
* testsuite/libgomp.c++/target-std__valarray-concurrent.C:
Likewise.
* testsuite/libgomp.c++/target-std__vector-concurrent.C: Likewise.
* testsuite/libgomp.c++/target-std__map-concurrent.C [OMP_USM]:
Fix up dynamic memory allocation.
* testsuite/libgomp.c++/target-std__multimap-concurrent.C
[OMP_USM]: Likewise.
* testsuite/libgomp.c++/target-std__multiset-concurrent.C
[OMP_USM]: Likewise.
* testsuite/libgomp.c++/target-std__set-concurrent.C [OMP_USM]:
Likewise.
24 files changed:
libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C
libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C