On Wed, 2 Nov 2022 16:05:01 +0800 hbuxiaofei <hbuxiaofei@xxxxxxxxx> wrote: Hi, > GCC Version: > gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1) > > hw/i8042.c: In function ‘kbd_io’: > hw/i8042.c:153:19: error: ‘value’ may be used uninitialized in this function [-Werror=maybe-uninitialized] > state.write_cmd = val; > ~~~~~~~~~~~~~~~~^~~~~ > hw/i8042.c:298:5: note: ‘value’ was declared here > u8 value; > ^~~~~ > cc1: all warnings being treated as errors > make: *** [Makefile:508: hw/i8042.o] Error 1 Yeah, I have seen this with the Ubuntu 18.04 GCC as well (Ubuntu 7.5.0-3ubuntu1-18.04), when compiling for x86. It's pretty clearly a compiler bug (or rather inability to see through all the branches), but as the code currently stands, value will always be initialised. So while it's easy to brush this off as "go and fix your compiler", for users of Ubuntu 18.04 and RedHat 8 that's probably not an easy thing to do. So since we force breakage on people by using Werror, I'd support the idea of taking this patch, potentially with a comment, to make people's life easier. Cheers, Andre > Signed-off-by: hbuxiaofei <hbuxiaofei@xxxxxxxxx> > --- > hw/i8042.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/i8042.c b/hw/i8042.c > index 20be36c..6e4b559 100644 > --- a/hw/i8042.c > +++ b/hw/i8042.c > @@ -295,7 +295,7 @@ static void kbd_reset(void) > static void kbd_io(struct kvm_cpu *vcpu, u64 addr, u8 *data, u32 len, > u8 is_write, void *ptr) > { > - u8 value; > + u8 value = 0; > > if (is_write) > value = ioport__read8(data);