From nobody Sat May 4 06:58:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 151914080888039.85271902588488; Tue, 20 Feb 2018 07:33:28 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 818CE10F2A; Tue, 20 Feb 2018 15:33:26 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7479C600D3; Tue, 20 Feb 2018 15:33:25 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 3BA6418033E9; Tue, 20 Feb 2018 15:33:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1KFXL0j018879 for ; Tue, 20 Feb 2018 10:33:22 -0500 Received: by smtp.corp.redhat.com (Postfix) id BF4E2213AEED; Tue, 20 Feb 2018 15:33:21 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.79]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0B422213AEE2; Tue, 20 Feb 2018 15:33:20 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Tue, 20 Feb 2018 15:33:19 +0000 Message-Id: <20180220153319.12233-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH] Fix build with GCC 8 new switch fallthrough warnings X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 20 Feb 2018 15:33:27 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 GCC 8 became more fussy about detecting switch fallthroughs. First it doesn't like it if you have a fallthrough attribute that is not before a case statement. e.g. FOO: BAR: WIZZ: ATTRIBUTE_FALLTHROUGH; Is unacceptable as there's no final case statement, so while FOO & BAR are falling through, WIZZ is not falling through. IOW, GCC wants us to write FOO: BAR: ATTRIBUTE_FALLTHROUGH; WIZZ: Second, it will report risk of fallthrough even if you have a case statement for every single enum value, but only if the switch is nested inside another switch and the outer case statement has no final break. This is is arguably valid because despite the fact that we have cast from "int" to the enum typedef, nothing guarantees that the variable we're switching on only contains values that have corresponding switch labels. e.g. int domstate =3D 87539319; switch ((virDomainState)domstate) { ... } will not match enum value, but also not raise any kind of compiler warning. So it is right to complain about risk of fallthrough if no default: is present. Signed-off-by: Daniel P. Berrang=C3=A9 --- Pushed as a minimal build-fix for Fedora rawhide, since the bigger switch cleanup series is taking a while to get ready for merge. src/qemu/qemu_domain.c | 6 ++++-- src/qemu/qemu_domain_address.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 593b9d0fb5..b1308e5a49 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -173,8 +173,9 @@ qemuDomainAsyncJobPhaseToString(qemuDomainAsyncJob job, case QEMU_ASYNC_JOB_SNAPSHOT: case QEMU_ASYNC_JOB_START: case QEMU_ASYNC_JOB_NONE: - case QEMU_ASYNC_JOB_LAST: ATTRIBUTE_FALLTHROUGH; + case QEMU_ASYNC_JOB_LAST: + break; } =20 return "none"; @@ -197,8 +198,9 @@ qemuDomainAsyncJobPhaseFromString(qemuDomainAsyncJob jo= b, case QEMU_ASYNC_JOB_SNAPSHOT: case QEMU_ASYNC_JOB_START: case QEMU_ASYNC_JOB_NONE: - case QEMU_ASYNC_JOB_LAST: ATTRIBUTE_FALLTHROUGH; + case QEMU_ASYNC_JOB_LAST: + break; } =20 if (STREQ(phase, "none")) diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index dd3e703ca5..001c84a906 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -543,6 +543,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST: return 0; } + break; =20 case VIR_DOMAIN_CONTROLLER_TYPE_IDE: return pciFlags; @@ -567,6 +568,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: return 0; } + break; =20 case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: return virtioFlags; @@ -619,6 +621,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_SOUND_MODEL_LAST: return 0; } + break; =20 case VIR_DOMAIN_DEVICE_DISK: switch ((virDomainDiskBus) dev->data.disk->bus) { @@ -636,6 +639,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_DISK_BUS_LAST: return 0; } + break; =20 case VIR_DOMAIN_DEVICE_HOSTDEV: { virDomainHostdevDefPtr hostdev =3D dev->data.hostdev; @@ -748,6 +752,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_MEMBALLOON_MODEL_LAST: return 0; } + break; =20 case VIR_DOMAIN_DEVICE_RNG: switch ((virDomainRNGModel) dev->data.rng->model) { @@ -757,6 +762,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_RNG_MODEL_LAST: return 0; } + break; =20 case VIR_DOMAIN_DEVICE_WATCHDOG: /* only one model connects using PCI */ @@ -769,6 +775,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_WATCHDOG_MODEL_LAST: return 0; } + break; =20 case VIR_DOMAIN_DEVICE_VIDEO: switch ((virDomainVideoType) dev->data.video->type) { @@ -789,6 +796,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_VIDEO_TYPE_LAST: return 0; } + break; =20 case VIR_DOMAIN_DEVICE_SHMEM: return pciFlags; @@ -805,6 +813,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_INPUT_BUS_LAST: return 0; } + break; =20 case VIR_DOMAIN_DEVICE_CHR: switch ((virDomainChrSerialTargetType) dev->data.chr->targetType) { @@ -820,6 +829,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: return 0; } + break; =20 /* These devices don't ever connect with PCI */ case VIR_DOMAIN_DEVICE_NVRAM: --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list