yuzu/externals/vcpkg/ports/qt5-webengine/workaround-msvc2022-ice.patch
2022-07-23 03:01:36 +02:00

102 lines
5.0 KiB
Diff
Executable File

--- a/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
+++ b/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
@@ -281,15 +281,63 @@ struct MD5CE {
return IntermediateDataToMD5Digest(ProcessMessage(data, n));
}
- static constexpr uint64_t Hash64(const char* data, uint32_t n) {
- IntermediateData intermediate = ProcessMessage(data, n);
- return (static_cast<uint64_t>(SwapEndian(intermediate.a)) << 32) |
- static_cast<uint64_t>(SwapEndian(intermediate.b));
+ static constexpr uint64_t Hash64(const char* message, uint32_t n) {
+ const uint32_t m = GetPaddedMessageLength(n);
+ IntermediateData intermediate0 = kInitialIntermediateData;
+ for (uint32_t offset = 0; offset < m; offset += 64) {
+ RoundData data = {
+ GetPaddedMessageWord(message, n, m, offset),
+ GetPaddedMessageWord(message, n, m, offset + 4),
+ GetPaddedMessageWord(message, n, m, offset + 8),
+ GetPaddedMessageWord(message, n, m, offset + 12),
+ GetPaddedMessageWord(message, n, m, offset + 16),
+ GetPaddedMessageWord(message, n, m, offset + 20),
+ GetPaddedMessageWord(message, n, m, offset + 24),
+ GetPaddedMessageWord(message, n, m, offset + 28),
+ GetPaddedMessageWord(message, n, m, offset + 32),
+ GetPaddedMessageWord(message, n, m, offset + 36),
+ GetPaddedMessageWord(message, n, m, offset + 40),
+ GetPaddedMessageWord(message, n, m, offset + 44),
+ GetPaddedMessageWord(message, n, m, offset + 48),
+ GetPaddedMessageWord(message, n, m, offset + 52),
+ GetPaddedMessageWord(message, n, m, offset + 56),
+ GetPaddedMessageWord(message, n, m, offset + 60)};
+ IntermediateData intermediate1 = intermediate0;
+ for (uint32_t i = 0; i < 64; ++i)
+ intermediate1 = ApplyStep(i, data, intermediate1);
+ intermediate0 = Add(intermediate0, intermediate1);
+ }
+ return (static_cast<uint64_t>(SwapEndian(intermediate0.a)) << 32) |
+ static_cast<uint64_t>(SwapEndian(intermediate0.b));
}
- static constexpr uint32_t Hash32(const char* data, uint32_t n) {
- IntermediateData intermediate = ProcessMessage(data, n);
- return SwapEndian(intermediate.a);
+ static constexpr uint32_t Hash32(const char* message, uint32_t n) {
+ const uint32_t m = GetPaddedMessageLength(n);
+ IntermediateData intermediate0 = kInitialIntermediateData;
+ for (uint32_t offset = 0; offset < m; offset += 64) {
+ RoundData data = {
+ GetPaddedMessageWord(message, n, m, offset),
+ GetPaddedMessageWord(message, n, m, offset + 4),
+ GetPaddedMessageWord(message, n, m, offset + 8),
+ GetPaddedMessageWord(message, n, m, offset + 12),
+ GetPaddedMessageWord(message, n, m, offset + 16),
+ GetPaddedMessageWord(message, n, m, offset + 20),
+ GetPaddedMessageWord(message, n, m, offset + 24),
+ GetPaddedMessageWord(message, n, m, offset + 28),
+ GetPaddedMessageWord(message, n, m, offset + 32),
+ GetPaddedMessageWord(message, n, m, offset + 36),
+ GetPaddedMessageWord(message, n, m, offset + 40),
+ GetPaddedMessageWord(message, n, m, offset + 44),
+ GetPaddedMessageWord(message, n, m, offset + 48),
+ GetPaddedMessageWord(message, n, m, offset + 52),
+ GetPaddedMessageWord(message, n, m, offset + 56),
+ GetPaddedMessageWord(message, n, m, offset + 60)};
+ IntermediateData intermediate1 = intermediate0;
+ for (uint32_t i = 0; i < 64; ++i)
+ intermediate1 = ApplyStep(i, data, intermediate1);
+ intermediate0 = Add(intermediate0, intermediate1);
+ }
+ return SwapEndian(intermediate0.a);
}
};
--- a/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
+++ b/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
@@ -26,6 +26,7 @@
#include <string>
#include <vector>
+#include "absl/base/macros.h"
#include "net/third_party/quiche/src/quic/core/quic_tag.h"
#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
@@ -181,8 +182,14 @@ QUIC_EXPORT_PRIVATE constexpr bool ParsedQuicVersionIsValid(
transport_version == QUIC_VERSION_RESERVED_FOR_NEGOTIATION;
if (!transport_version_is_valid) {
// Iterators are not constexpr in C++14 which Chrome uses.
- constexpr auto supported_transport_versions = SupportedTransportVersions();
- for (size_t i = 0; i < supported_transport_versions.size(); ++i) {
+ constexpr QuicTransportVersion supported_transport_versions[] = {
+ QUIC_VERSION_IETF_DRAFT_29,
+ QUIC_VERSION_IETF_DRAFT_27,
+ QUIC_VERSION_51,
+ QUIC_VERSION_50,
+ QUIC_VERSION_46,
+ QUIC_VERSION_43};
+ for (size_t i = 0; i < ABSL_ARRAYSIZE(supported_transport_versions); ++i) {
const QuicTransportVersion& trans_vers = supported_transport_versions[i];
if (trans_vers == transport_version) {
transport_version_is_valid = true;