From patchwork Tue Apr 12 03:57:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 52804 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 760483857366 for ; Tue, 12 Apr 2022 03:59:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 760483857366 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1649735993; bh=Jw1VvCLrhytN6kT+e+ILLGFQM8QJPUTfMkJEjm130eU=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=pO+OKzQ+fXmhJthNRI81l7YOeSREtFq2ED5mHv/jdSnW1k4s5EEUwns4BOSeDRx25 wlMPUaWwbSKk0N0zmEmGRCOh21FLTox8KsFNJq+NdXKcEjM3Qb5dPnB6EDgJeSdUAz ZAJE18C8X9QivdLOx30yfbvCYtWzwVPrr5HojHHk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id F1CC93857405 for ; Tue, 12 Apr 2022 03:58:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F1CC93857405 Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-65-XiHKgn8VMUa4E7qzR7VLdw-1; Mon, 11 Apr 2022 23:58:04 -0400 X-MC-Unique: XiHKgn8VMUa4E7qzR7VLdw-1 Received: by mail-qk1-f197.google.com with SMTP id q5-20020a05620a0d8500b004738c1b48beso8831305qkl.7 for ; Mon, 11 Apr 2022 20:58:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=Jw1VvCLrhytN6kT+e+ILLGFQM8QJPUTfMkJEjm130eU=; b=Z+QAoiO/mxFuOb85OhuUwMJSZUDtgf81/YYALPHese6a857jFXKFbB0/z9ovukmAWu ybn5BcDCpPPMartwWAXx8CD21Ti3/W8ynYtrLJOa8EKnq9OlvJM15MnfOClp8B77+Avb d9N6+G9GerDQy3VJgvVb3WF2oderpB4O5DVwFa5lQo4Mmr5Jtu7TmypoWgImgvXIKITn DVK4epDctD4rGU/AhhRPmep7B/1RiX939fx7QObu4Kjws5RUwRaubPTHILp1OexNTZpR kPVGiHwIW6lVHOfZ+wE61cDtYKqbyDWha5p5WjhySoc50wlBVyxooB/uWbtujfEkiZKb +w4A== X-Gm-Message-State: AOAM533Cda6+t0T4uGi1jKnCCbLxSwB6IqR6vG0Iw0wgLgojrnAfYq2J 9UGRKN3lo9Pwecg9RFfLbK2rgO+4zbB8hAxwhHyAuKmP+8Hlc+gjp/vmXhuj2XDrCKrD34wwRUD 9ULLVEWO7zV9EmJjohca2LKtrGvOhse1cMozwt6AIacUG9sxVTv/FbUVGOgIkrNQWXA== X-Received: by 2002:a37:8a43:0:b0:699:fac5:224d with SMTP id m64-20020a378a43000000b00699fac5224dmr1774224qkd.599.1649735883691; Mon, 11 Apr 2022 20:58:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwinCOeUYwk6dCI9Gb/BGPWmuopFM7iKVfSg9nHcwqnYd2eLrJek2Aj1L5wrcyNnD0CyvkD/Q== X-Received: by 2002:a37:8a43:0:b0:699:fac5:224d with SMTP id m64-20020a378a43000000b00699fac5224dmr1774213qkd.599.1649735883306; Mon, 11 Apr 2022 20:58:03 -0700 (PDT) Received: from barrymore.redhat.com (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id a9-20020ac85b89000000b002e2072c9dedsm27976322qta.67.2022.04.11.20.58.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 20:58:02 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [pushed] c++: rodata and defaulted ctor [PR104142] Date: Mon, 11 Apr 2022 23:57:58 -0400 Message-Id: <20220412035758.2976700-1-jason@redhat.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, 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.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jason Merrill via Gcc-patches From: Jason Merrill Reply-To: Jason Merrill Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Trivial initialization shouldn't bump a variable out of .rodata; if the result of build_aggr_init is an empty STATEMENT_LIST, throw it away. Tested x86_64-pc-linux-gnu, applying to trunk. PR c++/104142 gcc/cp/ChangeLog: * decl.cc (check_initializer): Check TREE_SIDE_EFFECTS. gcc/testsuite/ChangeLog: * g++.dg/opt/const7.C: New test. --- gcc/cp/decl.cc | 4 ++++ gcc/testsuite/g++.dg/opt/const7.C | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100644 gcc/testsuite/g++.dg/opt/const7.C base-commit: 4195fced8a13422db94e179404588d9d887a036a diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc index c136dbbba1a..31cae4d1d36 100644 --- a/gcc/cp/decl.cc +++ b/gcc/cp/decl.cc @@ -7444,6 +7444,10 @@ check_initializer (tree decl, tree init, int flags, vec **cleanups) if (init && init != error_mark_node) init_code = build2 (INIT_EXPR, type, decl, init); + if (init_code && !TREE_SIDE_EFFECTS (init_code) + && init_code != error_mark_node) + init_code = NULL_TREE; + if (init_code) { /* We might have set these in cp_finish_decl. */ diff --git a/gcc/testsuite/g++.dg/opt/const7.C b/gcc/testsuite/g++.dg/opt/const7.C new file mode 100644 index 00000000000..5bcf94897a8 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/const7.C @@ -0,0 +1,7 @@ +// PR c++/104142 +// { dg-do compile { target c++11 } } +// { dg-additional-options -Wunused-variable } + +struct B { B()=default; }; +static const B b_var; // { dg-bogus "" } +// { dg-final { scan-assembler-symbol-section {b_var} {^\.(const|rodata)|\[RO\]} } }