From patchwork Tue Nov 28 16:51:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 170870 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce62:0:b0:403:3b70:6f57 with SMTP id o2csp4066203vqx; Tue, 28 Nov 2023 08:51:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IGaH1PB/4Atj/o0mcldWLv7eyzqiF8Q5pPkge7K16ZAebRF0u8rmtX5EQE9yZiP7jsJFWkP X-Received: by 2002:a05:620a:8018:b0:77d:883c:b7ba with SMTP id ee24-20020a05620a801800b0077d883cb7bamr13069245qkb.72.1701190310744; Tue, 28 Nov 2023 08:51:50 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701190310; cv=pass; d=google.com; s=arc-20160816; b=pV3DFEiUugWaWba7CFSrolEC2dtCM9u63MYydZHXOuIrRnNO5WCpeIVsKEj1R1X5dK 8qUEpVZXs7BBypQXPsNB4E74YnnYyUzndpl0jMC/VT/1z0S8BynZ1jtsguFOnhw4h/Wp Yjg6clS59SS7b0V7u6HHKKOKYKvnrVLhHP/mvWpyBpi+EXyJOo/T56wbuZNbYZSxzvqN GNsyYyKh/cmMoDL+l8kZs1ueEKVvS4B0JbDj9mViphCUifkACr+g/CwTsKOZrQH4u9iq EYACfnzFYjMNoyWQB8WIkVd7VabAPE7Bvx07sk3t/ltcDqb+Pc+JhFWHEOKq8PDqUIeO JDLQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=hFFBZ+JRsGFJGT52WwmFlyWJE4wlTXFVg7ooGCHMxAA=; fh=1Hi9m88IqcWZGtfSxUrMGG+GBgL26N02X1SANXM6iTs=; b=XJokng/kP5nke4mOF/uVL0imbXf+m3PUu2kyi+Xwhyed3VXNFUsK+tw/iPnD7VRvig 3OdToVddzjC+5l3076vEj/RKfKje7H6RRYzKYUx9r0hTFHHPezEbmK0YVvxww7dDj2Mj cs9T/6oNsv46kntr0rjM5WC4AGM/uEr2ReJIWmotJCD0OrHubk7zYQymAHFXUI6TI0Sn enois1DlJQ932Lq6K1/3gGhquUGgs9p+HC3VA2MjJnen5JfT3pce+ZtkgKeEgoljoVeP gPqcIC8jsyNFnp4W4rtJlxPKN9nZ28pFtfpEE7ruiEcpqDyo8/JLHTbPWArqVZQeSpy1 T3Bw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=dKkqM+w8; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id ee20-20020a05620a801400b0077d7649ef0asi11474632qkb.202.2023.11.28.08.51.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 08:51:50 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=dKkqM+w8; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0A576388205A for ; Tue, 28 Nov 2023 16:51:45 +0000 (GMT) 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 3C8693858C54 for ; Tue, 28 Nov 2023 16:51:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3C8693858C54 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 3C8693858C54 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701190281; cv=none; b=or/fqnfM+Qzja7l1vDzwQ8mSLPnyChKupHdmIF9Augmn7Nf+d+kdzU62D4drL/f+VXkDrUlExJaOOOazokN82L//8I/FPNK8k4ET4PJaMW6mm12fKFMQE+QNQTS7lPbkKCCVMCeh4NxJ/9HDhdPE0UnLCnB4daBsQvZm+DHUQro= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701190281; c=relaxed/simple; bh=W54Inro6d3qBI9JRrPp/6RZ2Xk2JSkuT1kVx/0AGuoA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=rW928A+0+uyEPzcEqXrp6cjOJ9ICP3pTY5IyPWbexRlLNy3fYvekt4AmAigqEJ8ENHbs0dnjPDMpLjE7pcYmKZfg5goTjQ9V+8UEPaN7IKGlVR2/1z9/RGfUUAkX8RBQnBiSkuR6PE+dyqIWfIo9e0EJYvH1Jg52f4cZd7i3YH8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701190279; 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=hFFBZ+JRsGFJGT52WwmFlyWJE4wlTXFVg7ooGCHMxAA=; b=dKkqM+w8Hx90LkxltQK2h0BEoMsW1DeUvDQC/m1D3UrpOV0i1QDmMsWYoDDl2tff12L2yX ZD10oZwlgD3dmdOUYLLOfZzLCvBWYYaMFXEAAWK6B7lL76vHdRowg5lRksfiMPYDaaQpep +LWhhJuCxw4UtbJpaXKKzXg3JHp/W/k= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-91-w51TEQa_Mz2-hsb2M4V_Jw-1; Tue, 28 Nov 2023 11:51:18 -0500 X-MC-Unique: w51TEQa_Mz2-hsb2M4V_Jw-1 Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-67a6277eab6so4695716d6.1 for ; Tue, 28 Nov 2023 08:51:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701190276; x=1701795076; 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=hFFBZ+JRsGFJGT52WwmFlyWJE4wlTXFVg7ooGCHMxAA=; b=LW2yXO9kS6hFPVoXakawsBivQzbODOywcBmrpH9Ep9W41bajGPWO3+2UWqZIv2eZsV 8eZ27QejO0H/FQxz2TnICmNVoDoJkjFLn98v1vthcNKyKVOJcXiYZ1ziioa4S1cSkQ3d CDeDYPx0gfT4X+OLyuAioWk7fjhUWDGZAE4HyshI+tgUY/1SLsHgGRDCKt5zpchj6qfO 3WPgKqIRk0zoHv260GZCCJD0C1vDf0v5mh8jwLVJRlpasN6knHHDHs9eRas8fEuVmyRB CUZqgmJ3Gxr8TPTkBbT0K2Np0uoJAjIr2WXAr3i3XW0x+TFxGo0yOgEiqG6uwuFXvebb oUpA== X-Gm-Message-State: AOJu0YxnnyH/th3jv5zaGNrAnT5tvSOZ1C/z9Q4dJL+QpT7BGMQ9KrXb cabbo9S9JZF6f3wHYc2sWbfIRgG68wTrDvPyUfqzpZwAa15HNTnErC1NboyQSl+wcglcgZ8j4IU MK0kWZJjAVRhC5tD1GuBttXtxYEtCKuD4nfu33ThUlJdcHy6yaK8uWSDdGQ+Mknw7dKt8TGw9N7 E= X-Received: by 2002:a0c:ead0:0:b0:67a:15dd:a99f with SMTP id y16-20020a0cead0000000b0067a15dda99fmr17336380qvp.46.1701190276136; Tue, 28 Nov 2023 08:51:16 -0800 (PST) X-Received: by 2002:a0c:ead0:0:b0:67a:15dd:a99f with SMTP id y16-20020a0cead0000000b0067a15dda99fmr17336358qvp.46.1701190275781; Tue, 28 Nov 2023 08:51:15 -0800 (PST) Received: from localhost.localdomain (ool-457670bb.dyn.optonline.net. [69.118.112.187]) by smtp.gmail.com with ESMTPSA id i7-20020ad44107000000b0067a254f0febsm3547508qvp.146.2023.11.28.08.51.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 08:51:15 -0800 (PST) From: Patrick Palka To: gcc-patches@gcc.gnu.org Cc: jason@redhat.com, Patrick Palka Subject: [PATCH 1/2] c++: casting array prvalue [PR112658, PR94264] Date: Tue, 28 Nov 2023 11:51:11 -0500 Message-ID: <20231128165112.2571430-1-ppalka@redhat.com> X-Mailer: git-send-email 2.43.0.rc1 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.9 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_H4, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_WEB, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783827331443978376 X-GMAIL-MSGID: 1783827331443978376 Bootstrapped and regtested on x86-64-pc-linux-gnu, does this look OK for trunk? -- >8 -- Here we deem the array-to-pointer conversions in both calls as invalid, but we fail to issue a diagnostic for the second call, ultimately because cp_build_c_cast doesn't replay errors from build_const_cast_1. This means the second call get silently discarded leading to wrong/unexpected code. This patch fixes this issue. I'm not sure if we want to accept these conversions in the first place (that's PR94264 or at least related to it), but at least we're more consistent now. PR c++/112658 PR c++/94264 gcc/cp/ChangeLog: * typeck.cc (cp_build_c_cast): If we're committed to a const_cast and the result is erroneous, call build_const_cast_1 a second time to issue errors. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/initlist-array20.C: New test. --- gcc/cp/typeck.cc | 4 +++- gcc/testsuite/g++.dg/cpp0x/initlist-array20.C | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/initlist-array20.C diff --git a/gcc/cp/typeck.cc b/gcc/cp/typeck.cc index e995fb6ddd7..b112bea4d1e 100644 --- a/gcc/cp/typeck.cc +++ b/gcc/cp/typeck.cc @@ -9209,6 +9209,8 @@ cp_build_c_cast (location_t loc, tree type, tree expr, maybe_warn_about_useless_cast (loc, type, value, complain); maybe_warn_about_cast_ignoring_quals (loc, type, complain); } + else if (complain & tf_error) + build_const_cast_1 (loc, type, value, tf_error, &valid_p); return result; } @@ -9244,7 +9246,7 @@ cp_build_c_cast (location_t loc, tree type, tree expr, to succeed. */ if (!same_type_p (non_reference (type), non_reference (result_type))) { - result = build_const_cast_1 (loc, type, result, false, &valid_p); + result = build_const_cast_1 (loc, type, result, tf_none, &valid_p); gcc_assert (valid_p); } return result; diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-array20.C b/gcc/testsuite/g++.dg/cpp0x/initlist-array20.C new file mode 100644 index 00000000000..967b67023f3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-array20.C @@ -0,0 +1,10 @@ +// PR c++/112658 +// { dg-do compile { target c++11 } } + +void f(int*); + +int main() { + using array = int[]; + f(array{42}); // { dg-error "address of temporary array" } + f((int*)array{42}); // { dg-error "address of temporary array" } +} From patchwork Tue Nov 28 16:51:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 170871 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce62:0:b0:403:3b70:6f57 with SMTP id o2csp4066216vqx; Tue, 28 Nov 2023 08:51:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IH0gq6xAOHUIi0Cr+GWiR0aupngK4aYtEoqGJoJuv6wwP8juqpKP/oqJ90xGU2I89yVf1o3 X-Received: by 2002:a05:6214:1043:b0:67a:4a76:800d with SMTP id l3-20020a056214104300b0067a4a76800dmr5992131qvr.32.1701190312217; Tue, 28 Nov 2023 08:51:52 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701190312; cv=pass; d=google.com; s=arc-20160816; b=Gtw182s4dwBTMYWnBpQP2epZVj7f2Ab9MSN+fcUk49+9P5Ub+7dOm9uAmyRWlqb1Pj 9vZ0WEtv1O//RuldreTswgc5WHEKQU1DfmCF0xuYUCxjeoVkjgftNTyqE+wPTr7dt+vl 4Qk/ePjVH+i/MrMzr1JuHitKvCnTxVNgVEDpzBXMa3GZeyUdn+d4W1t3Fa5oZ+oeQ/J0 k9yuDZCPELyzjNOm2FGPdjFMSQkm6lxnKOhei3K8NwTVmZDl0/oCEJjCzRhqvtsYp/Pq e5smwBV1UKo/diaSM9XGj0leep5e3/P0yzkDgjHek0OOQMo4YirhR17nGd2mqMkkOWBh lSNw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:arc-filter:dmarc-filter:delivered-to; bh=UOHjamqEJ94xQda4rDRGnARE1FxaWQ+1kttX7DsXwKo=; fh=1Hi9m88IqcWZGtfSxUrMGG+GBgL26N02X1SANXM6iTs=; b=J90wmE0HPuxJ5HLr0QpyedLnkNcSX1qeqAZ90cZadezbvv43wHMvwGMTBQGw7Xw6B2 4MyJY7nyVhda+5JrlIkd/zeHVcGG+be9RU8PHJYUNOpesriKcPM3g9GI+mxlHrD+mQtv Rr34ugs8CjD1SLgf6LXRHhP/av7c4jpyuEcwqYBbDhfM+JXTfm8sC8tJFlUGAkPobn0s N80oUGTMIAQyerMCzoEwsrwL+WUBstwggFXQk+NDyLUi/xR4laRqXawRoJ2cJ7upuSUq wCUAuSgH4GYdBvvUT/3lIZ7OoFstp+8l5CN9qTFaDJbpq7iiT4SwvowDVbBkzH+uTYhW NRWA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=H2XkaEOs; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id l10-20020ad4408a000000b0067a39cb2609si5609520qvp.322.2023.11.28.08.51.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 08:51:52 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=H2XkaEOs; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D5FFA3875DCA for ; Tue, 28 Nov 2023 16:51:46 +0000 (GMT) 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 9EBB93858C78 for ; Tue, 28 Nov 2023 16:51:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9EBB93858C78 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 9EBB93858C78 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701190282; cv=none; b=Qmtwvd/uXROkiNMItZqMS2aBaQybqzRkXJlMM2OD/6PgCjmWA2XSkY0xcDqNBqz29mBKA6fsPwc50A564HnZv4pMXh0NEnQmb/sW4lLYXNzU35q0hnukhQMXcYk51Hqy19aEW3yq2R3HPfU9+7QMTgAy5Yde2dVi7zoC82VZFF4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701190282; c=relaxed/simple; bh=QiP8DSLoZNLhSPQqxFiFkWvYgNI1jd2mLn2H0TWAUDY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=rTUAINm/Hp5ghj7eWd5HQEC1DcC/R0voJTiqakq3q4q+FoYLBVOUxvJKI4IejF4tOhayOPjbpOADiwrb43V6laRws/o/DMyAQYC0bC1cCAKHinsP5stksZeVvH94KX2HlxMdg0FLHHq4wMh/LU+qyNd42LEUAkQtz/ePz1V2qcQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701190281; 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=UOHjamqEJ94xQda4rDRGnARE1FxaWQ+1kttX7DsXwKo=; b=H2XkaEOsaky1tpWeSinaCkVc2JR5ukgUgj90WlWrfIO6QhdAIQf2NVdrWks1BkLJLUE+mE zq1S48bgCtalM2QCFIWeSBObuKIN7TRM+vf9nMRXDgPm0e3bmiQ6XYlf9jj0acXP+2L+LV 9MN+/wLvyLT90qn98Bu4KdpX5COYQfc= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-463-htxZp46bM_yHQEm3dNSdGw-1; Tue, 28 Nov 2023 11:51:20 -0500 X-MC-Unique: htxZp46bM_yHQEm3dNSdGw-1 Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-67a3b35f343so31856826d6.3 for ; Tue, 28 Nov 2023 08:51:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701190279; x=1701795079; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UOHjamqEJ94xQda4rDRGnARE1FxaWQ+1kttX7DsXwKo=; b=A5/ZleG4eVbWA+Hd/RF8xZSFbgLCfFkUMxCudWpSj+9LczVkrZ3I/PteknZrl+kdH7 qMa1o5ft2q/omDKAcTPqXRqHbK9zrzpnGA68GBHDaMGMnHs32bGUXibexPDwVL3oFmPx gjP3him7+wEcBrsUzGSJZL9dMEjBXI5PkxRSicxYtagjhxSygb9IfkOyXpoRydiQxmsi ZePXVjBnwq1qQfFZOPmaX+Ake4TxdQvaCOGeLPKPIjPEpCF9yXPKGjWlprI7ZkyF+MkT kjgNjcqW94ls4keePLMA7xO8q6TMe4tuPhOB+BuL90F7rLiDKrKfO5zHr79pxEYD/gTG WhMw== X-Gm-Message-State: AOJu0Yxnb+/ks6RzW7GutQdoZSbKZEqUD5U4H+XuuKiHN7xqCUBWbIuf n1Hh6K0cn4r9bNMTBu5c8SChmE1g/v87dYiQUFE9Ea9BIPC7IMwl/ykL/kj3NKr0gNqEGWD08yA 6t9mLyGymNEiKLHPziUR3b/PVBSRHIlFfhqN6+3Rp31XUvbI0P+z3Tx7y9QGwGoLgU8JAft8eg9 0= X-Received: by 2002:a05:6214:3103:b0:67a:35c1:2946 with SMTP id ks3-20020a056214310300b0067a35c12946mr11539066qvb.64.1701190278613; Tue, 28 Nov 2023 08:51:18 -0800 (PST) X-Received: by 2002:a05:6214:3103:b0:67a:35c1:2946 with SMTP id ks3-20020a056214310300b0067a35c12946mr11539048qvb.64.1701190278317; Tue, 28 Nov 2023 08:51:18 -0800 (PST) Received: from localhost.localdomain (ool-457670bb.dyn.optonline.net. [69.118.112.187]) by smtp.gmail.com with ESMTPSA id i7-20020ad44107000000b0067a254f0febsm3547508qvp.146.2023.11.28.08.51.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 08:51:16 -0800 (PST) From: Patrick Palka To: gcc-patches@gcc.gnu.org Cc: jason@redhat.com, Patrick Palka Subject: [PATCH 2/2] c++: guard more against undiagnosed error_mark_node [PR112658] Date: Tue, 28 Nov 2023 11:51:12 -0500 Message-ID: <20231128165112.2571430-2-ppalka@redhat.com> X-Mailer: git-send-email 2.43.0.rc1 In-Reply-To: <20231128165112.2571430-1-ppalka@redhat.com> References: <20231128165112.2571430-1-ppalka@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.9 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_H4, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_WEB, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783827332757230173 X-GMAIL-MSGID: 1783827332757230173 This adds a sanity check to cp_parser_expression_statement similar to the one in finish_expr_stmt added by r6-6795-g0fd9d4921f7ba2, which effectively downgrades accepts-invalid/wrong-code bugs like this one into ice-on-invalid/ice-on-valid ones. PR c++/112658 gcc/cp/ChangeLog: * parser.cc (cp_parser_expression_statement): If the statement is erroneous, make sure we've seen an error. --- gcc/cp/parser.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 2464d1a0783..743d6517b09 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -12962,6 +12962,9 @@ cp_parser_expression_statement (cp_parser* parser, tree in_statement_expr) if (statement == error_mark_node && !cp_parser_uncommitted_to_tentative_parse_p (parser)) { + /* If we ran into a problem, make sure we complained. */ + gcc_assert (seen_error ()); + cp_parser_skip_to_end_of_block_or_statement (parser); return error_mark_node; }