tst_qxp_is_virtual_base_of: disable all warnings for GCC < 10

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 a1bdee4697.

Change-Id: I12eb1f8d486b1e2413675991659bf9ad3a7869ae
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
Marc Mutz 2023-11-10 11:00:29 +01:00
parent ddce99989f
commit 51c75ae2ff

View File

@ -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
)