diff options
| author | Sam James <sam@gentoo.org> | 2025-10-30 08:10:42 +0000 |
|---|---|---|
| committer | Sam James <sam@gentoo.org> | 2025-10-30 08:10:56 +0000 |
| commit | 03fa9e66ba5a5d7a3e445ac3f49d265f7a445d37 (patch) | |
| tree | 05354d996fd0f32504fd7b38a7473da16771626d /dev-cpp | |
| parent | 68fe27851efa08f246096b772403bed5633c201e (diff) | |
| download | gentoo-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.patch | 62 | ||||
| -rw-r--r-- | dev-cpp/folly/folly-2025.04.14.00-r2.ebuild | 1 |
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() { |
