summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'www-client/chromium/files/chromium-112-swiftshader.patch')
-rw-r--r--www-client/chromium/files/chromium-112-swiftshader.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/www-client/chromium/files/chromium-112-swiftshader.patch b/www-client/chromium/files/chromium-112-swiftshader.patch
new file mode 100644
index 000000000000..5f703d919555
--- /dev/null
+++ b/www-client/chromium/files/chromium-112-swiftshader.patch
@@ -0,0 +1,74 @@
+https://bugs.gentoo.org/904725
+
+From 451fb9470e4e1cd183ff05d5e171dc21bae6e47c Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Thu, 16 Mar 2023 13:29:48 +0100
+Subject: [PATCH] Another C++20 fix for GCC
+
+This is a direct backport of commit 95d0d8e9e9d10da3cfa503fbba405e740aea3cc1
+from Richard Smith:
+ From: Richard Smith <richard@metafoo.co.uk>
+ Date: Tue, 23 Feb 2021 14:07:13 -0800
+ Subject: Fix constructor declarations that are invalid in C++20 onwards.
+
+ Fix constructor declarations that are invalid in C++20 onwards.
+
+ Under C++ CWG DR 2237, the constructor for a class template C must be
+ written as 'C(...)' not as 'C<T>(...)'. This fixes a build failure with
+ GCC in C++20 mode.
+
+ In passing, remove some other redundant '<T>' qualification from the
+ affected classes.
+
+Bug: chromium:819294
+Change-Id: I51a7f069d355d4932f4b50640fedbba1d5773f0b
+Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/71088
+Kokoro-Result: kokoro <noreply+kokoro@google.com>
+Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
+Tested-by: Shahbaz Youssefi <syoussefi@google.com>
+Commit-Queue: Shahbaz Youssefi <syoussefi@google.com>
+---
+
+diff --git a/third_party/llvm-10.0/llvm/include/llvm/ADT/STLExtras.h b/third_party/llvm-10.0/llvm/include/llvm/ADT/STLExtras.h
+index 620209b..d0a48e8 100644
+--- a/third_party/swiftshader/third_party/llvm-10.0/llvm/include/llvm/ADT/STLExtras.h
++++ b/third_party/swiftshader/third_party/llvm-10.0/llvm/include/llvm/ADT/STLExtras.h
+@@ -1415,9 +1415,9 @@
+ result_pair(std::size_t Index, IterOfRange<R> Iter)
+ : Index(Index), Iter(Iter) {}
+
+- result_pair<R>(const result_pair<R> &Other)
++ result_pair(const result_pair<R> &Other)
+ : Index(Other.Index), Iter(Other.Iter) {}
+- result_pair<R> &operator=(const result_pair<R> &Other) {
++ result_pair &operator=(const result_pair &Other) {
+ Index = Other.Index;
+ Iter = Other.Iter;
+ return *this;
+@@ -1451,22 +1451,22 @@
+ result_type &operator*() { return Result; }
+ const result_type &operator*() const { return Result; }
+
+- enumerator_iter<R> &operator++() {
++ enumerator_iter &operator++() {
+ assert(Result.Index != std::numeric_limits<size_t>::max());
+ ++Result.Iter;
+ ++Result.Index;
+ return *this;
+ }
+
+- bool operator==(const enumerator_iter<R> &RHS) const {
++ bool operator==(const enumerator_iter &RHS) const {
+ // Don't compare indices here, only iterators. It's possible for an end
+ // iterator to have different indices depending on whether it was created
+ // by calling std::end() versus incrementing a valid iterator.
+ return Result.Iter == RHS.Result.Iter;
+ }
+
+- enumerator_iter<R>(const enumerator_iter<R> &Other) : Result(Other.Result) {}
+- enumerator_iter<R> &operator=(const enumerator_iter<R> &Other) {
++ enumerator_iter(const enumerator_iter &Other) : Result(Other.Result) {}
++ enumerator_iter &operator=(const enumerator_iter &Other) {
+ Result = Other.Result;
+ return *this;
+ }