From: Jonathan Wakely Date: Wed, 9 Aug 2023 10:11:31 +0000 (+0100) Subject: libstdc++: Fix constexpr functions to conform to older standards X-Git-Tag: releases/gcc-11.5.0~562 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27bad57576ca73988038d2c56e0dcbc22606900c;p=thirdparty%2Fgcc.git libstdc++: Fix constexpr functions to conform to older standards Some constexpr functions were inadvertently relying on relaxed constexpr rules from later standards. libstdc++-v3/ChangeLog: * include/experimental/bits/fs_path.h (path::string): Use _GLIBCXX17_CONSTEXPR not _GLIBCXX_CONSTEXPR for 'if constexpr'. * include/std/charconv (__to_chars_8): Initialize variable for C++17 constexpr rules. (cherry picked from commit b3a2b307b9deea719fb725a86df43b82176fe459) --- diff --git a/libstdc++-v3/include/experimental/bits/fs_path.h b/libstdc++-v3/include/experimental/bits/fs_path.h index 65d63e433e08..50e470827142 100644 --- a/libstdc++-v3/include/experimental/bits/fs_path.h +++ b/libstdc++-v3/include/experimental/bits/fs_path.h @@ -1020,7 +1020,7 @@ namespace __detail inline std::basic_string<_CharT, _Traits, _Allocator> path::string(const _Allocator& __a) const { - if _GLIBCXX_CONSTEXPR (is_same<_CharT, value_type>::value) + if _GLIBCXX17_CONSTEXPR (is_same<_CharT, value_type>::value) return { _M_pathname.begin(), _M_pathname.end(), __a }; using _WString = basic_string<_CharT, _Traits, _Allocator>; diff --git a/libstdc++-v3/include/std/charconv b/libstdc++-v3/include/std/charconv index 65f923993fa3..dc93c4c07bbc 100644 --- a/libstdc++-v3/include/std/charconv +++ b/libstdc++-v3/include/std/charconv @@ -235,7 +235,7 @@ namespace __detail static_assert(is_unsigned<_Tp>::value, "implementation bug"); to_chars_result __res; - unsigned __len; + unsigned __len = 0; if _GLIBCXX17_CONSTEXPR (__gnu_cxx::__int_traits<_Tp>::__digits <= 16) {