summaryrefslogtreecommitdiffstats
path: root/libraries/qt5/patches/qt-5.7.1_gcc-7.patch
blob: 4eb4ca804114d02e8ca82cf8ab9e724d71cd4ef1 (plain)
From 64fdd317d4127142ad9e967197a2df6ac81ef55f Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Wed, 29 Mar 2017 17:42:18 +0200
Subject: [PATCH] Fix build with GCC 7.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes some ambiguities and outright wrong code GCC 7 doesn't accept but
earlier compilers did.

Task-number:QTBUG-59776
Change-Id: I012f121842ac6cde49db0d571efc62aabe2115e3
Reviewed-by: Michael Brüning <michael.bruning@qt.io>
---
 .../mojo/public/cpp/bindings/interface_ptr_info.h     |  2 +-
 .../third_party/WebKit/Source/wtf/LinkedHashSet.h     |  2 ++
 chromium/v8/src/objects-body-descriptors.h            |  2 +-
 chromium/v8/src/objects-inl.h                         | 19 +++++++++++++++++++
 chromium/v8/src/objects.h                             | 16 ++--------------
 5 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/chromium/mojo/public/cpp/bindings/interface_ptr_info.h b/chromium/mojo/public/cpp/bindings/interface_ptr_info.h
index 5bd29d542d..c94a5acdcd 100644
--- a/chromium/mojo/public/cpp/bindings/interface_ptr_info.h
+++ b/chromium/mojo/public/cpp/bindings/interface_ptr_info.h
@@ -34,7 +34,7 @@ class InterfacePtrInfo {
 
   InterfacePtrInfo& operator=(InterfacePtrInfo&& other) {
     if (this != &other) {
-      handle_ = other.handle_.Pass();
+      handle_ = std::move(other.handle_);
       version_ = other.version_;
       other.version_ = 0u;
     }
diff --git a/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h b/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
index 58d97fbaac..839c7df114 100644
--- a/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
+++ b/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
@@ -495,6 +495,8 @@ inline LinkedHashSet<T, U, V, W>& LinkedHashSet<T, U, V, W>::operator=(const Lin
     return *this;
 }
 
+inline void swapAnchor(LinkedHashSetNodeBase& a, LinkedHashSetNodeBase& b);
+
 template<typename T, typename U, typename V, typename W>
 inline void LinkedHashSet<T, U, V, W>::swap(LinkedHashSet& other)
 {
diff --git a/chromium/v8/src/objects-body-descriptors.h b/chromium/v8/src/objects-body-descriptors.h
index 91cb8883be..a1c3634bd7 100644
--- a/chromium/v8/src/objects-body-descriptors.h
+++ b/chromium/v8/src/objects-body-descriptors.h
@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public BodyDescriptorBase {
 
   template <typename StaticVisitor>
   static inline void IterateBody(HeapObject* obj, int object_size) {
-    IterateBody(obj);
+    IterateBody<StaticVisitor>(obj);
   }
 };
 
diff --git a/chromium/v8/src/objects-inl.h b/chromium/v8/src/objects-inl.h
index 177c0294dc..baca18d0ef 100644
--- a/chromium/v8/src/objects-inl.h
+++ b/chromium/v8/src/objects-inl.h
@@ -3122,6 +3122,25 @@ void HashTableBase::SetNumberOfDeletedElements(int nod) {
 
 
 template <typename Derived, typename Shape, typename Key>
+inline uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
+  if (Shape::UsesSeed) {
+    return Shape::SeededHash(key, GetHeap()->HashSeed());
+  } else {
+    return Shape::Hash(key);
+  }
+}
+
+template <typename Derived, typename Shape, typename Key>
+inline uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key, Object* object) {
+  if (Shape::UsesSeed) {
+    return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
+  } else {
+    return Shape::HashForObject(key, object);
+  }
+}
+
+
+template <typename Derived, typename Shape, typename Key>
 int HashTable<Derived, Shape, Key>::FindEntry(Key key) {
   return FindEntry(GetIsolate(), key);
 }
diff --git a/chromium/v8/src/objects.h b/chromium/v8/src/objects.h
index 0111c71311..d737a18fe9 100644
--- a/chromium/v8/src/objects.h
+++ b/chromium/v8/src/objects.h
@@ -3157,21 +3157,9 @@ template <typename Derived, typename Shape, typename Key>
 class HashTable : public HashTableBase {
  public:
   // Wrapper methods
-  inline uint32_t Hash(Key key) {
-    if (Shape::UsesSeed) {
-      return Shape::SeededHash(key, GetHeap()->HashSeed());
-    } else {
-      return Shape::Hash(key);
-    }
-  }
+  inline uint32_t Hash(Key key);
 
-  inline uint32_t HashForObject(Key key, Object* object) {
-    if (Shape::UsesSeed) {
-      return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-    } else {
-      return Shape::HashForObject(key, object);
-    }
-  }
+  inline uint32_t HashForObject(Key key, Object* object);
 
   // Returns a new HashTable object.
   MUST_USE_RESULT static Handle<Derived> New(
-- 
2.12.2