To be able to compile this file with -Werror=implicit-fallthrough, we need to add some fallthrough annotations to the case statements that might fall through. Unfortunately, the typical "/* fallthrough */" comments do not work here as expected since some case labels are wrapped in macros and the compiler fails to match the comments in this case. But using __attribute__((fallthrough)) seems to work fine, so let's use that instead.
Signed-off-by: Thomas Huth <th...@redhat.com> --- tcg/optimize.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tcg/optimize.c b/tcg/optimize.c index 220f4601d5..c2768c9770 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -26,6 +26,12 @@ #include "qemu/osdep.h" #include "tcg/tcg-op.h" +#if __has_attribute(fallthrough) +# define fallthrough() __attribute__((fallthrough)) +#else +# define fallthrough() do {} while (0) +#endif + #define CASE_OP_32_64(x) \ glue(glue(case INDEX_op_, x), _i32): \ glue(glue(case INDEX_op_, x), _i64) @@ -855,6 +861,7 @@ void tcg_optimize(TCGContext *s) if ((arg_info(op->args[1])->mask & 0x80) != 0) { break; } + fallthrough(); CASE_OP_32_64(ext8u): mask = 0xff; goto and_const; @@ -862,6 +869,7 @@ void tcg_optimize(TCGContext *s) if ((arg_info(op->args[1])->mask & 0x8000) != 0) { break; } + fallthrough(); CASE_OP_32_64(ext16u): mask = 0xffff; goto and_const; @@ -869,6 +877,7 @@ void tcg_optimize(TCGContext *s) if ((arg_info(op->args[1])->mask & 0x80000000) != 0) { break; } + fallthrough(); case INDEX_op_ext32u_i64: mask = 0xffffffffU; goto and_const; @@ -886,6 +895,7 @@ void tcg_optimize(TCGContext *s) if ((arg_info(op->args[1])->mask & 0x80000000) != 0) { break; } + fallthrough(); case INDEX_op_extu_i32_i64: /* We do not compute affected as it is a size changing op. */ mask = (uint32_t)arg_info(op->args[1])->mask; -- 2.18.2