From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 5153D3858C3A for ; Wed, 19 Jul 2023 19:36:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5153D3858C3A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1689795412; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4KYBVOUxT2Vosy1jkfcuunm/Pprk9TXHF+pPg54NQOw=; b=OBNaXMA4H7JqlaR9byzDwnZnk1XoMDcIWQEzZt1oB0DZPDFinJqhisDqWlUwUi8xcMYhSK +Llk1uEPPSYU7qzh9lLzKSDvLj3H6NqX17UhzDG37XfBiQkC1NblZfI8YpSKfhiznWCWDs Z7A8PFOovaa00SQYmiV3gGHTbQm99RM= Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-358-JdTh3INKOeW1Gn7kbyy-AQ-1; Wed, 19 Jul 2023 15:36:51 -0400 X-MC-Unique: JdTh3INKOeW1Gn7kbyy-AQ-1 Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-403affb3404so9884641cf.1 for ; Wed, 19 Jul 2023 12:36:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689795410; x=1692387410; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4KYBVOUxT2Vosy1jkfcuunm/Pprk9TXHF+pPg54NQOw=; b=T/ghBMH4nOSkhWCkMNB/P7liTSM9d4mspj3gTqSS73BsOkAEdVmmJPSeperQR6+hCr 5WTOJIHKOkBezL3TD6KAAjB8gjd+JjTjB6Kr1wYTT5Iv8e+qH5g5Ulqiwy6DI/U0qCNz Fym5JQdVrUnaYfHTDOyDUaDz7yfEkzqjtWtvp0WFjzMXL1UAHdj1XrCGd+xsxOuNPYFg nJTgw/+KMB5TGlbu/JI5eYNpaTCeeRwj/fhKg18umSb/jbeQZFv+6miwo4Wgtvt6V4Gd TwykWPPdwg9OdNBizkSiWq2YyTilh6W0w3/EM/sa826LpHV0iCjsxg8TlNfpNTjfJK2x wZWA== X-Gm-Message-State: ABy/qLZWwpb9oxEdtd3sRjsu6V+/knm1P9zQ4zBNo4AUaETcurUVYxNJ Gk7+4kgG8MQE/0eacVJhII1TxUskr/mQvoAJsypSuI1komNDC1Y1Ey8O76y04qK2c2aTep/o1Ih JsTfzXxGBMH9UPA6Dcg== X-Received: by 2002:a05:622a:205:b0:403:fee8:833d with SMTP id b5-20020a05622a020500b00403fee8833dmr4105352qtx.7.1689795410532; Wed, 19 Jul 2023 12:36:50 -0700 (PDT) X-Google-Smtp-Source: APBJJlE/Erhlx9bDLr7jph4CGdMrtXPPLOa7FTqKbUsbKZZKmW5CLnpuHOSshzqPxbPYvDChCjAWgw== X-Received: by 2002:a05:622a:205:b0:403:fee8:833d with SMTP id b5-20020a05622a020500b00403fee8833dmr4105336qtx.7.1689795410257; Wed, 19 Jul 2023 12:36:50 -0700 (PDT) Received: from [192.168.1.108] (130-44-146-16.s12558.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.146.16]) by smtp.gmail.com with ESMTPSA id w23-20020ac843d7000000b00403f5873f5esm1547833qtn.24.2023.07.19.12.36.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Jul 2023 12:36:49 -0700 (PDT) Message-ID: Date: Wed, 19 Jul 2023 15:36:49 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH] c++: -Wmissing-field-initializers and empty class [PR110064] To: Marek Polacek , GCC Patches Cc: Patrick Palka References: <20230719192047.449259-1-polacek@redhat.com> From: Jason Merrill In-Reply-To: <20230719192047.449259-1-polacek@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 7/19/23 15:20, Marek Polacek wrote: > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk? OK. We might also improve the diagnostic for base classes, perhaps by teaching dump_simple_decl about DECL_FIELD_IS_BASE? > -- >8 -- > > Let's suppress -Wmissing-field-initializers for empty classes. > > Here I don't think I need the usual COMPLETE_TYPE_P/dependent_type_p > checks. > > PR c++/110064 > > gcc/cp/ChangeLog: > > * typeck2.cc (process_init_constructor_record): Don't emit > -Wmissing-field-initializers for empty classes. > > gcc/testsuite/ChangeLog: > > * g++.dg/warn/Wmissing-field-initializers-3.C: New test. > --- > gcc/cp/typeck2.cc | 3 +- > .../warn/Wmissing-field-initializers-3.C | 48 +++++++++++++++++++ > 2 files changed, 50 insertions(+), 1 deletion(-) > create mode 100644 gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-3.C > > diff --git a/gcc/cp/typeck2.cc b/gcc/cp/typeck2.cc > index 1c204c8612b..582a73bb053 100644 > --- a/gcc/cp/typeck2.cc > +++ b/gcc/cp/typeck2.cc > @@ -1874,7 +1874,8 @@ process_init_constructor_record (tree type, tree init, int nested, int flags, > to zero. */ > if ((complain & tf_warning) > && !cp_unevaluated_operand > - && !EMPTY_CONSTRUCTOR_P (init)) > + && !EMPTY_CONSTRUCTOR_P (init) > + && !is_really_empty_class (fldtype, /*ignore_vptr*/false)) > warning (OPT_Wmissing_field_initializers, > "missing initializer for member %qD", field); > > diff --git a/gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-3.C b/gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-3.C > new file mode 100644 > index 00000000000..a8d75b92bd1 > --- /dev/null > +++ b/gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-3.C > @@ -0,0 +1,48 @@ > +// PR c++/110064 > +// { dg-do compile { target c++17 } } > +// { dg-options "-Wmissing-field-initializers" } > + > +struct B { }; > +struct D : B { > + int x; > + int y; > +}; > + > +struct E { > + int x; > + int y; > + B z; > +}; > + > +template struct X { }; > + > +template > +struct F { > + int i; > + int j; > + X x; > +}; > + > +int > +main () > +{ > + D d = {.x=1, .y=2}; // { dg-bogus "missing" } > + (void)d; > + E e = {.x=1, .y=2}; // { dg-bogus "missing" } > + (void)e; > + F f = {.i=1, .j=2 }; // { dg-bogus "missing" } > + (void)f; > +} > + > +template > +void fn () > +{ > + F f = {.i=1, .j=2 }; // { dg-bogus "missing" } > + (void)f; > +} > + > +void > +g () > +{ > + fn (); > +} > > base-commit: 2971ff7b1d564ac04b537d907c70e6093af70832