From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44046) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eKPJB-0005IV-Nm for qemu-devel@nongnu.org; Thu, 30 Nov 2017 08:55:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eKPJ5-0007BL-NF for qemu-devel@nongnu.org; Thu, 30 Nov 2017 08:55:21 -0500 Date: Thu, 30 Nov 2017 14:54:46 +0100 From: Cornelia Huck Message-ID: <20171130145446.3d47b906.cohuck@redhat.com> In-Reply-To: <20171130134159.9697-4-eblake@redhat.com> References: <20171130134159.9697-1-eblake@redhat.com> <20171130134159.9697-4-eblake@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 3/3] maint: Fix macros with broken 'do/while(0); ' usage List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: qemu-devel@nongnu.org, qemu-trivial@nongnu.org, Gerd Hoffmann , Alistair Francis , Peter Crosthwaite , Kevin Wolf , Max Reitz , "Edgar E. Iglesias" , Paolo Bonzini , Peter Maydell , Alexander Graf , Jason Wang , Subbaraya Sundeep , Stefan Berger , Juan Quintela , "Dr. David Alan Gilbert" , Christian Borntraeger , Richard Henderson , "Michael S. Tsirkin" , Igor Mammedov , "open list:Block layer core" , "open list:Xilinx Zynq" , "open list:New World" , "open list:S390" On Thu, 30 Nov 2017 07:41:59 -0600 Eric Blake wrote: > The point of writing a macro embedded in a 'do { ... } while (0)' > loop is so that the macro can be used as a drop-in statement with > the caller supplying the trailing ';'. Although our coding style > frowns on brace-less 'if': > if (cond) > statement; > else > something else; > the use of do/while (0) in a macro is absolutely essential for the > purpose of avoiding a syntax error on the 'else' - but it only works > if there is no trailing ';' in the macro (as the ';' in the code > calling the macro would then be a second statement and cause the > 'else' to not pair to the 'if'). > > Many of the places touched in this code are examples of the ugly > bit-rotting debug print statements; cleaning those up is left as > a bite-sized task for another day. > > Found mechanically via: $ git grep -B1 'while (0);' | grep -A1 \\\\ > > Signed-off-by: Eric Blake > --- > tests/acpi-utils.h | 8 ++++---- > ui/sdl_zoom_template.h | 8 ++++---- > audio/paaudio.c | 4 ++-- > hw/adc/stm32f2xx_adc.c | 2 +- > hw/block/m25p80.c | 2 +- > hw/char/cadence_uart.c | 2 +- > hw/char/stm32f2xx_usart.c | 2 +- > hw/display/cg3.c | 2 +- > hw/display/dpcd.c | 2 +- > hw/display/xlnx_dp.c | 2 +- > hw/dma/pl330.c | 2 +- > hw/dma/xlnx-zynq-devcfg.c | 2 +- > hw/dma/xlnx_dpdma.c | 2 +- > hw/i2c/i2c-ddc.c | 2 +- > hw/misc/auxbus.c | 2 +- > hw/misc/macio/mac_dbdma.c | 4 ++-- > hw/misc/mmio_interface.c | 2 +- > hw/misc/stm32f2xx_syscfg.c | 2 +- > hw/misc/zynq_slcr.c | 2 +- > hw/net/cadence_gem.c | 2 +- > hw/ssi/mss-spi.c | 2 +- > hw/ssi/stm32f2xx_spi.c | 2 +- > hw/ssi/xilinx_spi.c | 2 +- > hw/ssi/xilinx_spips.c | 2 +- > hw/timer/a9gtimer.c | 2 +- > hw/timer/cadence_ttc.c | 2 +- > hw/timer/mss-timer.c | 2 +- > hw/timer/stm32f2xx_timer.c | 2 +- > hw/tpm/tpm_passthrough.c | 2 +- > hw/tpm/tpm_tis.c | 2 +- > migration/rdma.c | 2 +- > target/arm/translate-a64.c | 2 +- > target/s390x/kvm.c | 2 +- > tests/tcg/test-mmap.c | 2 +- > 34 files changed, 42 insertions(+), 42 deletions(-) > diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c > index b03f583032..06d06010a4 100644 > --- a/target/s390x/kvm.c > +++ b/target/s390x/kvm.c > @@ -58,7 +58,7 @@ > if (DEBUG_KVM) { \ > fprintf(stderr, fmt, ## __VA_ARGS__); \ > } \ > -} while (0); > +} while (0) > > #define kvm_vm_check_mem_attr(s, attr) \ > kvm_vm_check_attr(s, KVM_S390_VM_MEM_CTRL, attr) Acked-by: Cornelia Huck