[PATCH 52/59] termios: Suppress clang -Winitializer-overrider on ___cbaud_to_speed
Collin Funk
collin.funk1@gmail.com
Mon Oct 20 19:20:03 GMT 2025
Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
> clang-18 and onwards issues:
>
> ../sysdeps/unix/sysv/linux/speed.c:71:23: error: initializer overrides prior initialization of this subobject [-Werror,-Winitializer-overrides]
> 71 | [_cbix(__B0)] = 0,
> | ^
> ../sysdeps/unix/sysv/linux/speed.c:70:34: note: previous initialization is here
> 70 | [0 ... _cbix(CBAUDMASK)] = -1,
> [...]
>
> The override is explicit used to support the same initialization on
> multiple platforms (since the baud values differ on alpha and powerpc).
> ---
> sysdeps/unix/sysv/linux/speed.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/sysdeps/unix/sysv/linux/speed.c b/sysdeps/unix/sysv/linux/speed.c
> index 4efb0ded59b..3882d4ed329 100644
> --- a/sysdeps/unix/sysv/linux/speed.c
> +++ b/sysdeps/unix/sysv/linux/speed.c
> @@ -17,6 +17,7 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <termios_internals.h>
> +#include <libc-diag.h>
>
> /* Conversions between legacy c_cflag fields and actual baud rates */
>
> @@ -60,6 +61,10 @@
> speed_t
> ___cbaud_to_speed (tcflag_t c_cflag, speed_t other)
> {
> + /* The override is explicit used to support the same initialization on
> + multiple platforms. */
> + DIAG_PUSH_NEEDS_COMMENT_CLANG;
> + DIAG_IGNORE_NEEDS_COMMENT_CLANG (18, "-Winitializer-overrides");
> static const speed_t cbaudix_to_speed [] =
> {
> [0 ... _cbix(CBAUDMASK)] = -1,
> @@ -124,6 +129,7 @@ ___cbaud_to_speed (tcflag_t c_cflag, speed_t other)
> [_cbix(__B4000000)] = 4000000,
> #endif
> };
> + DIAG_POP_NEEDS_COMMENT_CLANG;
> speed_t speed;
>
> if (c_cflag & (tcflag_t)(~CBAUDMASK))
Makes sense.
Reviewed-by: Collin Funk <collin.funk1@gmail.com>
Collin
More information about the Libc-alpha
mailing list