commit:     03fa9e66ba5a5d7a3e445ac3f49d265f7a445d37
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 30 08:10:42 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Oct 30 08:10:56 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=03fa9e66

dev-cpp/folly: workaround GCC 16 bug

Closes: https://bugs.gentoo.org/963586
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../folly-2025.04.14.00-gcc16-workaround.patch     | 62 ++++++++++++++++++++++
 dev-cpp/folly/folly-2025.04.14.00-r2.ebuild        |  1 +
 2 files changed, 63 insertions(+)

diff --git a/dev-cpp/folly/files/folly-2025.04.14.00-gcc16-workaround.patch 
b/dev-cpp/folly/files/folly-2025.04.14.00-gcc16-workaround.patch
new file mode 100644
index 000000000000..975bd066bbfe
--- /dev/null
+++ b/dev-cpp/folly/files/folly-2025.04.14.00-gcc16-workaround.patch
@@ -0,0 +1,62 @@
+https://bugs.gentoo.org/963586
+https://gcc.gnu.org/PR122171
+--- a/folly/Fingerprint.cpp
++++ b/folly/Fingerprint.cpp
+@@ -86,7 +86,7 @@ constexpr auto copy_table(D const (&table)[S0][S1][S2]) {
+ }
+ 
+ template <size_t Deg>
+-constexpr poly_table<Deg> make_poly_table() {
++constexpr std::array<std::array<std::array<uint64_t, poly_size(Deg)>, 256>, 
8> make_poly_table() {
+   FingerprintPolynomial<Deg> poly(FingerprintTablePoly<Deg>::data);
+   uint64_t table[8][256][poly_size(Deg)] = {};
+   // table[i][q] is Q(X) * X^(k+8*i) mod P(X),
+@@ -125,11 +125,11 @@ const uint64_t 
FingerprintTable<128>::poly[poly_size(128)] = {
+     FingerprintTablePoly<127>::data[0], FingerprintTablePoly<127>::data[1]};
+ 
+ template <>
+-const poly_table<64> FingerprintTable<64>::table = poly_table_63;
++const std::array<std::array<std::array<uint64_t, poly_size(64)>, 256>, 8> 
FingerprintTable<64>::table = poly_table_63;
+ template <>
+-const poly_table<96> FingerprintTable<96>::table = poly_table_95;
++const std::array<std::array<std::array<uint64_t, poly_size(96)>, 256>, 8> 
FingerprintTable<96>::table = poly_table_95;
+ template <>
+-const poly_table<128> FingerprintTable<128>::table = poly_table_127;
++const std::array<std::array<std::array<uint64_t, poly_size(128)>, 256>, 8> 
FingerprintTable<128>::table = poly_table_127;
+ 
+ } // namespace detail
+ } // namespace folly
+--- a/folly/Fingerprint.h
++++ b/folly/Fingerprint.h
+@@ -54,20 +54,16 @@ constexpr size_t poly_size(size_t bits) {
+   return 1 + (bits - 1) / 64;
+ }
+ 
+-template <size_t Deg>
+-using poly_table =
+-    std::array<std::array<std::array<uint64_t, poly_size(Deg)>, 256>, 8>;
+-
+ template <int BITS>
+ struct FingerprintTable {
+   static const uint64_t poly[poly_size(BITS)];
+-  static const poly_table<BITS> table;
++  static const std::array<std::array<std::array<uint64_t, poly_size(BITS)>, 
256>, 8> table;
+ };
+ 
+ template <int BITS>
+ const uint64_t FingerprintTable<BITS>::poly[poly_size(BITS)] = {};
+ template <int BITS>
+-const poly_table<BITS> FingerprintTable<BITS>::table = {};
++const std::array<std::array<std::array<uint64_t, poly_size(BITS)>, 256>, 8> 
FingerprintTable<BITS>::table = {};
+ 
+ #ifndef _MSC_VER
+ // MSVC as of 2017 can't handle these extern specialization declarations,
+@@ -78,7 +74,7 @@ const poly_table<BITS> FingerprintTable<BITS>::table = {};
+   template <>                                                   \
+   const uint64_t FingerprintTable<BITS>::poly[poly_size(BITS)]; \
+   template <>                                                   \
+-  const poly_table<BITS> FingerprintTable<BITS>::table
++  const std::array<std::array<std::array<uint64_t, poly_size(BITS)>, 256>, 8> 
FingerprintTable<BITS>::table
+ 
+ FOLLY_DECLARE_FINGERPRINT_TABLES(64);
+ FOLLY_DECLARE_FINGERPRINT_TABLES(96);

diff --git a/dev-cpp/folly/folly-2025.04.14.00-r2.ebuild 
b/dev-cpp/folly/folly-2025.04.14.00-r2.ebuild
index 44377f35c5f3..440014760b5a 100644
--- a/dev-cpp/folly/folly-2025.04.14.00-r2.ebuild
+++ b/dev-cpp/folly/folly-2025.04.14.00-r2.ebuild
@@ -55,6 +55,7 @@ DEPEND="
 PATCHES=(
        "${FILESDIR}"/${PN}-2024.11.04.00-musl-fix.patch
        "${FILESDIR}"/${PN}-2025.04.14.00-boost-1.89.patch
+       "${FILESDIR}"/${PN}-2025.04.14.00-gcc16-workaround.patch
 )
 
 src_unpack() {

Reply via email to