Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GCC 13 reports OOB write #3533

Closed
danakj opened this issue Jul 16, 2023 · 4 comments
Closed

GCC 13 reports OOB write #3533

danakj opened this issue Jul 16, 2023 · 4 comments

Comments

@danakj
Copy link
Contributor

danakj commented Jul 16, 2023

Repro: https://godbolt.org/z/on35ndoM4

This compiled okay on GCC 12, but when I updated to 13 I began receiving these errors about OOB write. The same happens on GCC trunk.

I am following the example in https://fmt.dev/latest/api.html#formatting-user-defined-types and forwarding formatting of a type to the formatter for its member. Doing so causes an OOB write error on GCC 13 with -O2 -NDEBUG flags.

#include "fmt/format.h"

// using Inner = int;  // Works.
using Inner = float;  // Does not work.

struct S {
    Inner f;
};

// fmt support.
template <class Char>
struct fmt::formatter<S, Char> {
    template <class ParseContext>
    constexpr auto parse(ParseContext& ctx) {
        return underlying_.parse(ctx);
    }

    template <class FormatContext>
    constexpr auto format(const S& t, FormatContext& ctx) const {
        return underlying_.format(t.f, ctx);
    }

   private:
    fmt::formatter<Inner, Char> underlying_;
};

int main() {
    //fmt::println("{}", 1.f);  // Works.
    fmt::println("{}", S{Inner(1)});  // Does not work.
}

Error is long:

In file included from /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/specfun.h:43,
                 from /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/cmath:3701,
                 from /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:36,
                 from <source>:1:
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3043:11:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/x86_64-linux-gnu/bits/c++allocator.h:33,
                 from /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/allocator.h:46,
                 from /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/memory:65,
                 from /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:41:
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3043:11:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3046:19:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3046:19:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2942:32,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3050:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2942:32,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3050:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2949:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2940:24,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3050:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2949:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2940:24,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3050:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3062:17:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3062:17:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2942:32,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3067:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2942:32,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3067:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2949:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2940:24,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3067:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2949:11,
    inlined from 'void fmt::v10::detail::bigint::assign_pow10(int)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2940:24,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3067:29:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3069:11:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3069:11:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = unsigned int; _Up = unsigned int; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = unsigned int*; _OI = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = unsigned int*; _ForwardIterator = unsigned int*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = long long unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3071:19:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 5 and 9223372036854775807 bytes into a region of size 4 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = unsigned int]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = unsigned int]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::resize(size_t) [with T = unsigned int; long unsigned int SIZE = 32; Allocator = std::allocator<unsigned int>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:1031:63,
    inlined from 'void fmt::v10::detail::bigint::assign(UInt) [with UInt = long unsigned int; typename std::enable_if<(std::is_same<UInt, long unsigned int>::value || std::is_same<UInt, __int128 unsigned>::value), int>::type <anonymous> = 0]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2848:19,
    inlined from 'void fmt::v10::detail::bigint::operator=(Int) [with Int = long long unsigned int]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:2869:11,
    inlined from 'void fmt::v10::detail::format_dragon(basic_fp<__int128 unsigned>, unsigned int, int, buffer<char>&, int&)' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3071:19:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 4 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In static member function 'static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = char; _Up = char; bool _IsMove = false]',
    inlined from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = char*; _OI = char*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:506:30,
    inlined from '_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = char*; _OI = char*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:533:42,
    inlined from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = char*; _OI = char*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:540:31,
    inlined from '_OI std::copy(_II, _II, _OI) [with _II = char*; _OI = char*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:633:7,
    inlined from 'static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = char*; _ForwardIterator = char*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:147:27,
    inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = char*; _ForwardIterator = char*]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_uninitialized.h:185:15,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = char; long unsigned int SIZE = 500; Allocator = std::allocator<char>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:960:28,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = char]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = char]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = char]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'int fmt::v10::detail::format_float(Float, int, float_specs, buffer<char>&) [with Float = double]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3357:25:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/stl_algobase.h:437:30: error: 'void* __builtin_memmove(void*, const void*, long unsigned int)' writing between 2 and 9223372036854775807 bytes into a region of size 1 overflows the destination [-Werror=stringop-overflow=]
  437 |             __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function '_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = char]',
    inlined from 'static _Tp* std::allocator_traits<std::allocator<_Tp1> >::allocate(allocator_type&, size_type) [with _Tp = char]' at /opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/alloc_traits.h:482:28,
    inlined from 'void fmt::v10::basic_memory_buffer<T, SIZE, Allocator>::grow(size_t) [with T = char; long unsigned int SIZE = 500; Allocator = std::allocator<char>]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:956:51,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = char]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:860:39,
    inlined from 'void fmt::v10::detail::buffer<T>::try_reserve(size_t) [with T = char]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:859:24,
    inlined from 'void fmt::v10::detail::buffer<T>::try_resize(size_t) [with T = char]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/core.h:851:16,
    inlined from 'int fmt::v10::detail::format_float(Float, int, float_specs, buffer<char>&) [with Float = double]' at /opt/compiler-explorer/libs/fmt/trunk/include/fmt/format.h:3357:25:
/opt/compiler-explorer/gcc-trunk-20230715/include/c++/14.0.0/bits/new_allocator.h:147:55: note: destination object of size 1 allocated by 'operator new'
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
cc1plus: some warnings being treated as errors
Compiler returned: 1
danakj added a commit to danakj/subspace that referenced this issue Jul 16, 2023
On GCC 12, a mutable variable can't be used in a constexpr context, but
it now works in GCC 13.

Unfortunately, (or fortunately?) GCC 13 reports an OOB write in fmtlib's
float formatting. We disable that warning for now so that we can build,
and it is reported upstream at fmtlib/fmt#3533
danakj added a commit to danakj/subspace that referenced this issue Jul 17, 2023
On GCC 12, a mutable variable can't be used in a constexpr context, but
it now works in GCC 13.

Unfortunately, (or fortunately?) GCC 13 reports an OOB write in fmtlib's
float formatting. We disable that warning for now so that we can build,
and it is reported upstream at fmtlib/fmt#3533
danakj added a commit to chromium/subspace that referenced this issue Jul 17, 2023
On GCC 12, a mutable variable can't be used in a constexpr context, but
it now works in GCC 13.

Unfortunately, (or fortunately?) GCC 13 reports an OOB write in fmtlib's
float formatting. We disable that warning for now so that we can build,
and it is reported upstream at fmtlib/fmt#3533
@vitaut
Copy link
Contributor

vitaut commented Jul 20, 2023

This warning doesn't make any sense because the capacity of that memory buffer is initialized from the SIZE template argument (32) and cannot go down to 4. Please report to GCC.

@vitaut
Copy link
Contributor

vitaut commented Jul 20, 2023

Switched to a more reliable suppression in fb97cb2. Thanks for reporting.

@vitaut vitaut closed this as completed Jul 20, 2023
@danakj
Copy link
Contributor Author

danakj commented Jul 20, 2023

Thanks!

@ckerr
Copy link

ckerr commented Dec 8, 2023

Upstream issue @ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109717

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants