summaryrefslogtreecommitdiff
path: root/vcl/inc/skia
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2023-01-30 17:53:23 +0100
committerStephan Bergmann <sbergman@redhat.com>2023-01-30 18:50:46 +0000
commit440230f1802ce03f83aa92d1b56806e068ce4800 (patch)
tree0e066228a47b3f583ecd51ed2a1b012212f7c46c /vcl/inc/skia
parent2c99e7737ef2b536a4d9f28c3ddd37fe6afa9ceb (diff)
Silence two GCC warnings in Skia include files
Since 9c9a711ac5d8f32ac318d0e4ecab7b3a26bc2150 "Update skia to m111", various versions of GCC produce > In file included from workdir/UnpackedTarball/skia/include/gpu/GrRecordingContext.h:13, > from workdir/UnpackedTarball/skia/include/gpu/GrDirectContext.h:11, > from workdir/UnpackedTarball/skia/tools/sk_app/WindowContext.h:14, > from vcl/inc/skia/utils.hxx:35, > from vcl/skia/SkiaHelper.cxx:34: > workdir/UnpackedTarball/skia/include/private/base/SkTArray.h:520:33: error: ‘cfi’ attribute directive ignored [-Werror=attributes] > 520 | static T* TCast(void* buffer) { > | ^ > workdir/UnpackedTarball/skia/include/private/base/SkTArray.h: In constructor ‘SkSTArray<N, T, MEM_MOVE>::SkSTArray(std::initializer_list<_Up>)’: > workdir/UnpackedTarball/skia/include/private/base/SkTArray.h:654:40: error: declaration of ‘data’ shadows a member of ‘SkSTArray<N, T, MEM_MOVE>’ [-Werror=shadow] > 654 | SkSTArray(std::initializer_list<T> data) : SkSTArray(data.begin(), SkToInt(data.size())) {} > | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ > workdir/UnpackedTarball/skia/include/private/base/SkTArray.h:684:22: note: shadowed declaration is here > 684 | using INHERITED::data; > | ^~~~ The -Werror=attributes is because GCC __attribute__((no_sanitize("..."))) accepts the same values as -fsanitize, but GCC doesn't support Clang's -fsanitize=cfi. The -Werror=shadow is because GCC is somewhat picky about uses of a name for a variable when that name is also brought in by a using declaration from a dependent base, as it /could/ be brought in as a variable (and not just as a function, in which case there would normally be no such shadowing warning): > $ cat test.cc > template<typename> struct SkTArray { void data(); }; > template<typename T> struct SkSTArray: SkTArray<T> { > SkSTArray(int data) { (void) data; } > using SkTArray<T>::data; > }; > $ g++ -Wshadow -fsyntax-only test.cc > test.cc: In constructor ‘SkSTArray<T>::SkSTArray(int)’: > test.cc:3:19: warning: declaration of ‘data’ shadows a member of ‘SkSTArray<T>’ [-Wshadow] > 3 | SkSTArray(int data) { (void) data; } > | ~~~~^~~~ > test.cc:4:24: note: shadowed declaration is here > 4 | using SkTArray<T>::data; > | ^~~~ It feels more natural to silence these warnings at the site including the relevant Skia include files, rather than as a patch to external/skia, as, at least theoretically, we should also be able to build against a system's Skia include files. Change-Id: I0860b6a84e61da656038da8c77f3947d97ad8cf5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146364 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'vcl/inc/skia')
-rw-r--r--vcl/inc/skia/utils.hxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/vcl/inc/skia/utils.hxx b/vcl/inc/skia/utils.hxx
index 355718e8bfa1..3c19192e1c3a 100644
--- a/vcl/inc/skia/utils.hxx
+++ b/vcl/inc/skia/utils.hxx
@@ -32,7 +32,15 @@
#include <premac.h>
#include <SkRegion.h>
#include <SkSurface.h>
+#if defined __GNUC__ && !defined __clang__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wattributes"
+#pragma GCC diagnostic ignored "-Wshadow"
+#endif
#include <tools/sk_app/WindowContext.h>
+#if defined __GNUC__ && !defined __clang__
+#pragma GCC diagnostic pop
+#endif
#include <postmac.h>
#include <string_view>