Title: [225896] trunk/Source
Revision
225896
Author
utatane....@gmail.com
Date
2017-12-14 00:17:56 -0800 (Thu, 14 Dec 2017)

Log Message

REGRESSION(r225769): Build errors with constexpr std::tie on older gcc
https://bugs.webkit.org/show_bug.cgi?id=180692

Reviewed by Carlos Garcia Campos.

Source/WebCore:

* platform/graphics/FontSelectionAlgorithm.h:
(WebCore::FontSelectionRange::operator== const):
(WebCore::FontSelectionRequest::tied const):
(WebCore::FontSelectionCapabilities::tied const):
(WebCore::FontSelectionSpecifiedCapabilities:: const):

Source/WTF:

Due to libstdc++'s bug[1], std::tie is not annotated with constexpr in libstdc++ 5.
This patch adds WTF::tie for a work around. Since we do not want to
include <tuple> in StdLibExtras.h, we define this function for all
the compilers.

[1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65978

* wtf/StdLibExtras.h:

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (225895 => 225896)


--- trunk/Source/WTF/ChangeLog	2017-12-14 07:45:29 UTC (rev 225895)
+++ trunk/Source/WTF/ChangeLog	2017-12-14 08:17:56 UTC (rev 225896)
@@ -1,3 +1,19 @@
+2017-12-12  Yusuke Suzuki  <utatane....@gmail.com>
+
+        REGRESSION(r225769): Build errors with constexpr std::tie on older gcc
+        https://bugs.webkit.org/show_bug.cgi?id=180692
+
+        Reviewed by Carlos Garcia Campos.
+
+        Due to libstdc++'s bug[1], std::tie is not annotated with constexpr in libstdc++ 5.
+        This patch adds WTF::tie for a work around. Since we do not want to
+        include <tuple> in StdLibExtras.h, we define this function for all
+        the compilers.
+
+        [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65978
+
+        * wtf/StdLibExtras.h:
+
 2017-12-13  Mark Lam  <mark....@apple.com>
 
         Fill out some Poisoned APIs, fix some bugs, and add some tests.

Modified: trunk/Source/WTF/wtf/StdLibExtras.h (225895 => 225896)


--- trunk/Source/WTF/wtf/StdLibExtras.h	2017-12-14 07:45:29 UTC (rev 225895)
+++ trunk/Source/WTF/wtf/StdLibExtras.h	2017-12-14 08:17:56 UTC (rev 225896)
@@ -445,6 +445,14 @@
     return dstIter;
 }
 
+// libstdc++5 does not have constexpr std::tie. Since we cannot redefine std::tie with constexpr, we define WTF::tie instead.
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65978
+template <class ...Args>
+inline constexpr std::tuple<Args&...> tie(Args&... values) noexcept
+{
+    return std::tuple<Args&...>(values...);
+}
+
 } // namespace WTF
 
 // This version of placement new omits a 0 check.

Modified: trunk/Source/WebCore/ChangeLog (225895 => 225896)


--- trunk/Source/WebCore/ChangeLog	2017-12-14 07:45:29 UTC (rev 225895)
+++ trunk/Source/WebCore/ChangeLog	2017-12-14 08:17:56 UTC (rev 225896)
@@ -1,3 +1,16 @@
+2017-12-12  Yusuke Suzuki  <utatane....@gmail.com>
+
+        REGRESSION(r225769): Build errors with constexpr std::tie on older gcc
+        https://bugs.webkit.org/show_bug.cgi?id=180692
+
+        Reviewed by Carlos Garcia Campos.
+
+        * platform/graphics/FontSelectionAlgorithm.h:
+        (WebCore::FontSelectionRange::operator== const):
+        (WebCore::FontSelectionRequest::tied const):
+        (WebCore::FontSelectionCapabilities::tied const):
+        (WebCore::FontSelectionSpecifiedCapabilities:: const):
+
 2017-12-13  Daniel Bates  <daba...@apple.com>
 
         Fix the Windows build after <https://trac.webkit.org/changeset/225879>

Modified: trunk/Source/WebCore/platform/graphics/FontSelectionAlgorithm.h (225895 => 225896)


--- trunk/Source/WebCore/platform/graphics/FontSelectionAlgorithm.h	2017-12-14 07:45:29 UTC (rev 225895)
+++ trunk/Source/WebCore/platform/graphics/FontSelectionAlgorithm.h	2017-12-14 08:17:56 UTC (rev 225896)
@@ -283,7 +283,7 @@
 
     constexpr bool operator==(const FontSelectionRange& other) const
     {
-        return std::tie(minimum, maximum) == std::tie(other.minimum, other.maximum);
+        return WTF::tie(minimum, maximum) == WTF::tie(other.minimum, other.maximum);
     }
 
     constexpr bool isValid() const
@@ -334,7 +334,7 @@
 
     constexpr std::tuple<Value, Value, Value> tied() const
     {
-        return std::tie(weight, width, slope);
+        return WTF::tie(weight, width, slope);
     }
 
 #if !COMPILER_SUPPORTS(NSDMI_FOR_AGGREGATES)
@@ -371,7 +371,7 @@
 
     constexpr std::tuple<Range, Range, Range> tied() const
     {
-        return std::tie(weight, width, slope);
+        return WTF::tie(weight, width, slope);
     }
 
     void expand(const FontSelectionCapabilities& capabilities)
@@ -419,12 +419,12 @@
 
     constexpr std::tuple<OptionalRange&, OptionalRange&, OptionalRange&> tied()
     {
-        return std::tie(weight, width, slope);
+        return WTF::tie(weight, width, slope);
     }
 
     constexpr std::tuple<const OptionalRange&, const OptionalRange&, const OptionalRange&> tied() const
     {
-        return std::tie(weight, width, slope);
+        return WTF::tie(weight, width, slope);
     }
 
     FontSelectionSpecifiedCapabilities& operator=(const Capabilities& other)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to