diff options
-rw-r--r-- | config_host/config_global.h.in | 18 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | editeng/source/editeng/editeng.cxx | 2 |
3 files changed, 18 insertions, 6 deletions
diff --git a/config_host/config_global.h.in b/config_host/config_global.h.in index 5b04594c12f5..f7672d211647 100644 --- a/config_host/config_global.h.in +++ b/config_host/config_global.h.in @@ -32,8 +32,20 @@ Any change in this header will cause a rebuild of almost everything. // Useable C++2a <span>: #define HAVE_CPP_SPAN 0 -/* GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87150> "move ctor wrongly chosen in return - stmt (derived vs. base)": */ -#define HAVE_GCC_BUG_87150 0 +/* "CWG motion 23: P1825R0 'Merged wording for P0527R1 and P1155R3' (DR)" in + <https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/n4829.html> "N4829 Editors' Report -- + Programming Languages -- C++" marks + <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1155r3.html> "More implicit moves" as a + DR. Some versions of GCC already implemented it prior to the fix for + <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87150> "move ctor wrongly chosen in return stmt + (derived vs. base)"; MSVC++ 14.24 started to implement it, see <https:// + developercommunity.visualstudio.com/content/problem/852827/ + msvc-1424-started-to-chose-move-ctor-in-return-der.html> "MSVC++ 14.24 started to chose move ctor + in return derived vs. base". At least Clang 9, which does not implement it, emits + -Werror,-Wreturn-std-move when it therefore considers a std::move to be missing. On the other + hand, at least some versions of GCC would emit -Werror=redundant-move in places where such a + std::move would be added unconditionally, see c00948d9bd35dfb15a331c2163f32e9ee24644fd "Silence + bogus -Werror=redundant-move (GCC 9)". */ +#define HAVE_P1155R3 0 #endif diff --git a/configure.ac b/configure.ac index adde073750e1..60c78636f363 100644 --- a/configure.ac +++ b/configure.ac @@ -6717,7 +6717,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([ CXXFLAGS=$save_CXXFLAGS AC_LANG_POP([C++]) -AC_MSG_CHECKING([whether $CXX_BASE has GCC bug 87150]) +AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3]) AC_LANG_PUSH([C++]) save_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" @@ -6726,7 +6726,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([ struct S2: S1 {}; S1 f(S2 s) { return s; } ])], [ - AC_DEFINE([HAVE_GCC_BUG_87150],[1]) + AC_DEFINE([HAVE_P1155R3],[1]) AC_MSG_RESULT([yes]) ], [AC_MSG_RESULT([no])]) CXXFLAGS=$save_CXXFLAGS diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 2cf4d88a9e6d..c75fcf90e5ea 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -2637,7 +2637,7 @@ vcl::Font EditEngine::CreateFontFromItemSet( const SfxItemSet& rItemSet, SvtScri { SvxFont aFont; CreateFont( aFont, rItemSet, true, nScriptType ); -#if HAVE_GCC_BUG_87150 +#if HAVE_P1155R3 return aFont; #else return std::move(aFont); |