From: Thomas Huth <thuth@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>, qemu-devel@nongnu.org
Cc: "Chen Qun" <kuhn.chenqun@huawei.com>,
"Alex Bennée" <alex.bennee@linaro.org>
Subject: [PULL 10/12] tcg/optimize: Add fallthrough annotations
Date: Wed, 16 Dec 2020 18:29:47 +0100 [thread overview]
Message-ID: <20201216172949.57380-11-thuth@redhat.com> (raw)
In-Reply-To: <20201216172949.57380-1-thuth@redhat.com>
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 (by introducing a new QEMU_FALLTHROUGH
macro in our compiler.h header file).
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20201211152426.350966-11-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
include/qemu/compiler.h | 11 +++++++++++
tcg/optimize.c | 4 ++++
2 files changed, 15 insertions(+)
diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
index 1b9e58e82b..df9ec08f8a 100644
--- a/include/qemu/compiler.h
+++ b/include/qemu/compiler.h
@@ -222,4 +222,15 @@ extern void QEMU_NORETURN QEMU_ERROR("code path is reachable")
#define qemu_build_not_reached() g_assert_not_reached()
#endif
+/**
+ * In most cases, normal "fallthrough" comments are good enough for
+ * switch-case statements, but sometimes the compiler has problems
+ * with those. In that case you can use QEMU_FALLTHROUGH instead.
+ */
+#if __has_attribute(fallthrough)
+# define QEMU_FALLTHROUGH __attribute__((fallthrough))
+#else
+# define QEMU_FALLTHROUGH do {} while (0) /* fallthrough */
+#endif
+
#endif /* COMPILER_H */
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 220f4601d5..7ca71de956 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -855,6 +855,7 @@ void tcg_optimize(TCGContext *s)
if ((arg_info(op->args[1])->mask & 0x80) != 0) {
break;
}
+ QEMU_FALLTHROUGH;
CASE_OP_32_64(ext8u):
mask = 0xff;
goto and_const;
@@ -862,6 +863,7 @@ void tcg_optimize(TCGContext *s)
if ((arg_info(op->args[1])->mask & 0x8000) != 0) {
break;
}
+ QEMU_FALLTHROUGH;
CASE_OP_32_64(ext16u):
mask = 0xffff;
goto and_const;
@@ -869,6 +871,7 @@ void tcg_optimize(TCGContext *s)
if ((arg_info(op->args[1])->mask & 0x80000000) != 0) {
break;
}
+ QEMU_FALLTHROUGH;
case INDEX_op_ext32u_i64:
mask = 0xffffffffU;
goto and_const;
@@ -886,6 +889,7 @@ void tcg_optimize(TCGContext *s)
if ((arg_info(op->args[1])->mask & 0x80000000) != 0) {
break;
}
+ QEMU_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.27.0
next prev parent reply other threads:[~2020-12-16 17:42 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-16 17:29 [PULL 00/12] Compile QEMU with -Wimplicit-fallthrough Thomas Huth
2020-12-16 17:29 ` [PULL 01/12] disas/libvixl: Fix fall-through annotation for GCC >= 7 Thomas Huth
2020-12-16 17:29 ` [PULL 02/12] target/unicore32/translate: Add missing fallthrough annotations Thomas Huth
2020-12-16 17:29 ` [PULL 03/12] hw/rtc/twl92230: Silence warnings about missing fallthrough statements Thomas Huth
2020-12-16 17:29 ` [PULL 04/12] hw/timer/renesas_tmr: silence the compiler warnings Thomas Huth
2020-12-16 17:29 ` [PULL 05/12] target/i386: silence the compiler warnings in gen_shiftd_rm_T1 Thomas Huth
2020-12-16 17:29 ` [PULL 06/12] hw/intc/arm_gicv3_kvm: silence the compiler warnings Thomas Huth
2020-12-16 17:29 ` [PULL 07/12] accel/tcg/user-exec: " Thomas Huth
2020-12-16 17:29 ` [PULL 08/12] target/sparc/translate: " Thomas Huth
2020-12-16 17:29 ` [PULL 09/12] target/sparc/win_helper: " Thomas Huth
2020-12-16 17:29 ` Thomas Huth [this message]
2020-12-16 17:29 ` [PULL 11/12] tests/fp: Do not emit implicit-fallthrough warnings in the softfloat tests Thomas Huth
2020-12-16 17:29 ` [PULL 12/12] configure: Compile with -Wimplicit-fallthrough=2 Thomas Huth
2020-12-16 23:01 ` [PULL 00/12] Compile QEMU with -Wimplicit-fallthrough no-reply
2020-12-17 6:09 ` Thomas Huth
2020-12-17 12:51 ` Peter Maydell
2020-12-17 13:03 ` Thomas Huth
2020-12-17 14:00 ` Status/future of QEMU bsd-user impl ? (Wea Re: [PULL 00/12] Compile QEMU with -Wimplicit-fallthrough) Daniel P. Berrangé
2020-12-17 16:03 ` Warner Losh
2020-12-17 16:20 ` Peter Maydell
2020-12-17 17:10 ` Warner Losh
2020-12-17 17:59 ` Warner Losh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201216172949.57380-11-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=kuhn.chenqun@huawei.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.