Compare commits
3 Commits
ada79875d5
...
main
Author | SHA1 | Date | |
---|---|---|---|
c8c63d8e38
|
|||
f77ede224e
|
|||
1ec08d0857
|
12
debian/changelog
vendored
12
debian/changelog
vendored
@@ -1,3 +1,15 @@
|
||||
gcc-14 (14.3.0-7~bpo13+1) trixie-backports; urgency=medium
|
||||
|
||||
* Sync with Debian gcc-14=14.3.0-7.
|
||||
|
||||
-- Konstantin Demin <rockdrilla@gmail.com> Mon, 08 Sep 2025 11:40:58 +0300
|
||||
|
||||
gcc-14 (14.3.0-6~bpo13+2) trixie-backports; urgency=medium
|
||||
|
||||
* Sync with Debian gcc-14=14.3.0-6.
|
||||
|
||||
-- Konstantin Demin <rockdrilla@gmail.com> Mon, 08 Sep 2025 09:51:19 +0300
|
||||
|
||||
gcc-14 (14.3.0-6~bpo13+1) trixie-backports; urgency=medium
|
||||
|
||||
* Sync with Debian gcc-14=14.3.0-6.
|
||||
|
4
debian/patches/git-doc-updates.diff
vendored
4
debian/patches/git-doc-updates.diff
vendored
@@ -1,7 +1,7 @@
|
||||
# DP: updates from the 14 branch upto 20250829 (documentation).
|
||||
# DP: updates from the 14 branch upto 20250908 (documentation).
|
||||
|
||||
LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \
|
||||
c9cd41fba9ebd288c4f101e4b99da934bcb96a11 591d04b6db957715fd88e9ebf5be4d96a5bc2caa \
|
||||
c9cd41fba9ebd288c4f101e4b99da934bcb96a11 55fb9523930af3fc8f4e5045e57e0a83b74cbc2e \
|
||||
| awk '/^diff .*\.texi/ {skip=0; print; next} /^diff / {skip=1; next} skip==0' \
|
||||
| grep -v -E '^(diff|index)'
|
||||
|
||||
|
607
debian/patches/git-updates.diff
vendored
607
debian/patches/git-updates.diff
vendored
@@ -1,13 +1,20 @@
|
||||
# DP: updates from the 14 branch upto 20250829 (591d04b6db9).
|
||||
# DP: updates from the 14 branch upto 20250908 (591d04b6db9).
|
||||
|
||||
LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \
|
||||
c9cd41fba9ebd288c4f101e4b99da934bcb96a11 591d04b6db957715fd88e9ebf5be4d96a5bc2caa \
|
||||
c9cd41fba9ebd288c4f101e4b99da934bcb96a11 55fb9523930af3fc8f4e5045e57e0a83b74cbc2e \
|
||||
| awk '/^diff .*\.texi/ {skip=1; next} /^diff / { skip=0 } skip==0' \
|
||||
| grep -v -E '^(diff|index)'
|
||||
|
||||
--- a/src/gcc/ChangeLog
|
||||
+++ b/src/gcc/ChangeLog
|
||||
@@ -1,3 +1,544 @@
|
||||
@@ -1,3 +1,551 @@
|
||||
+2025-09-03 Benjamin Wu <bwu25@cs.washington.edu>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-07-13 Benjamin Wu <bwu25@cs.washington.edu>
|
||||
+
|
||||
+ * gimple.h (GTMA_DOES_GO_IRREVOCABLE): Fix typo.
|
||||
+
|
||||
+2025-08-20 Martin Jambor <mjambor@suse.cz>
|
||||
+
|
||||
+ Backported from master:
|
||||
@@ -556,7 +563,7 @@ LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \
|
||||
+++ b/src/gcc/DATESTAMP
|
||||
@@ -1 +1 @@
|
||||
-20250523
|
||||
+20250829
|
||||
+20250908
|
||||
--- a/src/gcc/ada/ChangeLog
|
||||
+++ b/src/gcc/ada/ChangeLog
|
||||
@@ -1,3 +1,20 @@
|
||||
@@ -3365,6 +3372,17 @@ LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \
|
||||
break;
|
||||
}
|
||||
else
|
||||
--- a/src/gcc/gimple.h
|
||||
+++ b/src/gcc/gimple.h
|
||||
@@ -864,7 +864,7 @@ struct GTY((tag("GSS_ASSUME")))
|
||||
tell the runtime that it should begin the transaction in
|
||||
serial-irrevocable mode. */
|
||||
#define GTMA_DOES_GO_IRREVOCABLE (1u << 6)
|
||||
-/* The transaction contains no instrumentation code whatsover, most
|
||||
+/* The transaction contains no instrumentation code whatsoever, most
|
||||
likely because it is guaranteed to go irrevocable upon entry. */
|
||||
#define GTMA_HAS_NO_INSTRUMENTATION (1u << 7)
|
||||
|
||||
--- a/src/gcc/optabs.cc
|
||||
+++ b/src/gcc/optabs.cc
|
||||
@@ -1368,8 +1368,7 @@ avoid_expensive_constant (machine_mode mode, optab binoptab,
|
||||
@@ -3559,7 +3577,21 @@ LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \
|
||||
/* Returns 10**2**N. */
|
||||
--- a/src/gcc/testsuite/ChangeLog
|
||||
+++ b/src/gcc/testsuite/ChangeLog
|
||||
@@ -1,3 +1,496 @@
|
||||
@@ -1,3 +1,510 @@
|
||||
+2025-08-30 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ Revert:
|
||||
+ 2025-08-30 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ * gcc.target/i386/pr120691.c: New test.
|
||||
+
|
||||
+2025-08-29 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-08-29 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ * gcc.target/i386/pr120691.c: New test.
|
||||
+
|
||||
+2025-08-22 Harald Anlauf <anlauf@gmx.de>
|
||||
+
|
||||
+ Backported from master:
|
||||
@@ -7574,6 +7606,99 @@ new file mode 100644
|
||||
{
|
||||
if (f7_class_sign (a_class))
|
||||
return f7_clr (cc);
|
||||
--- a/src/libgcc/config/libbid/ChangeLog
|
||||
+++ b/src/libgcc/config/libbid/ChangeLog
|
||||
@@ -1,3 +1,29 @@
|
||||
+2025-08-30 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ Revert:
|
||||
+ 2025-08-29 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ PR target/120691
|
||||
+ * bid128_div.c: Fix _Decimal128 arithmetic error under
|
||||
+ FE_UPWARD.
|
||||
+ * bid128_rem.c: Ditto.
|
||||
+ * bid128_sqrt.c: Ditto.
|
||||
+ * bid64_div.c (bid64_div): Ditto.
|
||||
+ * bid64_sqrt.c (bid64_sqrt): Ditto.
|
||||
+
|
||||
+2025-08-29 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-08-29 liuhongt <hongtao.liu@intel.com>
|
||||
+
|
||||
+ PR target/120691
|
||||
+ * bid128_div.c: Fix _Decimal128 arithmetic error under
|
||||
+ FE_UPWARD.
|
||||
+ * bid128_rem.c: Ditto.
|
||||
+ * bid128_sqrt.c: Ditto.
|
||||
+ * bid64_div.c (bid64_div): Ditto.
|
||||
+ * bid64_sqrt.c (bid64_sqrt): Ditto.
|
||||
+
|
||||
2025-05-23 Release Manager
|
||||
|
||||
* GCC 14.3.0 released.
|
||||
--- a/src/libphobos/ChangeLog
|
||||
+++ b/src/libphobos/ChangeLog
|
||||
@@ -1,3 +1,22 @@
|
||||
+2025-09-07 Sam James <sam@gentoo.org>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-09-07 Sam James <sam@gentoo.org>
|
||||
+
|
||||
+ * configure.tgt: Add hppa[12]*-*-linux* as a supported target.
|
||||
+
|
||||
+2025-09-07 Sam James <sam@gentoo.org>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-05-06 Sam James <sam@gentoo.org>
|
||||
+
|
||||
+ * configure.tgt: Add sparc64-unknown-linux-gnu as a supported target.
|
||||
+
|
||||
+2025-09-07 Matthias Klose <doko@ubuntu.com>
|
||||
+
|
||||
+ * configure.tgt: Add powerpc64le--linux-gnu as a supported target
|
||||
+ when configured with --with-long-double-format=ieee.
|
||||
+
|
||||
2025-05-23 Release Manager
|
||||
|
||||
* GCC 14.3.0 released.
|
||||
--- a/src/libphobos/configure.tgt
|
||||
+++ b/src/libphobos/configure.tgt
|
||||
@@ -36,7 +36,7 @@ case "${target}" in
|
||||
arm*-*-linux*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
||||
- hppa-*-linux*)
|
||||
+ hppa-*-linux* | hppa[12]*-*-linux*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
||||
loongarch*-*-linux*)
|
||||
@@ -48,6 +48,15 @@ case "${target}" in
|
||||
power*-*-freebsd*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
||||
+ powerpc64le-*linux*)
|
||||
+ LIBPHOBOS_SUPPORTED=yes
|
||||
+ case "$ac_configure_args" in
|
||||
+ *--with-long-double-format=ieee*)
|
||||
+ ;;
|
||||
+ *)
|
||||
+ LIBDRUNTIME_ONLY=yes
|
||||
+ esac
|
||||
+ ;;
|
||||
power*-*-linux*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
LIBDRUNTIME_ONLY=yes
|
||||
@@ -58,7 +67,7 @@ case "${target}" in
|
||||
s390*-linux*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
||||
- sparc*-*-solaris2.11*)
|
||||
+ sparc64-*-linux* | sparc*-*-solaris2.11*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
||||
*-*-darwin9* | *-*-darwin1[01]*)
|
||||
--- a/src/libsanitizer/ChangeLog
|
||||
+++ b/src/libsanitizer/ChangeLog
|
||||
@@ -1,3 +1,14 @@
|
||||
@@ -7663,7 +7788,89 @@ new file mode 100644
|
||||
extern unsigned IOCTL_TCSETSW;
|
||||
--- a/src/libstdc++-v3/ChangeLog
|
||||
+++ b/src/libstdc++-v3/ChangeLog
|
||||
@@ -1,3 +1,62 @@
|
||||
@@ -1,3 +1,144 @@
|
||||
+2025-09-04 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-09-03 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ PR libstdc++/110853
|
||||
+ * include/bits/stl_pair.h [C++20] (pair(const T1&, const T2&)):
|
||||
+ Use std::type_identity_t<T1> for first parameter.
|
||||
+ * testsuite/20_util/pair/cons/110853.cc: New test.
|
||||
+
|
||||
+2025-09-04 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-09-03 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ PR libstdc++/121745
|
||||
+ * include/bits/stl_pair.h (get): Use forward instead of move in
|
||||
+ std::get<T> overloads for rvalue pairs.
|
||||
+ * testsuite/20_util/pair/astuple/get_by_type.cc: Check all value
|
||||
+ categories and cv-qualification.
|
||||
+
|
||||
+2025-09-04 Yihan Wang <yronglin777@gmail.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-09-03 Yihan Wang <yronglin777@gmail.com>
|
||||
+
|
||||
+ * include/std/expected (expected(U&&)): Add missing constraint
|
||||
+ as per LWG 4222.
|
||||
+ * testsuite/20_util/expected/lwg4222.cc: New test.
|
||||
+
|
||||
+2025-09-04 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2024-07-25 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ * include/std/expected (expected): Constrain constructors to
|
||||
+ prevent problematic bool conversions, as per LWG 3836.
|
||||
+ * testsuite/20_util/expected/lwg3836.cc: New test.
|
||||
+
|
||||
+2025-09-03 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2024-11-01 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ * testsuite/23_containers/unordered_set/pr115285.cc: Include
|
||||
+ missing header for std::vector.
|
||||
+
|
||||
+2025-09-03 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ * include/bits/regex_compiler.h (_Compiler::_S_validate): Add
|
||||
+ diagnostic pragma to disable -Wswitch warning.
|
||||
+
|
||||
+2025-09-03 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-08-21 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ PR libstdc++/121496
|
||||
+ * include/std/mutex (__timed_mutex_impl::_M_try_wait_until):
|
||||
+ Change preprocessor condition to use #if instead of #ifdef.
|
||||
+ (recursive_timed_mutex::_M_clocklock): Likewise.
|
||||
+ * testsuite/30_threads/timed_mutex/121496.cc: New test.
|
||||
+
|
||||
+2025-09-03 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-08-21 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ PR libstdc++/121374
|
||||
+ * include/std/limits (numeric_limits<__float128>::max_digits10):
|
||||
+ Fix value.
|
||||
+ * testsuite/18_support/numeric_limits/128bit.cc: Check value.
|
||||
+
|
||||
+2025-09-03 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
+ 2025-07-17 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ PR libstdc++/121097
|
||||
+ * include/c_global/cmath (hypot): Use __promote_3 instead of
|
||||
+ __promoted.
|
||||
+
|
||||
+2025-06-11 Jonathan Wakely <jwakely@redhat.com>
|
||||
+
|
||||
+ Backported from master:
|
||||
@@ -7919,6 +8126,20 @@ new file mode 100644
|
||||
static time_point
|
||||
from_time_t(std::time_t __t) noexcept
|
||||
{
|
||||
--- a/src/libstdc++-v3/include/bits/regex_compiler.h
|
||||
+++ b/src/libstdc++-v3/include/bits/regex_compiler.h
|
||||
@@ -188,8 +188,11 @@ namespace __detail
|
||||
case grep:
|
||||
case egrep:
|
||||
return __f;
|
||||
+#pragma GCC diagnostic push
|
||||
+#pragma GCC diagnostic ignored "-Wswitch" // do not warn about non-enumerator
|
||||
case _FlagT(0):
|
||||
return __f | ECMAScript;
|
||||
+#pragma GCC diagnostic pop
|
||||
default:
|
||||
std::__throw_regex_error(_S_grammar, "conflicting grammar options");
|
||||
}
|
||||
--- a/src/libstdc++-v3/include/bits/shared_ptr_base.h
|
||||
+++ b/src/libstdc++-v3/include/bits/shared_ptr_base.h
|
||||
@@ -2069,7 +2069,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
@@ -7930,6 +8151,151 @@ new file mode 100644
|
||||
|
||||
long
|
||||
use_count() const noexcept
|
||||
--- a/src/libstdc++-v3/include/bits/stl_pair.h
|
||||
+++ b/src/libstdc++-v3/include/bits/stl_pair.h
|
||||
@@ -425,7 +425,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
/// Constructor accepting lvalues of `first_type` and `second_type`
|
||||
constexpr explicit(!_S_convertible<const _T1&, const _T2&>())
|
||||
- pair(const _T1& __x, const _T2& __y)
|
||||
+ pair(const type_identity_t<_T1>& __x, const _T2& __y)
|
||||
noexcept(_S_nothrow_constructible<const _T1&, const _T2&>())
|
||||
requires (_S_constructible<const _T1&, const _T2&>())
|
||||
: first(__x), second(__y)
|
||||
@@ -1286,12 +1286,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
template <typename _Tp, typename _Up>
|
||||
constexpr _Tp&&
|
||||
get(pair<_Tp, _Up>&& __p) noexcept
|
||||
- { return std::move(__p.first); }
|
||||
+ { return std::forward<_Tp>(__p.first); }
|
||||
|
||||
template <typename _Tp, typename _Up>
|
||||
constexpr const _Tp&&
|
||||
get(const pair<_Tp, _Up>&& __p) noexcept
|
||||
- { return std::move(__p.first); }
|
||||
+ { return std::forward<const _Tp>(__p.first); }
|
||||
|
||||
template <typename _Tp, typename _Up>
|
||||
constexpr _Tp&
|
||||
@@ -1306,12 +1306,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
template <typename _Tp, typename _Up>
|
||||
constexpr _Tp&&
|
||||
get(pair<_Up, _Tp>&& __p) noexcept
|
||||
- { return std::move(__p.second); }
|
||||
+ { return std::forward<_Tp>(__p.second); }
|
||||
|
||||
template <typename _Tp, typename _Up>
|
||||
constexpr const _Tp&&
|
||||
get(const pair<_Up, _Tp>&& __p) noexcept
|
||||
- { return std::move(__p.second); }
|
||||
+ { return std::forward<const _Tp>(__p.second); }
|
||||
#endif // __glibcxx_tuples_by_type
|
||||
|
||||
|
||||
--- a/src/libstdc++-v3/include/c_global/cmath
|
||||
+++ b/src/libstdc++-v3/include/c_global/cmath
|
||||
@@ -3785,10 +3785,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
{ return std::__hypot3<long double>(__x, __y, __z); }
|
||||
|
||||
template<typename _Tp, typename _Up, typename _Vp>
|
||||
- __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>
|
||||
+ typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
|
||||
hypot(_Tp __x, _Up __y, _Vp __z)
|
||||
{
|
||||
- using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>;
|
||||
+ using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type;
|
||||
return std::__hypot3<__type>(__x, __y, __z);
|
||||
}
|
||||
|
||||
--- a/src/libstdc++-v3/include/std/expected
|
||||
+++ b/src/libstdc++-v3/include/std/expected
|
||||
@@ -314,6 +314,17 @@ namespace __expected
|
||||
__guard.release();
|
||||
}
|
||||
}
|
||||
+
|
||||
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
+ // 3836. std::expected<bool, E1> conversion constructor
|
||||
+ // expected(const expected<U, G>&) should take precedence over
|
||||
+ // expected(U&&) with operator bool
|
||||
+
|
||||
+ // If T is cv bool, remove_cvref_t<U> is not a specialization of expected.
|
||||
+ template<typename _Tp, typename _Up>
|
||||
+ concept __not_constructing_bool_from_expected
|
||||
+ = ! is_same_v<remove_cv_t<_Tp>, bool>
|
||||
+ || ! __is_expected<remove_cvref_t<_Up>>;
|
||||
}
|
||||
/// @endcond
|
||||
|
||||
@@ -327,26 +338,41 @@ namespace __expected
|
||||
static_assert( ! __expected::__is_unexpected<remove_cv_t<_Tp>> );
|
||||
static_assert( __expected::__can_be_unexpected<_Er> );
|
||||
|
||||
- template<typename _Up, typename _Err, typename _Unex = unexpected<_Er>>
|
||||
+ // If T is not cv bool, converts-from-any-cvref<T, expected<U, G>> and
|
||||
+ // is_constructible<unexpected<E>, cv expected<U, G> ref-qual> are false.
|
||||
+ template<typename _Up, typename _Gr, typename _Unex = unexpected<_Er>,
|
||||
+ typename = remove_cv_t<_Tp>>
|
||||
static constexpr bool __cons_from_expected
|
||||
- = __or_v<is_constructible<_Tp, expected<_Up, _Err>&>,
|
||||
- is_constructible<_Tp, expected<_Up, _Err>>,
|
||||
- is_constructible<_Tp, const expected<_Up, _Err>&>,
|
||||
- is_constructible<_Tp, const expected<_Up, _Err>>,
|
||||
- is_convertible<expected<_Up, _Err>&, _Tp>,
|
||||
- is_convertible<expected<_Up, _Err>, _Tp>,
|
||||
- is_convertible<const expected<_Up, _Err>&, _Tp>,
|
||||
- is_convertible<const expected<_Up, _Err>, _Tp>,
|
||||
- is_constructible<_Unex, expected<_Up, _Err>&>,
|
||||
- is_constructible<_Unex, expected<_Up, _Err>>,
|
||||
- is_constructible<_Unex, const expected<_Up, _Err>&>,
|
||||
- is_constructible<_Unex, const expected<_Up, _Err>>
|
||||
+ = __or_v<is_constructible<_Tp, expected<_Up, _Gr>&>,
|
||||
+ is_constructible<_Tp, expected<_Up, _Gr>>,
|
||||
+ is_constructible<_Tp, const expected<_Up, _Gr>&>,
|
||||
+ is_constructible<_Tp, const expected<_Up, _Gr>>,
|
||||
+ is_convertible<expected<_Up, _Gr>&, _Tp>,
|
||||
+ is_convertible<expected<_Up, _Gr>, _Tp>,
|
||||
+ is_convertible<const expected<_Up, _Gr>&, _Tp>,
|
||||
+ is_convertible<const expected<_Up, _Gr>, _Tp>,
|
||||
+ is_constructible<_Unex, expected<_Up, _Gr>&>,
|
||||
+ is_constructible<_Unex, expected<_Up, _Gr>>,
|
||||
+ is_constructible<_Unex, const expected<_Up, _Gr>&>,
|
||||
+ is_constructible<_Unex, const expected<_Up, _Gr>>
|
||||
>;
|
||||
|
||||
- template<typename _Up, typename _Err>
|
||||
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
+ // If t is cv bool, we know it can be constructed from expected<U, G>,
|
||||
+ // but we don't want to cause the expected(U&&) constructor to be used,
|
||||
+ // so we only check the is_constructible<unexpected<E>, ...> cases.
|
||||
+ template<typename _Up, typename _Gr, typename _Unex>
|
||||
+ static constexpr bool __cons_from_expected<_Up, _Gr, _Unex, bool>
|
||||
+ = __or_v<is_constructible<_Unex, expected<_Up, _Gr>&>,
|
||||
+ is_constructible<_Unex, expected<_Up, _Gr>>,
|
||||
+ is_constructible<_Unex, const expected<_Up, _Gr>&>,
|
||||
+ is_constructible<_Unex, const expected<_Up, _Gr>>
|
||||
+ >;
|
||||
+
|
||||
+ template<typename _Up, typename _Gr>
|
||||
constexpr static bool __explicit_conv
|
||||
= __or_v<__not_<is_convertible<_Up, _Tp>>,
|
||||
- __not_<is_convertible<_Err, _Er>>
|
||||
+ __not_<is_convertible<_Gr, _Er>>
|
||||
>;
|
||||
|
||||
template<typename _Up>
|
||||
@@ -445,8 +471,10 @@ namespace __expected
|
||||
template<typename _Up = _Tp>
|
||||
requires (!is_same_v<remove_cvref_t<_Up>, expected>)
|
||||
&& (!is_same_v<remove_cvref_t<_Up>, in_place_t>)
|
||||
- && (!__expected::__is_unexpected<remove_cvref_t<_Up>>)
|
||||
+ && (!is_same_v<remove_cvref_t<_Up>, unexpect_t>)
|
||||
&& is_constructible_v<_Tp, _Up>
|
||||
+ && (!__expected::__is_unexpected<remove_cvref_t<_Up>>)
|
||||
+ && __expected::__not_constructing_bool_from_expected<_Tp, _Up>
|
||||
constexpr explicit(!is_convertible_v<_Up, _Tp>)
|
||||
expected(_Up&& __v)
|
||||
noexcept(is_nothrow_constructible_v<_Tp, _Up>)
|
||||
--- a/src/libstdc++-v3/include/std/format
|
||||
+++ b/src/libstdc++-v3/include/std/format
|
||||
@@ -1831,25 +1831,35 @@ namespace __format
|
||||
@@ -7977,6 +8343,204 @@ new file mode 100644
|
||||
}
|
||||
return (__end - __p);
|
||||
};
|
||||
--- a/src/libstdc++-v3/include/std/limits
|
||||
+++ b/src/libstdc++-v3/include/std/limits
|
||||
@@ -2122,7 +2122,7 @@ __glibcxx_float_n(128)
|
||||
static _GLIBCXX_USE_CONSTEXPR int digits = 113;
|
||||
static _GLIBCXX_USE_CONSTEXPR int digits10 = 33;
|
||||
#if __cplusplus >= 201103L
|
||||
- static constexpr int max_digits10 = 35;
|
||||
+ static constexpr int max_digits10 = 36;
|
||||
#endif
|
||||
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
|
||||
static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
|
||||
--- a/src/libstdc++-v3/include/std/mutex
|
||||
+++ b/src/libstdc++-v3/include/std/mutex
|
||||
@@ -188,7 +188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
return static_cast<_Derived*>(this)->_M_timedlock(__ts);
|
||||
}
|
||||
|
||||
-#ifdef _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
+#if _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
template<typename _Duration>
|
||||
bool
|
||||
_M_try_lock_until(const chrono::time_point<chrono::steady_clock,
|
||||
@@ -375,7 +375,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
_M_timedlock(const __gthread_time_t& __ts)
|
||||
{ return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); }
|
||||
|
||||
-#ifdef _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
+#if _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
bool
|
||||
_M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts)
|
||||
{ return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); }
|
||||
--- a/src/libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc
|
||||
+++ b/src/libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc
|
||||
@@ -4,6 +4,11 @@
|
||||
|
||||
#if __SIZEOF_FLOAT128__
|
||||
__extension__ template class std::numeric_limits<__float128>;
|
||||
+
|
||||
+# if __cplusplus >= 201103L
|
||||
+static_assert( std::numeric_limits<__float128>::max_digits10 == 36,
|
||||
+ "PR libstdc++/121374" );
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
#if __SIZEOF_INT128__
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/src/libstdc++-v3/testsuite/20_util/expected/lwg3836.cc
|
||||
@@ -0,0 +1,34 @@
|
||||
+// { dg-do run { target c++23 } }
|
||||
+
|
||||
+#include <expected>
|
||||
+#include <testsuite_hooks.h>
|
||||
+
|
||||
+constexpr void
|
||||
+test_convert_contained_value_to_bool()
|
||||
+{
|
||||
+ struct BaseError { };
|
||||
+ struct DerivedError : BaseError { };
|
||||
+
|
||||
+ std::expected<bool, DerivedError> e = false;
|
||||
+
|
||||
+ // Should use expected(const expected<U, G>&) ctor, not expected(U&&):
|
||||
+ std::expected<bool, BaseError> e2 = e;
|
||||
+
|
||||
+ // Contained value should be e.value() not static_cast<bool>(e):
|
||||
+ VERIFY( e2.value() == false );
|
||||
+
|
||||
+ std::expected<bool, DerivedError> e3(std::unexpect);
|
||||
+ std::expected<const bool, BaseError> e4 = e3;
|
||||
+ // Should have error, not static_cast<bool>(e3):
|
||||
+ VERIFY( ! e4.has_value() );
|
||||
+}
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ test_convert_contained_value_to_bool();
|
||||
+
|
||||
+ static_assert([] {
|
||||
+ test_convert_contained_value_to_bool();
|
||||
+ return true;
|
||||
+ }());
|
||||
+}
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/src/libstdc++-v3/testsuite/20_util/expected/lwg4222.cc
|
||||
@@ -0,0 +1,39 @@
|
||||
+// { dg-do run { target c++23 } }
|
||||
+
|
||||
+// LWG 4222. 'expected' constructor from a single value missing a constraint
|
||||
+
|
||||
+#include <expected>
|
||||
+#include <type_traits>
|
||||
+#include <testsuite_hooks.h>
|
||||
+
|
||||
+struct T {
|
||||
+ explicit T(auto) {}
|
||||
+};
|
||||
+struct E {
|
||||
+ E(int) {}
|
||||
+};
|
||||
+
|
||||
+struct V {
|
||||
+ explicit constexpr V(std::unexpect_t) {}
|
||||
+};
|
||||
+
|
||||
+static_assert(!std::is_constructible_v<std::expected<T, E>, std::unexpect_t>);
|
||||
+static_assert(!std::is_constructible_v<std::expected<T, E>, std::unexpect_t &>);
|
||||
+static_assert(!std::is_constructible_v<std::expected<T, E>, std::unexpect_t &&>);
|
||||
+static_assert(!std::is_constructible_v<std::expected<T, E>, const std::unexpect_t>);
|
||||
+static_assert(!std::is_constructible_v<std::expected<T, E>, const std::unexpect_t &>);
|
||||
+static_assert(!std::is_constructible_v<std::expected<T, E>, const std::unexpect_t &&>);
|
||||
+
|
||||
+constexpr bool test() {
|
||||
+ std::expected<V, int> e1(std::in_place, std::unexpect);
|
||||
+ VERIFY( e1.has_value() );
|
||||
+ std::expected<int, V> e2(std::unexpect, std::unexpect);
|
||||
+ VERIFY( !e2.has_value() );
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+int main() {
|
||||
+ test();
|
||||
+ static_assert(test());
|
||||
+ return 0;
|
||||
+}
|
||||
--- a/src/libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
|
||||
+++ b/src/libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
|
||||
@@ -33,3 +33,55 @@ void test01()
|
||||
const int&& cpsecond __attribute__((unused)) =
|
||||
std::get<int>(std::move(cp));
|
||||
}
|
||||
+
|
||||
+// PR libstdc++/121745 return of get(pair<_Up, _Tp>&& __p) may be ill-formed
|
||||
+void
|
||||
+test_pr121745(std::pair<float&, int&> p)
|
||||
+{
|
||||
+ float& pfirst = std::get<float&>(std::move(p));
|
||||
+ int& psecond = std::get<int&>(std::move(p));
|
||||
+
|
||||
+ const auto& p2 = p;
|
||||
+ float& p2first = std::get<float&>(std::move(p2));
|
||||
+ int& p2second = std::get<int&>(std::move(p2));
|
||||
+}
|
||||
+
|
||||
+template<typename T, typename Pair>
|
||||
+using get_t = decltype(std::get<T>(std::declval<Pair>()));
|
||||
+
|
||||
+// Check that get<T>(Pair) returns Ret
|
||||
+template<typename T, typename Pair, typename Ret>
|
||||
+constexpr bool verify = std::is_same<get_t<T, Pair>, Ret>::value;
|
||||
+
|
||||
+template<typename T1, typename T2>
|
||||
+void
|
||||
+check()
|
||||
+{
|
||||
+ // Overloads for accessing first member
|
||||
+ static_assert( verify<T1, std::pair<T1, T2>&, T1&>,
|
||||
+ "T1& get(pair<T1, T2>&)" );
|
||||
+ static_assert( verify<T1, const std::pair<T1, T2>&, const T1&>,
|
||||
+ "const T1& get(const pair<T1, T2>&)" );
|
||||
+ static_assert( verify<T1, std::pair<T1, T2>&&, T1&&>,
|
||||
+ "T1&& get(pair<T1, T2>&&)" );
|
||||
+ static_assert( verify<T1, const std::pair<T1, T2>&&, const T1&&>,
|
||||
+ "const T1&& get(const pair<T1, T2>&&)" );
|
||||
+
|
||||
+ // Overloads for accessing second member
|
||||
+ static_assert( verify<T2, std::pair<T1, T2>&, T2&>,
|
||||
+ "T2& get(pair<T1, T2>&)" );
|
||||
+ static_assert( verify<T2, const std::pair<T1, T2>&, const T2&>,
|
||||
+ "const T2& get(const pair<T1, T2>&)" );
|
||||
+ static_assert( verify<T2, std::pair<T1, T2>&&, T2&&>,
|
||||
+ "T2&& get(pair<T1, T2>&&)" );
|
||||
+ static_assert( verify<T2, const std::pair<T1, T2>&&, const T2&&>,
|
||||
+ "const T2&& get(const pair<T1, T2>&&)" );
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+test_all()
|
||||
+{
|
||||
+ check<float, int>();
|
||||
+ check<float&, int&>();
|
||||
+ check<float&&, int&&>();
|
||||
+}
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/src/libstdc++-v3/testsuite/20_util/pair/cons/110853.cc
|
||||
@@ -0,0 +1,10 @@
|
||||
+// { dg-do compile { target c++17 } }
|
||||
+// PR libstdc++/110853
|
||||
+// Bad interaction between deduction guide with decay and constraints
|
||||
+// (CTAD, std::pair and function lvalue)
|
||||
+
|
||||
+#include <utility>
|
||||
+
|
||||
+void func() {}
|
||||
+std::pair p(1, func);
|
||||
+std::pair<int, void (*)()>& r = p;
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/src/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/1.cc
|
||||
@@ -8105,6 +8669,37 @@ new file mode 100644
|
||||
+template class std::weak_ptr<IncompleteClass const []>;
|
||||
+template class std::weak_ptr<IncompleteClass const [42]>;
|
||||
+#endif
|
||||
--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/pr115285.cc
|
||||
+++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/pr115285.cc
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
// libstdc++/115285
|
||||
|
||||
-#include <string>
|
||||
#include <unordered_set>
|
||||
+#include <string>
|
||||
+#include <vector>
|
||||
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/src/libstdc++-v3/testsuite/30_threads/timed_mutex/121496.cc
|
||||
@@ -0,0 +1,14 @@
|
||||
+// { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && lp64 } } }
|
||||
+// { dg-require-effective-target c++11 }
|
||||
+// { dg-options "-fsanitize=thread" }
|
||||
+
|
||||
+// PR libstdc++/121496 no member named '_M_clocklock' with -fsanitize=thread
|
||||
+
|
||||
+#include <mutex>
|
||||
+#include <chrono>
|
||||
+
|
||||
+void
|
||||
+test_pr121496(std::timed_mutex& m)
|
||||
+{
|
||||
+ (void) m.try_lock_until(std::chrono::steady_clock::time_point{});
|
||||
+}
|
||||
--- a/src/libstdc++-v3/testsuite/std/format/functions/format.cc
|
||||
+++ b/src/libstdc++-v3/testsuite/std/format/functions/format.cc
|
||||
@@ -256,6 +256,16 @@ test_locale()
|
||||
|
20
debian/patches/libphobos-ppc64el.diff
vendored
20
debian/patches/libphobos-ppc64el.diff
vendored
@@ -1,20 +0,0 @@
|
||||
# DP: build libphobos on ppc64el when configured --with-long-double-format=ieee
|
||||
|
||||
--- a/src/libphobos/configure.tgt
|
||||
+++ b/src/libphobos/configure.tgt
|
||||
@@ -48,6 +48,15 @@
|
||||
power*-*-freebsd*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
||||
+ powerpc64le-*-linux*)
|
||||
+ LIBPHOBOS_SUPPORTED=yes
|
||||
+ case "$ac_configure_args" in
|
||||
+ *--with-long-double-format=ieee*)
|
||||
+ ;;
|
||||
+ *)
|
||||
+ LIBDRUNTIME_ONLY=yes
|
||||
+ esac
|
||||
+ ;;
|
||||
power*-*-linux*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
LIBDRUNTIME_ONLY=yes
|
12
debian/patches/libphobos-sparc64.diff
vendored
12
debian/patches/libphobos-sparc64.diff
vendored
@@ -1,12 +0,0 @@
|
||||
--- a/src/libphobos/configure.tgt
|
||||
+++ b/src/libphobos/configure.tgt
|
||||
@@ -61,6 +61,9 @@ case "${target}" in
|
||||
s390*-linux*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
||||
+ sparc64-*-linux*)
|
||||
+ LIBPHOBOS_SUPPORTED=yes
|
||||
+ ;;
|
||||
x86_64-*-freebsd* | i?86-*-freebsd*)
|
||||
LIBPHOBOS_SUPPORTED=yes
|
||||
;;
|
3
debian/rules.defs
vendored
3
debian/rules.defs
vendored
@@ -1107,6 +1107,9 @@ ifeq ($(with_d),yes)
|
||||
phobos_archs += mipsn32 mipsn32el
|
||||
phobos_archs += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el
|
||||
phobos_archs += riscv64 s390x loong64 sparc64
|
||||
ifneq (,$(filter $(distrelease),trusty xenial bionic focal jammy noble oracle plucky))
|
||||
phobos_archs := $(filter-out sparc64, $(phobos_archs))
|
||||
endif
|
||||
phobos_archs += $(druntime_only_archs)
|
||||
phobos_archs := $(sort $(phobos_archs))
|
||||
ifneq (,$(filter $(DEB_TARGET_ARCH), $(phobos_archs)))
|
||||
|
2
debian/rules.patch
vendored
2
debian/rules.patch
vendored
@@ -77,8 +77,6 @@ debian_patches += \
|
||||
libphobos-unittest \
|
||||
pr118045 \
|
||||
binutils-pr32491 \
|
||||
libphobos-ppc64el \
|
||||
libphobos-sparc64 \
|
||||
|
||||
# see https://bugs.debian.org/1108322
|
||||
ifneq (,$(filter $(DEB_TARGET_ARCH),hppa m68k powerpc))
|
||||
|
Reference in New Issue
Block a user