[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 04/16] compiler.h: add QEMU_{BEGIN, END}_IGNORE_INITIALIZER_O
From: |
Peter Maydell |
Subject: |
Re: [PATCH 04/16] compiler.h: add QEMU_{BEGIN, END}_IGNORE_INITIALIZER_OVERRIDES |
Date: |
Wed, 4 May 2022 19:41:13 +0100 |
On Wed, 4 May 2022 at 18:36, <marcandre.lureau@redhat.com> wrote:
>
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> clang has this default warning which QEMU codes triggers in many
> situations. However, other projects in general may not want to disable
> globally the warning but only in limited specific code blocks.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> +#if defined (__clang__)
> +#define QEMU_BEGIN_IGNORE_INITIALIZER_OVERRIDES \
> + _Pragma("clang diagnostic push") \
> + _Pragma("clang diagnostic ignored \"-Winitializer-overrides\"")
> +#define QEMU_END_IGNORE_INITIALIZER_OVERRIDES \
> + _Pragma("clang diagnostic pop")
> +#else
> +#define QEMU_BEGIN_IGNORE_INITIALIZER_OVERRIDES
> +#define QEMU_END_IGNORE_INITIALIZER_OVERRIDES
> +#endif
We use pragma diagnostic controls generally sparingly and
only when we need to briefly disable an otherwise widely
useful warning. In this case the clang warning is just
broken (because it doesn't correctly handle the array
range initializer extension we use), and so we turn off
the warning altogether in configure, so that we get the
behaviour we want everywhere in the source tree, not just
if we mark it up with special macros.
If other projects want to borrow bits of QEMU code then
they need to either (a) abide by our conventions for
what compiler warnings to enable or disable, or else
(b) fork the code and fiddle with their own copy.
I don't really want to see QEMU's source code get littered
with a pile of extra macros hiding diagnostic pragmas.
(If we stop passing -Wno-initializer-overrides to the
compiler then we set a bunch of new "built on gcc on the
developer's machine but fails to build on clang in the
CI jobs" traps for ourselves, and if we don't stop passing
that then the places that should be marked up with the
macros won't reliably be marked up.)
thanks
-- PMM
- [PATCH 00/16] Misc cleanups, marcandre . lureau, 2022/05/04
- [PATCH 01/16] include: move qemu_*_exec_dir() to cutils, marcandre . lureau, 2022/05/04
- [PATCH 02/16] util/win32: simplify qemu_get_local_state_dir(), marcandre . lureau, 2022/05/04
- [PATCH 03/16] tests: make libqmp buildable for win32, marcandre . lureau, 2022/05/04
- [PATCH 04/16] compiler.h: add QEMU_{BEGIN, END}_IGNORE_INITIALIZER_OVERRIDES, marcandre . lureau, 2022/05/04
- Re: [PATCH 04/16] compiler.h: add QEMU_{BEGIN, END}_IGNORE_INITIALIZER_OVERRIDES,
Peter Maydell <=
- [PATCH 05/16] qobject/json-lexer: disable -Winitializer-overrides warnings, marcandre . lureau, 2022/05/04
- [PATCH 06/16] include: adjust header guards after renaming, marcandre . lureau, 2022/05/04
- [PATCH 07/16] qga: flatten safe_open_or_create(), marcandre . lureau, 2022/05/04
- [PATCH 09/16] qga: use qemu_open_cloexec() for safe_open_or_create(), marcandre . lureau, 2022/05/04
- [PATCH 08/16] osdep: export qemu_open_cloexec(), marcandre . lureau, 2022/05/04
- [PATCH 10/16] qapi/error: add g_autoptr(Error) support, marcandre . lureau, 2022/05/04
- [PATCH 11/16] qga: replace qemu_open_old() with qemu_open_cloexec(), marcandre . lureau, 2022/05/04