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 1DF8B3858CDA for ; Mon, 11 Dec 2023 23:03:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1DF8B3858CDA Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1DF8B3858CDA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702335800; cv=none; b=AcPUDIyELZR87LdIzxzM6qPXlMrGi9kRxtgGKfdffK1721cFNRrPzj5dsAFA59LEvZ71kh1o3froOetapfLnczkgvJpYrBRMLzHfQkTlYjtD7aXcay7NGKdVUVC01jsNXvEmkTj0Nu9IIJA0Gxcuux72xl9wwaCJEXCkAQFi+bE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702335800; c=relaxed/simple; bh=OAWK8kFWukTbG69Bn4LrlTnJuurxbg83BpBav5il9Eg=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=SCMPMKIjWsw3cGMPmaoJNO1f8vQW/KSqGtlv9egN8MXZOORXmINcsUzPWh1LkdZciFXvuu7NqiHMkwU5YOSvdJttAJOG8TrXIcFI6frV3mH7/ux0T9uOZ+k3t4HggOaduPnPb+73uL7uLnb5nkWqkTxphDqFKhWYCDWpdHBnsj4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1702335798; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references; bh=HL6Iew23AVvJfP78RxG5brglSljPksWPkQ7PDWtvtMk=; b=ERkX33ZR0JIEr80pQzFZ6Bbfe/fTCUT/Xk81y5BlxX6Za/wJ5cKuvViNprQnifU/SI6hyl qNKXLXt8K3z4f8qhMQKXFBmsOMQf7VPmlHN/xLGiJ9yBmGfmeO0lYCwZOksnCBublbalJ9 6jhYG0WKbCR7sn+Zppw7Lwzxt71ut2s= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-660-ByUSZdcYPY-04mlCLtKLCw-1; Mon, 11 Dec 2023 18:03:15 -0500 X-MC-Unique: ByUSZdcYPY-04mlCLtKLCw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 79481836F20; Mon, 11 Dec 2023 23:03:15 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.39.192.92]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 32D092026D66; Mon, 11 Dec 2023 23:03:15 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.17.1/8.17.1) with ESMTPS id 3BBN3Bid3352191 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 12 Dec 2023 00:03:11 +0100 Received: (from jakub@localhost) by tucnak.zalov.cz (8.17.1/8.17.1/Submit) id 3BBN3Aoa3352145; Tue, 12 Dec 2023 00:03:10 +0100 Date: Tue, 12 Dec 2023 00:03:10 +0100 From: Jakub Jelinek To: Jason Merrill Cc: Marek Polacek , Richard Biener , Nathaniel Shead , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] c++: End lifetime of objects in constexpr after destructor call [PR71093] Message-ID: Reply-To: Jakub Jelinek References: <5095B3D3-E545-4827-82BB-F7FD321F0225@suse.de> MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-9.4 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_H3,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 Mon, Dec 11, 2023 at 05:00:50PM -0500, Jason Merrill wrote: > In discussion of PR71093 it came up that more clobber_kind options would be > useful within the C++ front-end. > > gcc/ChangeLog: > > * tree-core.h (enum clobber_kind): Rename CLOBBER_EOL to > CLOBBER_STORAGE_END. Add CLOBBER_STORAGE_BEGIN, > CLOBBER_OBJECT_BEGIN, CLOBBER_OBJECT_END. > * gimple-lower-bitint.cc > * gimple-ssa-warn-access.cc > * gimplify.cc > * tree-inline.cc > * tree-ssa-ccp.cc: Adjust for rename. I doubt the above style will make it through the pre-commit hook, but I might be wrong. > --- a/gcc/gimple-lower-bitint.cc > +++ b/gcc/gimple-lower-bitint.cc > @@ -806,7 +806,7 @@ bitint_large_huge::handle_operand (tree op, tree idx) > && m_after_stmt > && bitmap_bit_p (m_single_use_names, SSA_NAME_VERSION (op))) > { > - tree clobber = build_clobber (TREE_TYPE (m_vars[p]), CLOBBER_EOL); > + tree clobber = build_clobber (TREE_TYPE (m_vars[p]), CLOBBER_STORAGE_END); This needs line wrapping I think. > @@ -2100,7 +2100,7 @@ bitint_large_huge::handle_operand_addr (tree op, gimple *stmt, > ret = build_fold_addr_expr (var); > if (!stmt_ends_bb_p (gsi_stmt (m_gsi))) > { > - tree clobber = build_clobber (m_limb_type, CLOBBER_EOL); > + tree clobber = build_clobber (m_limb_type, CLOBBER_STORAGE_END); This too. > && flag_stack_reuse != SR_NONE) > { > - tree clobber = build_clobber (TREE_TYPE (t), CLOBBER_EOL); > + tree clobber = build_clobber (TREE_TYPE (t), CLOBBER_STORAGE_END); > gimple *clobber_stmt; > clobber_stmt = gimple_build_assign (t, clobber); > gimple_set_location (clobber_stmt, end_locus); > @@ -7417,7 +7417,7 @@ gimplify_target_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) > { > if (flag_stack_reuse == SR_ALL) > { > - tree clobber = build_clobber (TREE_TYPE (temp), CLOBBER_EOL); > + tree clobber = build_clobber (TREE_TYPE (temp), CLOBBER_STORAGE_END); > clobber = build2 (MODIFY_EXPR, TREE_TYPE (temp), temp, clobber); > gimple_push_cleanup (temp, clobber, false, pre_p, true); > } These too. > diff --git a/gcc/tree-inline.cc b/gcc/tree-inline.cc > index a4fc839a22d..cca3227fa89 100644 > --- a/gcc/tree-inline.cc > +++ b/gcc/tree-inline.cc > @@ -5136,7 +5136,7 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id, > && !is_gimple_reg (*varp) > && !(id->debug_map && id->debug_map->get (p))) > { > - tree clobber = build_clobber (TREE_TYPE (*varp), CLOBBER_EOL); > + tree clobber = build_clobber (TREE_TYPE (*varp), CLOBBER_STORAGE_END); > gimple *clobber_stmt; > clobber_stmt = gimple_build_assign (*varp, clobber); > gimple_set_location (clobber_stmt, gimple_location (stmt)); > @@ -5208,7 +5208,7 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id, > && !is_gimple_reg (id->retvar) > && !stmt_ends_bb_p (stmt)) > { > - tree clobber = build_clobber (TREE_TYPE (id->retvar), CLOBBER_EOL); > + tree clobber = build_clobber (TREE_TYPE (id->retvar), CLOBBER_STORAGE_END); > gimple *clobber_stmt; > clobber_stmt = gimple_build_assign (id->retvar, clobber); > gimple_set_location (clobber_stmt, gimple_location (old_stmt)); And these. Otherwise LGTM. Jakub