Subject: Re: [PATCH] pci: Use designated initialization in PCI_VDEVICE

From: Bjorn Helgaas <[email-masked]>
Date: Thu, 24 Apr 2014 15:22:46 -0600

On Tue, Apr 01, 2014 at 02:08:06AM +0400, Sergei Shtylyov wrote:
> Hello.
> 
> On 04/01/2014 01:58 AM, Jeff Kirsher wrote:
> 
> >From: Mark Rustad <[email-masked]>
> 
> >By using designated initialization in PCI_VDEVICE, like other
> >similar macros, many "missing initializer" warnings that appear
> >when compiling with W=2 can be silenced.
> 
> >Signed-off-by: Mark Rustad <[email-masked]>
> >Tested-by: Phil Schmitt <[email-masked]>
> >Tested-by: Aaron Brown <[email-masked]>
> >Tested-by: Kavindya Deegala <[email-masked]>
> >Signed-off-by: Jeff Kirsher <[email-masked]>
> >---
> >  include/linux/pci.h | 10 +++++-----
> >  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> >diff --git a/include/linux/pci.h b/include/linux/pci.h
> >index fb57c89..49455f9 100644
> >--- a/include/linux/pci.h
> >+++ b/include/linux/pci.h
> [...]
> >@@ -689,9 +689,9 @@ struct pci_driver {
> >   * private data.
> >   */
> >
> >-#define PCI_VDEVICE(vendor, device)		\
> >-	PCI_VENDOR_ID_##vendor, (device),	\
> >-	PCI_ANY_ID, PCI_ANY_ID, 0, 0
> >+#define PCI_VDEVICE(vend, dev) \
> >+	.vendor = PCI_VENDOR_ID_##vend, .device = (dev), \
> >+	.subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, 0, 0
> 
>    Initializing the fields to 0 is pointless, as 0 is what should be
> put into them anyway by the compiler. Also, it doesn't look right
> when you mix designated and anonymous initializers.

I'm certainly willing to apply this, but I can't reproduce the benefit.  I
tried "make W=2 drivers/net/ethernet/intel/e1000e/netdev.o" and didn't see
any change before and after this patch (I'm using Ubuntu gcc 4.6.3 if it
matters).

What am I missing?  And do we need the zeroes?

Bjorn