https://gcc.gnu.org/g:37b61808f7e6ce007b1070154864c177f02cd1d4
commit r16-9716-g37b61808f7e6ce007b1070154864c177f02cd1d4 Author: Jonathan Wakely <[email protected]> Date: Tue Sep 29 15:12:51 2026 +0100 libstdc++: Replace invalid memset usage in testsuite The __gnu_test::MallocInfo struct has a non-trivial default constructor which causes -Wclass-memaccess warnings when it is cleared using memset. Use assignment from value-initialized objects instead of memset. For consistency, clear rusage structs the same way. libstdc++-v3/ChangeLog: * testsuite/util/testsuite_performance.h (resource_counter): Do not use memset to clear non-trivial objects. Reviewed-by: Tomasz KamiĆski <[email protected]> (cherry picked from commit 166f136e186619e84ab64427bf106383982a96ab) Diff: --- libstdc++-v3/testsuite/util/testsuite_performance.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/testsuite/util/testsuite_performance.h b/libstdc++-v3/testsuite/util/testsuite_performance.h index 524a1a577858..ff85d77eb45d 100644 --- a/libstdc++-v3/testsuite/util/testsuite_performance.h +++ b/libstdc++-v3/testsuite/util/testsuite_performance.h @@ -157,17 +157,17 @@ namespace __gnu_test void clear() throw() { - memset(&rusage_begin, 0, sizeof(rusage_begin)); - memset(&rusage_end, 0, sizeof(rusage_end)); - memset(&allocation_begin, 0, sizeof(allocation_begin)); - memset(&allocation_end, 0, sizeof(allocation_end)); + rusage_begin = rusage(); + rusage_end = rusage(); + allocation_begin = MallocInfo(); + allocation_end = MallocInfo(); } void start() { if (getrusage(who, &rusage_begin) != 0 ) - memset(&rusage_begin, 0, sizeof(rusage_begin)); + rusage_begin = rusage(); void* p __attribute__((unused)) = malloc(0); // Needed for some implementations. allocation_begin = malloc_info(); } @@ -176,7 +176,7 @@ namespace __gnu_test stop() { if (getrusage(who, &rusage_end) != 0 ) - memset(&rusage_end, 0, sizeof(rusage_end)); + rusage_end = rusage(); allocation_end = malloc_info(); }
