PR 108846 regression

François Dumont frs.dumont@gmail.com
Mon Apr 3 19:59:50 GMT 2023


After a full rebuild and run of testsuite based on master I have this 
regression:

FAIL: 23_containers/vector/bool/allocator/copy.cc (test for excess errors)
Excess errors:
/home/fdumont/dev/gcc/build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:437: 
warning: 'void* __builtin_memmove(void*, const void*, long unsigned 
int)' writing between 9 and 9223372036854775807 bytes into a region of 
size 8 overflows the destination [-Wstringop-overflow=]

It comes from the change related to PR 108846, revision 
822a11a1e642e0abe92a996e7033a5066905a447

The compiler seems to have enough info to find out that destination 
memory area is 8 bytes large but not enough to see that _Num is 1 and so 
never going to call the __builtin_memmove. Maybe a compiler bug.

I'm working on a patch to restore previous code when src and dst pointer 
types are the same.

But I won't be able to continue my work on it before Wednesday so I 
prefer to let you know just in case you would like to fix it before that 
and maybe differently.

François




More information about the Libstdc++ mailing list