From 51c75ae2ff4f19d8ea7f823f40b3d5027b3f08a1 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 10 Nov 2023 11:00:29 +0100 Subject: [PATCH] tst_qxp_is_virtual_base_of: disable all warnings for GCC < 10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The -Winaccessible-base switch was added for GCC 10. Older GCCs had no way to suppress the warnings, and the existing suppression of -Winaccessible-base caused a warning of its own: qcompilerdetection.h:1125:49: warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas] 1125 | #define QT_DO_PRAGMA(text) _Pragma(#text) | ^~~~~~~ qcompilerdetection.h:1150:49: note: in expansion of macro ‘QT_DO_PRAGMA’ 1150 | # define QT_WARNING_DISABLE_GCC(text) QT_DO_PRAGMA(GCC diagnostic ignored text) | ^~~~~~~~~~~~ tst_is_virtual_base_of.cpp:53:1: note: in expansion of macro ‘QT_WARNING_DISABLE_GCC’ 53 | QT_WARNING_DISABLE_GCC("-Winaccessible-base") | ^~~~~~~~~~~~~~~~~~~~~~ Since GCC 8 and 9 are slowly fading away as supported compilers, the simplest fix to get a clean build is to suppress all warnings for the test on these compilers, by passing -w, as suggested by https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90449. Short of moving the affected code into a separate header file and applying `#pragma GCC system_header` to it, there appears to be no other way to get rid of the warning. Amends a1bdee4697b7125bd0972284bfb33a56fcb441aa. Change-Id: I12eb1f8d486b1e2413675991659bf9ad3a7869ae Reviewed-by: Alexey Edelev --- .../corelib/global/qxp/is_virtual_base_of/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/auto/corelib/global/qxp/is_virtual_base_of/CMakeLists.txt b/tests/auto/corelib/global/qxp/is_virtual_base_of/CMakeLists.txt index 5762a32f48..85a6daab7c 100644 --- a/tests/auto/corelib/global/qxp/is_virtual_base_of/CMakeLists.txt +++ b/tests/auto/corelib/global/qxp/is_virtual_base_of/CMakeLists.txt @@ -14,3 +14,10 @@ qt_internal_add_test(tst_qxp_is_virtual_base_of LIBRARIES Qt::Core ) + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90449 +# GCCs < 10 have no way to suppress "inaccessible base" warnings, except by disabling all warnings: +qt_internal_extend_target(tst_qxp_is_virtual_base_of + CONDITION GCC AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10") + COMPILE_OPTIONS -w +)