summaryrefslogtreecommitdiff
path: root/dev-cpp
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2025-10-30 08:10:42 +0000
committerSam James <sam@gentoo.org>2025-10-30 08:10:56 +0000
commit03fa9e66ba5a5d7a3e445ac3f49d265f7a445d37 (patch)
tree05354d996fd0f32504fd7b38a7473da16771626d /dev-cpp
parent68fe27851efa08f246096b772403bed5633c201e (diff)
downloadgentoo-03fa9e66ba5a5d7a3e445ac3f49d265f7a445d37.tar.gz
gentoo-03fa9e66ba5a5d7a3e445ac3f49d265f7a445d37.tar.bz2
gentoo-03fa9e66ba5a5d7a3e445ac3f49d265f7a445d37.zip
dev-cpp/folly: workaround GCC 16 bug
Closes: https://bugs.gentoo.org/963586 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-cpp')
-rw-r--r--dev-cpp/folly/files/folly-2025.04.14.00-gcc16-workaround.patch62
-rw-r--r--dev-cpp/folly/folly-2025.04.14.00-r2.ebuild1
2 files changed, 63 insertions, 0 deletions
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() {