The current "#ifdef TARGET_X86_64" statement affects the compiler's determination of fall through.
When using -Wimplicit-fallthrough in our CFLAGS on GCC9, the compiler showed warning: target/i386/translate.c: In function ‘gen_shiftd_rm_T1’: target/i386/translate.c:1773:12: warning: this statement may fall through [-Wimplicit-fallthrough=] if (is_right) { ^ target/i386/translate.c:1782:5: note: here case MO_32: ^~~~ Reported-by: Euler Robot <euler.ro...@huawei.com> Signed-off-by: Chen Qun <kuhn.chen...@huawei.com> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> Reviewed-by: Thomas Huth <th...@redhat.com> --- v1->v2: Add comments to explain the two case of fall through, depending on whether TARGET_X86_64 is defined. Cc: Thomas Huth <th...@redhat.com> Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: Richard Henderson <richard.hender...@linaro.org> Cc: Eduardo Habkost <ehabk...@redhat.com> --- target/i386/translate.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index caea6f5fb1..77cb66208e 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -1777,9 +1777,12 @@ static void gen_shiftd_rm_T1(DisasContext *s, MemOp ot, int op1, } else { tcg_gen_deposit_tl(s->T1, s->T0, s->T1, 16, 16); } - /* FALLTHRU */ -#ifdef TARGET_X86_64 + /* + * If TARGET_X86_64 defined then fall through into MO_32 case, + * otherwise fall through default case. + */ case MO_32: +#ifdef TARGET_X86_64 /* Concatenate the two 32-bit values and use a 64-bit shift. */ tcg_gen_subi_tl(s->tmp0, count, 1); if (is_right) { -- 2.27.0