From: Simon Marchi Date: Thu, 4 Aug 2022 18:28:25 +0000 (-0400) Subject: Silence -Wunused-but-set-variable error with clang X-Git-Url: https://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=2ea09241f07f1dfd4b6fd0f2f296a10142fda7d2 Silence -Wunused-but-set-variable error with clang When building with clang-15, I get: CXX libctf_parser_la-parser.lo parser.cpp:2920:9: error: variable 'yynerrs' set but not used [-Werror,-Wunused-but-set-variable] int yynerrs; ^ This is because it warns for something like this: int n; n = 0; ++n; whereas previous versions do not. This is generated code, so there's not much more we can do other than silence the warning for the file. Change-Id: If2cffe9042b743ffe4b4b23f751216f67b58e5fa Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/8655 Reviewed-by: Philippe Proulx --- diff --git a/src/common/macros.h b/src/common/macros.h index 34ac393f..6a3e061d 100644 --- a/src/common/macros.h +++ b/src/common/macros.h @@ -81,6 +81,17 @@ extern "C" { ((void) sizeof((void) (_expr1), (void) (_expr2), \ (void) (_expr3), (void) (_expr4), (void) (_expr5), 0)) +#if defined __clang__ +# if __has_warning("-Wunused-but-set-variable") +# define BT_DIAG_IGNORE_UNUSED_BUT_SET_VARIABLE \ + _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") +# endif +#endif + +#if !defined BT_DIAG_IGNORE_UNUSED_BUT_SET_VARIABLE +# define BT_DIAG_IGNORE_UNUSED_BUT_SET_VARIABLE +#endif + #ifdef __cplusplus } #endif diff --git a/src/plugins/ctf/common/metadata/parser.ypp b/src/plugins/ctf/common/metadata/parser.ypp index b644b5d1..e475436e 100644 --- a/src/plugins/ctf/common/metadata/parser.ypp +++ b/src/plugins/ctf/common/metadata/parser.ypp @@ -28,6 +28,12 @@ #include "parser-wrap.hpp" +/* + * Avoid warning about "yynerrs" being unused, seen with bison 3.5.1 + clang 15 + * on Ubuntu 20.04. + */ +BT_DIAG_IGNORE_UNUSED_BUT_SET_VARIABLE + /* Join two lists, put "add" at the end of "head". */ static inline void _bt_list_splice_tail (struct bt_list_head *add, struct bt_list_head *head)