[Libreoffice-commits] core.git: config_host/config_global.h.in configure.ac drawinglayer/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Aug 29 06:59:40 UTC 2018


 config_host/config_global.h.in                    |    4 ++++
 configure.ac                                      |   21 +++++++++++++++++++++
 drawinglayer/source/animation/animationtiming.cxx |   10 ++++++++++
 3 files changed, 35 insertions(+)

New commits:
commit dc06c8f4989fc28d0c31ebd333e53dfe0e0f5f66
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Tue Aug 28 22:24:19 2018 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Wed Aug 29 08:59:15 2018 +0200

    -Werror=redundant-move (GCC 9), take two
    
    ...after 5b62a43349da6fda13fb33e0f1ec477c21daec8f "Revert
    '-Werror=redundant-move'" to fix the build for GCC 8.1 again.  Turns out the
    std::move can only be dropped if the compiler has a fix for CWG1579.  For GCC
    that's the case starting with GCC 5.1, so the !HAVE_CXX_GWG1579_FIX case can
    hopefully be removed again soon, see the mail thread starting at
    <https://lists.freedesktop.org/archives/libreoffice/2018-July/080588.html>
    "Compiler baselines (was: [Libreoffice-qa] minutes of ESC call ...)").
    
    Change-Id: I3592cad7fb503db921c37e92831a34785a1054a1
    Reviewed-on: https://gerrit.libreoffice.org/59741
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/config_host/config_global.h.in b/config_host/config_global.h.in
index 2bb60ca656ac..375e610a1180 100644
--- a/config_host/config_global.h.in
+++ b/config_host/config_global.h.in
@@ -26,4 +26,8 @@ Any change in this header will cause a rebuild of almost everything.
 /* Guaranteed copy elision (C++17), __cpp_guaranteed_copy_elision (C++2a): */
 #define HAVE_CPP_GUARANTEED_COPY_ELISION 0
 
+/* Fix for <http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1579> "Return by converting
+   move constructor": */
+#define HAVE_CXX_CWG1579_FIX 0
+
 #endif
diff --git a/configure.ac b/configure.ac
index 4a2d71a04877..4ab159b4146a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6438,6 +6438,27 @@ CXXFLAGS=$save_CXXFLAGS
 AC_LANG_POP([C++])
 AC_SUBST([HAVE_CPP_GUARANTEED_COPY_ELISION])
 
+HAVE_CXX_CWG1579_FIX=
+AC_MSG_CHECKING([whether $CXX has a fix for CWG1579])
+AC_LANG_PUSH([C++])
+save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+        #include <memory>
+        struct S1 {};
+        struct S2: S1 {};
+        std::unique_ptr<S1> f() {
+            std::unique_ptr<S2> s2(new S2);
+            return s2;
+        }
+    ])], [
+        AC_DEFINE([HAVE_CXX_CWG1579_FIX],[1])
+        AC_MSG_RESULT([yes])
+    ], [AC_MSG_RESULT([no])])
+CXXFLAGS=$save_CXXFLAGS
+AC_LANG_POP([C++])
+AC_SUBST([HAVE_CXX_CWG1579_FIX])
+
 dnl ===================================================================
 dnl system stl sanity tests
 dnl ===================================================================
diff --git a/drawinglayer/source/animation/animationtiming.cxx b/drawinglayer/source/animation/animationtiming.cxx
index db629aa8d31f..374def8aed6e 100644
--- a/drawinglayer/source/animation/animationtiming.cxx
+++ b/drawinglayer/source/animation/animationtiming.cxx
@@ -18,6 +18,8 @@
  */
 
 #include <memory>
+
+#include <config_global.h>
 #include <drawinglayer/animation/animationtiming.hxx>
 #include <basegfx/numeric/ftools.hxx>
 #include <o3tl/make_unique.hxx>
@@ -190,7 +192,11 @@ namespace drawinglayer
                 pNew->append(*i);
             }
 
+#if HAVE_CXX_CWG1579_FIX
+            return pNew;
+#else
             return std::move(pNew);
+#endif
         }
 
         bool AnimationEntryList::operator==(const AnimationEntry& rCandidate) const
@@ -283,7 +289,11 @@ namespace drawinglayer
                 pNew->append(*i);
             }
 
+#if HAVE_CXX_CWG1579_FIX
+            return pNew;
+#else
             return std::move(pNew);
+#endif
         }
 
         bool AnimationEntryLoop::operator==(const AnimationEntry& rCandidate) const


More information about the Libreoffice-commits mailing list