Am 18.06.2013 12:13, schrieb Paolo Bonzini: > Il 07/06/2013 14:17, Markus Armbruster ha scritto: >>> diff --git a/util/iov.c b/util/iov.c >>> index cc6e837..b91cfb9 100644 >>> --- a/util/iov.c >>> +++ b/util/iov.c >>> @@ -146,7 +146,7 @@ ssize_t iov_send_recv(int sockfd, struct iovec *iov, >>> unsigned iov_cnt, >>> { >>> ssize_t total = 0; >>> ssize_t ret; >>> - size_t orig_len, tail; >>> + size_t orig_len = 0, tail; >>> unsigned niov; >>> >>> while (bytes > 0) { >> Here are the uses of orig_len: >> >> if (tail) { >> /* second, fixup the last element, and remember the original >> * length */ >> assert(niov < iov_cnt); >> assert(iov[niov].iov_len > tail); >> orig_len = iov[niov].iov_len; >> iov[niov++].iov_len = tail; >> } >> >> ret = do_send_recv(sockfd, iov, niov, do_send); >> >> /* Undo the changes above before checking for errors */ >> if (tail) { >> iov[niov-1].iov_len = orig_len; >> } >> >> >> gcc is too stupid to understand the control flow. The initialization >> shuts it up. > Looks like most people's GCC is not that stupid, or I would have broken > build for everyone, right? > > Paolo
Hi Paolo, I get this warning, too, when I run a normal cross compilation with MinGW-w64: util/iov.c:190:33: warning: ‘orig_len’ may be used uninitialized in this function [-Wuninitialized] My build environment: Debian wheezy with packages gcc-mingw-w64-i686, gcc-mingw-w64-x86-64 (4.6.3-14+8). A complete build results in 5 warnings. Here are the other 4 of them: hw/arm/spitz.c:280:0: warning: "MOD_SHIFT" redefined [enabled by default] hw/ppc/spapr.c:673:26: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] hw/ppc/spapr_hcall.c:188:1: warning: control reaches end of non-void function [-Wreturn-type] hw/ppc/spapr_pci.c:454:1: warning: control reaches end of non-void function [-Wreturn-type] I already sent a patch for the MOD_SHIFT issue. The remaining 3 warnings are also caused by code which makes it difficult for the compiler to detect that it is correct. Regards Stefan