diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2023-01-30 17:53:23 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2023-01-30 18:50:46 +0000 |
commit | 440230f1802ce03f83aa92d1b56806e068ce4800 (patch) | |
tree | 0e066228a47b3f583ecd51ed2a1b012212f7c46c /vcl/inc/skia | |
parent | 2c99e7737ef2b536a4d9f28c3ddd37fe6afa9ceb (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.hxx | 8 |
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> |