PR 108846 regression

Jonathan Wakely jwakely@redhat.com
Mon Apr 3 20:06:39 GMT 2023


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?

>
> 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