PR 108846 regression

François Dumont frs.dumont@gmail.com
Wed Apr 5 17:03:07 GMT 2023


On 03/04/2023 22:06, Jonathan Wakely wrote:
> On Mon, 3 Apr 2023 at 21:00, François Dumont via Libstdc++
> <libstdc++@gcc.gnu.org> wrote:
>> 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.
> Yes, it's a compiler bug:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109353
>
>> I'm working on a patch to restore previous code when src and dst pointer
>> types are the same.
> How will that avoid the PR 108846 problem of overwriting tail padding?

Indeed, test cases have shown me that copy was called with pointers on 
the same type. No way to find out that the fix is not necessary in this 
case.

We just need to wait for the compiler to be fixed then.

Bests



More information about the Libstdc++ mailing list