From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57229) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ur818-000634-SI for qemu-devel@nongnu.org; Mon, 24 Jun 2013 10:45:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ur816-0002JM-R8 for qemu-devel@nongnu.org; Mon, 24 Jun 2013 10:45:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40247) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ur816-0002J3-Js for qemu-devel@nongnu.org; Mon, 24 Jun 2013 10:45:16 -0400 Message-ID: <51C85B5D.7050702@redhat.com> Date: Mon, 24 Jun 2013 16:44:45 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1370599329-16682-1-git-send-email-xiawenc@linux.vnet.ibm.com> <87ehcedsi7.fsf@blackfin.pond.sub.org> <51C032D2.80405@redhat.com> <51C5766F.8000704@weilnetz.de> In-Reply-To: <51C5766F.8000704@weilnetz.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH V2] build: remove compile warning List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Weil Cc: peter.maydell@linaro.org, aliguori@us.ibm.com, Wenchao Xia , Markus Armbruster , qemu-devel@nongnu.org, alevy@redhat.com, stefanha@redhat.com, mlureau@redhat.com, Robert Relyea Il 22/06/2013 12:03, Stefan Weil ha scritto: > 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 =3D 0; >>>> ssize_t ret; >>>> - size_t orig_len, tail; >>>> + size_t orig_len =3D 0, tail; >>>> unsigned niov; >>>> =20 >>>> while (bytes > 0) { >>> Here are the uses of orig_len: >>> >>> if (tail) { >>> /* second, fixup the last element, and remember the origi= nal >>> * length */ >>> assert(niov < iov_cnt); >>> assert(iov[niov].iov_len > tail); >>> orig_len =3D iov[niov].iov_len; >>> iov[niov++].iov_len =3D tail; >>> } >>> >>> ret =3D do_send_recv(sockfd, iov, niov, do_send); >>> >>> /* Undo the changes above before checking for errors */ >>> if (tail) { >>> iov[niov-1].iov_len =3D orig_len; >>> } >>> >>> >=20 > I get this warning, too, when I run a normal cross compilation with > MinGW-w64: >=20 > util/iov.c:190:33: warning: =E2=80=98orig_len=E2=80=99 may be used unin= itialized in this > function [-Wuninitialized] >=20 > My build environment: >=20 > Debian wheezy with packages gcc-mingw-w64-i686, gcc-mingw-w64-x86-64 > (4.6.3-14+8). >=20 > A complete build results in 5 warnings. Here are the other 4 of them: >=20 > hw/arm/spitz.c:280:0: warning: "MOD_SHIFT" redefined [enabled by defaul= t] > hw/ppc/spapr.c:673:26: warning: cast from pointer to integer of > different size [-Wpointer-to-int-cast] Isn't this one a Win64 bug? > 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 think you could report this to mingw. GCC should handle "if (!0) foo()" just fine if foo is noreturn, perhaps the "assertion failure" runtime function is not noreturn in mingw. > I already sent a patch for the MOD_SHIFT issue. >=20 > The remaining 3 warnings are also caused by code which makes it difficu= lt > for the compiler to detect that it is correct. Not as hard as this one, though. Anyway, I would be okay a fix that makes the code easier to follow for compilers (and doesn't have too much duplication so that humans are also happy). But adding "=3D 0" is the worst, because smart compilers will no= t detect a human's mistakes anymore. Paolo