From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic312-27.consmr.mail.ne1.yahoo.com (sonic312-27.consmr.mail.ne1.yahoo.com [66.163.191.208]) by sourceware.org (Postfix) with ESMTPS id F07963858D37 for ; Thu, 3 Feb 2022 20:03:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F07963858D37 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=att.net Authentication-Results: sourceware.org; spf=none smtp.mailfrom=att.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=att.net; s=s1024; t=1643918629; bh=f5KuqYl0M/x3DOUWBmARUyfUnW1ftbehV+eoL9/LXiY=; h=Date:To:From:Subject:References:From:Subject:Reply-To; b=5a/bzze45h6NGst2rrAj8Q0IXmUy8bDD1i0QWLAHzEIjZQKFGM6nufmJU4v8rolYjUpJwoeMyWXfpNLsOWk3zheViar5fSUd1b+BygJ/hY+NdaT2XTFQW0eeftvk0W4O4vFYz19ob3/sFOlJJeou2paXIzU1DNyKVL5Bz62i1Kw= X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1643918629; bh=fcs1Q6hol79v8+joCLejemGg5usJoOjxap9+SZPtPCa=; h=X-Sonic-MF:Date:To:From:Subject:From:Subject; b=NpcPpo4nn2IWkhHfVL/+8/UbLRJBtk3iGY+8NTKloTDzs/xS2TyCNHbGEONcqygrg8b60kxB9NwyRvtqjWZ2P7ZSsHJGPu2Ax6UMesQzzsu9uiCsfViATaaL6G24oeawAcGKRGKH+7nE24vlZ2hlUE4Ykv6qZJ/hWQVloztKUIsp4MoIk5CptdakR0B+Zo2pxkIdsDS+FrKbsXhhD02gAZYHZQwVF+bgwk8atdjvyg05qg97yrR3bT5AsxBAsNWVCXSm7msxIVw7RNcH2ob5lh0i9cOdzJbhN/O88hyV7Hv67ZvCJiYuNfNhfoFeLY7nPqNNhRq6mxnYz8onUgx46Q== X-YMail-OSG: DT8tfT8VM1mxE0LyXrAl3TmsI19LLPWiPzY4BaHVe2e7o04p4XzrBd0Zz8FaODO JkufvrDHLQLF1LIqhp2AvU3XhaLvA20va2Z8ky8okZy.VL5fLAm70Z9pqoYVm7OHV91gKsoJF55V wpLYUsEd5DeyMNoUPcwK2lNq1KMa6055D6syNMv_v1UxVUcCj5bY3btSASIMWZ8mz.n8ujfaRz9I 69bN_IP2QuMh6VZyFZHpVynMKjJPE3ScKxlJMGos_yItSC7lrkAk2jmlZSrF18hV8dotzqqbNjIs W6AywWsBStpoUNg2xWKDh3iLd2P7DXZUvkZbTFFmVD8MwJllgWtNYIlncfW.o2TPcq.ZvCvsksz1 cEJqK9nCSfay4.Cdt5YtaSUvhkO23W8s2hxtYA4C90nu7vnC7b23V_DlOGOYHoHlpMU7XtfUBKQ. qEXEthINsuuXFnK_TSOw2pMaWgpIhQEM4krpf6MGT.8ScHdqO_5JDwncSlV2tzyRWrJTWvaKOt4A VCmbiZxLgaSy5jACbGYg.7d2IMgrNmREU9Gz3y5FOesqTUsdbwv.lPsXGT8nA5sxgPjmoVLUwvHs bYA31WRL9TJ2FY0Jr8bUspDNWevtf94stOMpiW3wkvIeJ6.1vt0wv5DYhSyYMPXAQlqjhCKR6hax MlFgfUG08aKD4fOEsgotb8Cc8L5JeMa9mLzlCo.6aDZh6Bgi52ET0WETlnQ_T1vRy7GiNq6iWd1O u0t6KnSwEUnMzXxtucHjOWd9Do_XpIoWZR2z8KnZFulXfDRBjW7dwQNNMkUiDMpqDvlgnU6Ivxp2 ylAsBOC3cZPbidDROLtQ_CJY.9gKvG7msHNENHPbcmVbkqt2TYd.vtV4JgLnUsCuGhWh8i212gAH yFHVIa191hNX6FZOTtrIjzqv8ASbt9qc7O5urT0vHWxCI2DLD.4FJ7SavE6XgIfM8wG0GrHmhsFd WMSdSGbdBBP64SEs3CNmJYx6s7rTcnF4JdCvCYjlq5MtK5tVm.aXfoltWQqZfvsPKXn1N6xkig3c K1tdCOVqxgxEJ0xVqsRFQE54b.qooO3eW849ulXKDmFVPNatNqC3IjkibejbivE1th9A1n9poX5o 7ErbU3ON7Wq4zoi1BqHTz8Q4L1i8GiGD175ZootI7fx8YLAa85cMO4t00hhAaoTFY1x1jbpZxOwr KIOM7YSGU8leRRcfXX9qBhbwdWp7y4bI7JnDp7zwned_9o_8byIDBmIwFZh1QiVlm_I76si6vBti reryX_d4oRNiYNmlTIKniXBTSlX_ccnzn9RRvTDDIkOM.6x99BdgBk3tiibWgvQiMsCAPvwoAuj0 xUn6pvWM3Cf1NIt0zIAkr2ynuIr8pRGgPEv32_GgVXdgCQBVZOrDkhmakc493KdvmfFB71yKnub3 NnXKyQXM76XUtedsCZCTCGRd7m_E2IotOksTxOdaK4KeFARl.zEi29lNixlfT_Yz2TDpmt17dk3q PPrNbro_ZN8xGjRnmVIXgtWRaNSRmc6mK65hySGHFFlMf9s086fxdVO4TSj.K4.Jjys3FEuFxprm IgEcX8KMdiaGhD_MDwDsTMLyJOfCPt6V_MIHPAWjKjdibUULqOOvdCVSTZhhPtua9jUX.FME5iDt pC78KLaPhormO_aXu8oTuNMU2DX.Wizmm02JbtlsmKbFNrkLQC5IrqFuMPfD9Y2Ut3Tbe25QPF7i ne00itWkQ9bXtF_WZOxYML2Ol12JMeGVhlzMz.HvSXh4SLgx6pcsqIYgBdPgjgOqAUYzP1j9Qg4w DIJ1emLm_JzrIIaxk7O_kP7J6aw2p.R8OxKY_UbVQyfv_sbzWLYF2RpZ6xoI7AZm4Fri0V_cZgbI O4YRy61YuXszK8XQzM6BUxZEzXPt2nCjWi2An3em972ydHgn4PewNyUhG0cdqySNxLEO8kWDl1tn i29Z1.RjR79w3_aVK_NmCFUdvJ.inHKViovJ97sk_KYgZurSstrVrL7jnb6iulzLFMNUnR7k._LL i0cLs4EfaARN6A9VSpnghUaWQgbLlVtvpJgh2KzO4D6zE6lEHKLBM_UFID9Bv_a2i2vh1y.xXFWD zIJ.2qMRWOimwqH_UKbu7KGckNiPdwm7z4BoIFuSnNQrnkrWDkyIvHENCL1chZYVPyoJq3DpxVMd _MOybP2z0XLrDXa.MHvdWbZxPCN_julyaDT7.VeXY1dQh5VG60vVCA9Z.7EtbFHZL42I3vCJPbhv hehF_K8uFSJiz7nH1jY9TSwY3ecXH56a2ui6K X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic312.consmr.mail.ne1.yahoo.com with HTTP; Thu, 3 Feb 2022 20:03:49 +0000 Received: by kubenode512.mail-prod1.omega.gq1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 1fb6972ca7d7615349dc9dbd33500883; Thu, 03 Feb 2022 20:03:47 +0000 (UTC) Message-ID: Date: Thu, 3 Feb 2022 12:03:46 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 To: gcc-help@gcc.gnu.org Content-Language: en-US From: Alexey Neyman Subject: -Wmissing-field-initializers false positive with compound literals Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit References: X-Mailer: WebService/1.1.19615 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo X-Spam-Status: No, score=-0.6 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-help@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-help mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Feb 2022 20:03:52 -0000 Hi all, I've encountered a weird behavior of -Wmissing-field-initializers option (which is a part of -Wextra) regarding structure initializers that contain compound literals as initializers for some of their fields. Reproduced with all GCC versions from 4.8.5 to 11.2. Consider the following test case: struct foo {        const char *a1;        const char * const *a2;        void *a3;        void *a4; }; const char *aux[] = { "y", 0 }; struct foo a = {        .a1 = "x", #if defined(CASE1)        .a2 = (const char * const []){ "y", 0 }, #elif defined(CASE2)        .a2 = aux, #elif defined(CASE3)        .a2 = 0, #elif defined(CASE4)        /* .a2 not initialized */ #elif defined(CASE5)        .a2 = (const char * const []){ "y", 0 },        .a3 = 0, #endif }; struct foo b = {        .a2 = (const char * const []){ "y", 0 },        .a1 = "x", }; CASE1 gives a warning about 'a3' field being initialized, despite the manual stating that named field initializers should prevent this warning from being generated. CASE2 initializes the field to point to an explicitly defined array, and it works with no warnings. CASE3 uses a constant as an initializer and also works without warnings. CASE5 initializes the field 'a3' and produces no warnings about the next field, 'a4'. Reversing the order of the 'a1' and 'a2' initializers (as in the 'b' variable) also does not produce a warning. It seems that the warning is only produced if the last initialized field in a structure uses a compound literal. Looks like a bug to me; please confirm that I should file it into GCC's bugzilla. Regards, Alexey.