solenv/gbuild/platform/com_MSC_defs.mk | 18 ++++-------------- vcl/source/window/layout.cxx | 32 +++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 19 deletions(-)
New commits: commit b889b33d928e49ba568ee1277c70d653083a2453 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Thu Feb 22 14:05:24 2024 +0600 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Fri Feb 23 11:23:12 2024 +0100 Do not suppress newer compiler warnings on Windows This partially reverts commit 133610669b8707a278d9b3b0af025779044fd8c5 (windows: silence new warning for now, 2016-02-21). That commit had disabled warnings introduced after VS 2013 (compiler major version 18). For now, it was impossible to remove the -Wv:18 from CLR flags. Also, some warnings in Boost were suppressed in vcl/source/window/layout.cxx: C:\louild\workdir\UnpackedTarballoostoost/multi_array/multi_array_ref.hpp(615): error C2220: the following warning is treated as an error C:\louild\workdir\UnpackedTarballoostoost/multi_array/multi_array_ref.hpp(615): warning C4459: declaration of 'extents' hides global declaration C:\louild\workdir\UnpackedTarballoostoost/multi_array/base.hpp(69): note: see declaration of 'boost::`anonymous-namespace'::extents' C:\louild\workdir\UnpackedTarballoostoost/multi_array/multi_array_ref.hpp(612): note: while compiling class template member function 'boost::multi_array_ref<T,2>::multi_array_ref(T *,const boost::general_storage_order<2> &,const __int64 *,const unsigned __int64 *)' with [ T=`anonymous-namespace'::GridEntry ] C:\louild\workdir\UnpackedTarballoostoost/multi_array.hpp(153): note: see reference to function template instantiation 'boost::multi_array_ref<T,2>::multi_array_ref(T *,const boost::general_storage_order<2> &,const __int64 *,const unsigned __int64 *)' being compiled with [ T=`anonymous-namespace'::GridEntry ] C:\louild\workdir\UnpackedTarballoostoost/multi_array.hpp(122): note: see reference to class template instantiation 'boost::multi_array_ref<T,2>' being compiled with [ T=`anonymous-namespace'::GridEntry ] C:/lo/core/vcl/source/window/layout.cxx(905): note: see reference to class template instantiation 'boost::multi_array<`anonymous-namespace'::GridEntry,2,std::allocator<T>>' being compiled with [ T=`anonymous-namespace'::GridEntry ] Change-Id: Ibf89e3d3e5a2f6a747bb7fbd214a9b27d8068901 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163717 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/solenv/gbuild/platform/com_MSC_defs.mk b/solenv/gbuild/platform/com_MSC_defs.mk index 3bf1a9d0a041..65918fc3da9b 100644 --- a/solenv/gbuild/platform/com_MSC_defs.mk +++ b/solenv/gbuild/platform/com_MSC_defs.mk @@ -122,14 +122,6 @@ gb_CFLAGS := \ gb_CXXFLAGS_DISABLE_WARNINGS = -w -ifneq ($(COM_IS_CLANG),TRUE) - -# clang-cl doesn't support -Wv:18 for now -gb_CFLAGS += \ - -Wv:18 \ - -endif - gb_CXXFLAGS := \ -utf-8 \ $(CXXFLAGS_CXX11) \ @@ -179,12 +171,10 @@ endif ifneq ($(COM_IS_CLANG),TRUE) -# clang-cl doesn't support -Wv:18 for now # Work around MSVC 2017 C4702 compiler bug with release builds # http://document-foundation-mail-archive.969070.n3.nabble.com/Windows-32-bit-build-failure-unreachable-code-tp4243848.html # http://document-foundation-mail-archive.969070.n3.nabble.com/64-bit-Windows-build-failure-after-MSVC-Update-tp4246816.html gb_CXXFLAGS += \ - -Wv:18 \ $(if $(filter 0,$(gb_DEBUGLEVEL)),-wd4702) \ endif @@ -267,8 +257,10 @@ endif gb_LTOFLAGS := $(if $(filter TRUE,$(ENABLE_LTO)),-GL) -# When compiling for CLR, disable "warning C4339: use of undefined type detected -# in CLR meta-data - use of this type may lead to a runtime exception": +# VS2019 produces a warning C4857, that it doesn't support -std:c++20; it can't +# be suppressed by -wd4857, only by -Wv:18. The warning seems incorrect, because +# using -std:c++17 produces errors about undeclated 'char8_t'. VS2022 doesn't +# have the problem, so drop -Wv:18 when bumping baseline. gb_CXXCLRFLAGS := \ $(if $(COM_IS_CLANG), \ $(patsubst -std=%,-std:c++20 -Zc:__cplusplus,$(gb_CXXFLAGS)), \ @@ -277,9 +269,7 @@ gb_CXXCLRFLAGS := \ -AI $(INSTDIR)/$(LIBO_URE_LIB_FOLDER) \ -EHa \ -clr \ - -wd4339 \ -Wv:18 \ - -wd4267 \ -Zc:twoPhase- \ ifeq ($(COM_IS_CLANG),TRUE) diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx index 5639d8e62d57..9e47d6d8f347 100644 --- a/vcl/source/window/layout.cxx +++ b/vcl/source/window/layout.cxx @@ -897,12 +897,15 @@ struct GridEntry typedef boost::multi_array<GridEntry, 2> array_type; -static array_type assembleGrid(const VclGrid &rGrid); -static bool isNullGrid(const array_type& A); -static void calcMaxs(const array_type &A, std::vector<VclGrid::Value> &rWidths, std::vector<VclGrid::Value> &rHeights); - -array_type assembleGrid(const VclGrid &rGrid) +#if defined _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4459) +#endif +static array_type assembleGrid(const VclGrid &rGrid) { +#if defined _MSC_VER +#pragma warning(pop) +#endif array_type A; for (vcl::Window* pChild = rGrid.GetWindow(GetWindowType::FirstChild); pChild; @@ -925,7 +928,14 @@ array_type assembleGrid(const VclGrid &rGrid) A.resize(boost::extents[nCurrentMaxXPos+1][nCurrentMaxYPos+1]); } +#if defined _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4459) +#endif GridEntry &rEntry = A[nLeftAttach][nTopAttach]; +#if defined _MSC_VER +#pragma warning(pop) +#endif rEntry.pChild = pChild; rEntry.nSpanWidth = nWidth; rEntry.nSpanHeight = nHeight; @@ -1045,7 +1055,14 @@ array_type assembleGrid(const VclGrid &rGrid) sal_Int32 nNonEmptyRows = std::count(aNonEmptyRows.begin(), aNonEmptyRows.end(), true); //make new grid without empty rows and columns +#if defined _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4459) +#endif array_type B(boost::extents[nNonEmptyCols][nNonEmptyRows]); +#if defined _MSC_VER +#pragma warning(pop) +#endif for (sal_Int32 x = 0, x2 = 0; x < nMaxX; ++x) { if (!aNonEmptyCols[x]) @@ -1087,10 +1104,15 @@ static void calcMaxs(const array_type &A, std::vector<VclGrid::Value> &rWidths, #if defined __GNUC__ && !defined __clang__ && __GNUC__ == 13 #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdangling-reference" +#elif defined _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4459) #endif const GridEntry &rEntry = A[x][y]; #if defined __GNUC__ && !defined __clang__ && __GNUC__ == 13 #pragma GCC diagnostic pop +#elif defined _MSC_VER +#pragma warning(pop) #endif const vcl::Window *pChild = rEntry.pChild; if (!pChild || !pChild->IsVisible())