Building QEMU on fedora26 with the latest gcc package fails: CC ppc64-softmmu/target/ppc/kvm.o In file included from include/sysemu/hw_accel.h:16:0, from target/ppc/kvm.c:31: target/ppc/kvm.c: In function ‘kvmppc_booke_watchdog_enable’: include/sysemu/kvm.h:449:35: error: ‘args_tmp[i]’ may be used uninitialized in this function [-Werror=maybe-uninitialized] cap.args[i] = args_tmp[i]; \ ^ target/ppc/kvm.c: In function ‘kvmppc_set_papr’: include/sysemu/kvm.h:449:35: error: ‘args_tmp[i]’ may be used uninitialized in this function [-Werror=maybe-uninitialized] cc1: all warnings being treated as errors
$ rpm -q gcc gcc-7.1.1-3.fc26.ppc64le Testing the size of args_tmp seems to be enough to prevent the warning to pop up. Signed-off-by: Greg Kurz <gr...@kaod.org> --- include/sysemu/kvm.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index 91fc07ee9afe..41fc1005a9ea 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -429,9 +429,11 @@ int kvm_vm_check_extension(KVMState *s, unsigned int extension); }; \ uint64_t args_tmp[] = { __VA_ARGS__ }; \ int i; \ - for (i = 0; i < (int)ARRAY_SIZE(args_tmp) && \ + if (sizeof(args_tmp)) { \ + for (i = 0; i < (int)ARRAY_SIZE(args_tmp) && \ i < ARRAY_SIZE(cap.args); i++) { \ - cap.args[i] = args_tmp[i]; \ + cap.args[i] = args_tmp[i]; \ + } \ } \ kvm_vm_ioctl(s, KVM_ENABLE_CAP, &cap); \ }) @@ -444,9 +446,11 @@ int kvm_vm_check_extension(KVMState *s, unsigned int extension); }; \ uint64_t args_tmp[] = { __VA_ARGS__ }; \ int i; \ - for (i = 0; i < (int)ARRAY_SIZE(args_tmp) && \ + if (sizeof(args_tmp)) { \ + for (i = 0; i < (int)ARRAY_SIZE(args_tmp) && \ i < ARRAY_SIZE(cap.args); i++) { \ - cap.args[i] = args_tmp[i]; \ + cap.args[i] = args_tmp[i]; \ + } \ } \ kvm_vcpu_ioctl(cpu, KVM_ENABLE_CAP, &cap); \ })