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.129.124]) by sourceware.org (Postfix) with ESMTPS id BDDCE3857BB2 for ; Thu, 29 Jun 2023 15:23:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BDDCE3857BB2 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=1688052181; 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; bh=3v3kiOPTQWJT5x0akTqbNt9YUeuDzGJrtMMGXY4WEvI=; b=SZj/afubFcAzZeekaw2JLZVq9rRj5hURX006xRIaUJz+RyocBLoyGYMDf+8MSxNDeDFY2+ vmjl/VobSvaPie+9g9MIXvekC3OxayjVYsSctk242+93vHEuIHdPOeK1bx0SIteucXEKaF RAzo6xLQyR66YUQIQ7Vpm53f32nRGVU= 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.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-179-GbJq4HftOaGNzarW3tnxfg-1; Thu, 29 Jun 2023 11:22:59 -0400 X-MC-Unique: GbJq4HftOaGNzarW3tnxfg-1 Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-763a36c3447so80081485a.3 for ; Thu, 29 Jun 2023 08:22:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688052178; x=1690644178; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3v3kiOPTQWJT5x0akTqbNt9YUeuDzGJrtMMGXY4WEvI=; b=izNhgTK/aKm4tHu6X6lBxWRNOjuTuwOC5nWD7K+bWywXk9rpstPL27ubpkW4eN+hqq aLhnuIbzb2YYE6LQJukV6iw070C5IHj0WVv5HlGOmGKSOrZdWzBBJ8lWXyfwgt3QSkwR bJ8vTqRALZKikRhpmEYhvgSmt1ddEVEm+/Ao1mDhwPJiTcqhpP4yWh7660th83b1licj E1rRtqCbKBFdb907e73QJm6xq6EXJuTjG8REYbpMLVMWPjHXpVRCpGXcgjHdZuFjDdId 8U/c00b/GErTevUn8Dk6Vs/j7RyqmlRiK2wNkBiFSnpHJ/3t9ixO15nVi9SXYBhkHDk6 7C5Q== X-Gm-Message-State: AC+VfDwcDh0XAo4W5L1nkHip8XEVivFQE6kJCTZa45W7+tVlmd1v9/L0 UYpPI40TcmdZzuNg9DeNX/WmSqa6UbEUdVtx2GpRJzV+ae6i0HiuXD66Fzez31s9L5g6XA9Wki6 SSTfeKgabzE//lSnKxu7VdGiPEkY5HIYAhP3HFLSybt2wZkhuJ1xgeA8QIrVP8swC7lVvAoeMP+ 4= X-Received: by 2002:a05:620a:4248:b0:761:fbb5:7421 with SMTP id w8-20020a05620a424800b00761fbb57421mr42223001qko.77.1688052178488; Thu, 29 Jun 2023 08:22:58 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6yNAmOL5yqyoe5qQLzv4PmNrp+P+zO3CN1skFcT/5/6yMJ+MZajCFG4Lqii/QcER9r3CBfKg== X-Received: by 2002:a05:620a:4248:b0:761:fbb5:7421 with SMTP id w8-20020a05620a424800b00761fbb57421mr42222977qko.77.1688052178154; Thu, 29 Jun 2023 08:22:58 -0700 (PDT) Received: from localhost.localdomain (ool-457670bb.dyn.optonline.net. [69.118.112.187]) by smtp.gmail.com with ESMTPSA id z22-20020ae9c116000000b0075c9e048b19sm6342524qki.29.2023.06.29.08.22.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jun 2023 08:22:57 -0700 (PDT) From: Patrick Palka To: gcc-patches@gcc.gnu.org Cc: jason@redhat.com, Patrick Palka Subject: [PATCH] c++: unpropagated CONSTRUCTOR_MUTABLE_POISON [PR110463] Date: Thu, 29 Jun 2023 11:22:55 -0400 Message-ID: <20230629152255.3838604-1-ppalka@redhat.com> X-Mailer: git-send-email 2.41.0.199.ga9e066fa63 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-13.7 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_NONE,RCVD_IN_MSPIKE_H5,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: Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for trunk/13? -- >8 -- cp_fold is neglecting to propagate CONSTRUCTOR_MUTABLE_POISON when folding a CONSTRUCTOR initializer, which for the below testcase causes us to fail to reject a mutable member access of a constexpr variable during constexpr evaluation. PR c++/110463 gcc/cp/ChangeLog: * cp-gimplify.cc (cp_fold) : Propagate CONSTRUCTOR_MUTABLE_POISON. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/constexpr-mutable6.C: New test. --- gcc/cp/cp-gimplify.cc | 2 ++ .../g++.dg/cpp0x/constexpr-mutable6.C | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/constexpr-mutable6.C diff --git a/gcc/cp/cp-gimplify.cc b/gcc/cp/cp-gimplify.cc index 853b1e44236..f5734197774 100644 --- a/gcc/cp/cp-gimplify.cc +++ b/gcc/cp/cp-gimplify.cc @@ -3079,6 +3079,8 @@ cp_fold (tree x, fold_flags_t flags) x = build_constructor (TREE_TYPE (x), nelts); CONSTRUCTOR_PLACEHOLDER_BOUNDARY (x) = CONSTRUCTOR_PLACEHOLDER_BOUNDARY (org_x); + CONSTRUCTOR_MUTABLE_POISON (x) + = CONSTRUCTOR_MUTABLE_POISON (org_x); } if (VECTOR_TYPE_P (TREE_TYPE (x))) x = fold (x); diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-mutable6.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-mutable6.C new file mode 100644 index 00000000000..2c946e388ab --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-mutable6.C @@ -0,0 +1,18 @@ +// PR c++/110463 +// { dg-do compile { target c++11 } } + +struct U { + mutable int x = 1; +}; + +struct V { + mutable int y = 1+1; +}; + +int main() { + constexpr U u = {}; + constexpr int x = u.x; // { dg-error "mutable" } + + constexpr V v = {}; + constexpr int y = v.y; // { dg-error "mutable" } +} -- 2.41.0.199.ga9e066fa63