From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L5qrP-00082m-H4 for qemu-devel@nongnu.org; Thu, 27 Nov 2008 19:05:27 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L5qrO-000819-5b for qemu-devel@nongnu.org; Thu, 27 Nov 2008 19:05:27 -0500 Received: from [199.232.76.173] (port=46069 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L5qrN-000811-Ss for qemu-devel@nongnu.org; Thu, 27 Nov 2008 19:05:25 -0500 Received: from rv-out-0708.google.com ([209.85.198.251]:60024) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L5qrN-0003jx-8R for qemu-devel@nongnu.org; Thu, 27 Nov 2008 19:05:25 -0500 Received: by rv-out-0708.google.com with SMTP id f25so1102170rvb.22 for ; Thu, 27 Nov 2008 16:05:24 -0800 (PST) Message-ID: Date: Fri, 28 Nov 2008 01:05:24 +0100 From: "andrzej zaborowski" Subject: Re: [Qemu-devel] Re: typo in target-i386/ops_sse.h In-Reply-To: <492F2984.9050806@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200811272230.12559.frank.mehnert@sun.com> <492F2984.9050806@web.de> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 2008/11/28 Jan Kiszka : > andrzej zaborowski wrote: >> Hi, >> >> 2008/11/27 Frank Mehnert : >>> I believe there is a typo in target-i386/ops_sse.h in the macro >>> SSE_HELPER_F: >> >> Ooops, you're right about the typo, but I think it should something like this: >> --- a/target-i386/ops_sse.h >> +++ b/target-i386/ops_sse.h >> @@ -1499,12 +1499,12 @@ void glue(name, SUFFIX) (Reg *d, Reg *s)\ >> {\ >> d->elem(0) = F(0);\ >> d->elem(1) = F(1);\ >> - d->elem(2) = F(2);\ >> - d->elem(3) = F(3);\ >> - if (num > 3) {\ >> - d->elem(4) = F(4);\ >> - d->elem(5) = F(5);\ >> - if (num > 5) {\ >> + if (num > 2) {\ >> + d->elem(2) = F(2);\ >> + d->elem(3) = F(3);\ >> + if (num > 4) {\ >> + d->elem(4) = F(4);\ >> + d->elem(5) = F(5);\ >> d->elem(6) = F(6);\ >> d->elem(7) = F(7);\ >> }\ >> >> I'm not sure why this didn't generate warnings. > > It does - with gcc4 (array subscript is above array bounds). I saw them > in kvm-userspace, but there were so many (a lot likely due to > non-upstream stuff) that I ignored them for now. Now your patch just > removed 8 upstream warnings. But is this stuff already in use? Should > cause subtle guest state corruptions if actually executed. It is enabled if you specify SSE4.1 support through -cpu, currenlty no predefined cpu uses it. I think it went unnoticed because I only tested the first of the 12 instructions using the macro, which wasn't affected. > > That reminds me that we should have a "zero new warnings policy" for > changes. But reality still looks different... Well, the subscripts above array bounds here are okay. Similarly there are other warnings that generate lots of annoying false-positives and you would end up working around your compiler, sometimes sacrificing readability or performance. Cheers