1
0

Compare commits

..

2 Commits

Author SHA1 Message Date
f77ede224e release 14.3.0-6~bpo13+2 2025-09-08 09:51:42 +03:00
1ec08d0857 sync with Debian
version: 14.3.0-7 (UNRELEASED)
commit: 1fce39729a3f2eeebe194de8d8892899a9fbea9d
2025-09-08 09:51:06 +03:00
7 changed files with 612 additions and 42 deletions

6
debian/changelog vendored
View File

@@ -1,3 +1,9 @@
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.

View File

@@ -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)'

View File

@@ -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()

View File

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

View File

@@ -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
View File

@@ -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
View File

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