Re: [Linaro-TCWG-CI] gcc-17-570-g79e29562907b: 1 regression on aarch64

Avi Kivity via Gcc-regression <[email protected]>
Newsgroups gmane.comp.gcc.regression,gmane.linux.linaro.toolchain
Message-ID <CAF950WJBM2i4Bj4KGO7b9dhdpgzTSnQW-K4rBHmp00xypeFKMg@mail.gmail.com>
On Tue, May 19, 2026 at 11:03 AM Avi Kivity <[email protected]> wrote:

>
>
> On Tue, May 19, 2026 at 2:22 AM <[email protected]> wrote:
>
>> Dear contributor,
>>
>> Our automatic CI has detected problems related to your patch(es). Please
>> find some details below.
>>
>> In  aarch64 native, after:
>>   | commit gcc-17-570-g79e29562907b
>>   | Author: Avi Kivity <[email protected]>
>>   | Date:   Thu Feb 26 19:59:41 2026 +0200
>>   |
>>   |     libstdc++: optimize std::uninitialized_move{,_n}() to memcpy when
>> possible [PR121789]
>>   |
>>   |     std::uninitialized_move{,_n} delegates to the corresponding
>>   |     std::uninitialized_copy() variant after wrapping with a move
>>   |     iterator, but the std::uninitialized_copy() doesn't unwrap the
>>   | ... 17 lines of the commit log omitted.
>>
>> Produces 1 regression:
>>   |
>>   | regressions.sum:
>>   | Running g++:g++.dg/torture/dg-torture.exp ...
>>   | FAIL: g++.dg/torture/pr118521.C -O1  (test for excess errors)
>>
>
> I'll take a look.
>

In file included from /mnt/gcc.bin/include/c++/17.0.0/vector:67,
                 from ./gcc/testsuite/g++.dg/torture/pr118521.C:5:
In function ‘_ForwardIterator std::uninitialized_fill_n(_ForwardIterator,
_Size, const _Tp&) [with _ForwardIterator = char*; _Size = long unsigned
int; _Tp = char]’,
    inlined from ‘constexpr _ForwardIterator
std::__uninitialized_fill_n_a(_ForwardIterator, _Size, const _Tp&,
allocator<_Tp>&) [with _ForwardIterator = char*; _Size = long unsigned int;
_Tp = char; _Tp2 = char]’ at
/mnt/gcc.bin/include/c++/17.0.0/bits/stl_uninitialized.h:778:39,
    inlined from ‘constexpr void std::vector<_Tp,
_Alloc>::_M_fill_append(size_type, const value_type&) [with _Tp = char;
_Alloc = std::allocator<char>]’ at
/mnt/gcc.bin/include/c++/17.0.0/bits/vector.tcc:776:36,
    inlined from ‘constexpr void std::vector<_Tp,
_Alloc>::_M_fill_insert(iterator, size_type, const value_type&) [with _Tp =
char; _Alloc = std::allocator<char>]’ at
/mnt/gcc.bin/include/c++/17.0.0/bits/vector.tcc:668:20,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::iterator
std::vector<_Tp, _Alloc>::insert(const_iterator, size_type, const
value_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at
/mnt/gcc.bin/include/c++/17.0.0/bits/stl_vector.h:1565:16,
    inlined from ‘void foo()’ at
./gcc/testsuite/g++.dg/torture/pr118521.C:12:11:
/mnt/gcc.bin/include/c++/17.0.0/bits/stl_uninitialized.h:577:39: warning:
‘void* __builtin_memset(void*, int, long unsigned int)’ writing 2 bytes
into a region of size 0 overflows the destination [-Wstringop-overflow=]
  577 |                       __builtin_memset(__dest, (unsigned char)__x,
__n);
      |
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I think it's a victim of an existing (and very annoying) misdetection of
memory overwrites (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125187).
It's not directly related to my patch (which optimizes moving a range, not
filling it), but my patch changes the detection logic causing gcc to think
the region is of size 0 (where it should be 4).

I enhanced the test code to be a full program and verified it works with
asan.

I'm not sure how to proceed. I don't want to patch pr118521.C to disable
-Wstringop-overflow, since that's what it's testing.

Copying Richard, the original author of the test
(a2755339c6c9832467c573d956e91565943ecdc1).


>
>
>>
>> Used configuration :
>>  *CI config* tcwg_gcc_check aarch64-linux-gnu
>>  *configure and test flags:* none, autodetected on
>> aarch64-unknown-linux-gnu--disable-multilib --enable-fix-cortex-a53-835769
>> --enable-fix-cortex-a53-843419 --with-arch=armv8-a
>>
>> We track this bug report under
>> https://linaro.atlassian.net/browse/GNU-1906. Please let us know if you
>> have a fix.
>>
>> If you have any questions regarding this report, please ask on
>> [email protected] mailing list.
>>
>>
>> -----------------8<--------------------------8<--------------------------8<--------------------------
>>
>> The information below contains the details of the failures, and the ways
>> to reproduce a debug environment:
>>
>> You can find the failure logs in *.log.1.xz files in
>>  *
>> http://54.172.246.49:9090/jobs/tcwg_gcc_check--master-aarch64-build/builds/10197/archive/artifacts/00-sumfiles/
>> The full lists of regressions and improvements as well as configure and
>> make commands are in
>>  *
>> http://54.172.246.49:9090/jobs/tcwg_gcc_check--master-aarch64-build/builds/10197/archive/artifacts/notify/
>> The list of [ignored] baseline and flaky failures are in
>>  *
>> http://54.172.246.49:9090/jobs/tcwg_gcc_check--master-aarch64-build/builds/10197/archive/artifacts/sumfiles/xfails.xfail
>>
>> Current build   :
>> http://54.172.246.49:9090/jobs/tcwg_gcc_check--master-aarch64-build/builds/10197/archive/artifacts/
>> Reference build :
>> http://54.172.246.49:9090/jobs/tcwg_gcc_check--master-aarch64-build/builds/10196/archive/artifacts/
>>
>> Instruction to reproduce the build :
>> https://gitlab.com/LinaroLtd/tcwg/ci/interesting-commits/-/raw/master/gcc/sha1/79e29562907b454cdb867195b34cf63156d2d0cc/tcwg_gcc_check/master-aarch64/reproduction_instructions.txt
>>
>> Full commit : See in git+ssh://[email protected]/git/gcc.git
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.