From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49677) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bB6S8-0006hI-Ai for qemu-devel@nongnu.org; Thu, 09 Jun 2016 16:21:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bB6S7-00088d-6t for qemu-devel@nongnu.org; Thu, 09 Jun 2016 16:21:20 -0400 Date: Thu, 9 Jun 2016 17:21:12 -0300 From: Eduardo Habkost Message-ID: <20160609202112.GD17952@thinpad.lan.raisama.net> References: <1465494036-23928-1-git-send-email-ehabkost@redhat.com> <5759C573.1070403@redhat.com> <20160609195007.GW18662@thinpad.lan.raisama.net> <5759CD6B.9000407@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5759CD6B.9000407@redhat.com> Subject: Re: [Qemu-devel] [PATCH] error: Remove NULL checks on error_propagate() calls List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: kwolf@redhat.com, qemu-block@nongnu.org, Markus Armbruster , qemu-devel@nongnu.org, mreitz@redhat.com, borntraeger@de.ibm.com, cornelia.huck@de.ibm.com On Thu, Jun 09, 2016 at 02:11:23PM -0600, Eric Blake wrote: > On 06/09/2016 01:50 PM, Eduardo Habkost wrote: > > On Thu, Jun 09, 2016 at 01:37:23PM -0600, Eric Blake wrote: > > [...] > >> > >> Hmm - it seems like in most of the cases where the ONLY thing done in > >> the if (local_err) block is to propagate the error, we should instead be > >> directly assigning to errp instead of wasting a local variable. At this > >> point, my review is repetitive enough that I'll stop looking, and leave > >> it up to you and Markus whether to attempt a more ambitious Coccinelle > >> script. > > > > If it happens immediately before the function end or a return > > statement it should be easy, but it would still require some > > manual work to remove the unused variable declaration. Probably > > easier to do that in a follow-up patch. > > I think Coccinelle can be used to eliminate unused local variables, but > don't know the recipe off-hand; maybe a web search will turn up something? I found something called "when constraints", but the documentation isn't very clear. There's an example here: http://coccinelle.lip6.fr/rules/unused.cocci > > > > > It's harder (impossible?) to make Coccinelle avoid matching if > > local_err is used somewhere else in the function. But it's > > probably doable with some manual work, in a follow-up patch. > > I don't know - Coccinelle is rather powerful, and there may indeed be a > way to flag conditions for a variable that is not used anywhere except > in the lines mentioned in the recipe, vs. a variable that can also be > used in the ... portion of the recipe. I found a hackish way to do that. Sending a follow-up patch in 1 minute. -- Eduardo