From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from a51-106.smtp-out.eu-west-1.amazonses.com (a51-106.smtp-out.eu-west-1.amazonses.com [54.240.51.106]) by sourceware.org (Postfix) with ESMTPS id 3BC213858C50 for ; Thu, 30 May 2024 11:31:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3BC213858C50 Authentication-Results: sourceware.org; dmarc=fail (p=quarantine dis=none) header.from=nasilyan.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eu-west-1.amazonses.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3BC213858C50 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.240.51.106 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717068709; cv=none; b=e9vNpUsv7WZLl7NGtrkic1ghuf8r6/wnTkLaPNGYXaxk0jQMxI1yiJUFTTfmrSxRxg0ZuEKTD59tJs0BmDJGtEGYQCU5QCVS4eZG45hez2e/7Ne4lEWlekV53Um8rl4wtxrrkLGWCRnONU5dBXS0x1q5IBswSqWH5AthIG+T2tc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717068709; c=relaxed/simple; bh=63WngfMQf0Hx41rC8GUFUrDRibqT5e1j6mauZXFElns=; h=DKIM-Signature:DKIM-Signature:Subject:From:To:Date:Mime-Version: Message-ID; b=YDkAZWLM3u2wCBgNHWPaOz//KU5+myBDlGzNZSD/iJx2m8ky/0oBV4jXH1vmSQYsHhlcn1n4aNIwkeKFtz/JXBjkuT/ZyNXG9sOc43zCkRwAuV+/t0y7NRwAllUtVX3ox7rXkJ7Xn/hBncC3L1iXWsF4y4vPIqg5uzbTT29x96s= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=xce2voaxvxhmx73p47whqmbxwwvd7qkl; d=nasilyan.com; t=1717068706; h=Subject:From:To:Date:Mime-Version:Content-Type:Content-Transfer-Encoding:References:Message-Id; bh=63WngfMQf0Hx41rC8GUFUrDRibqT5e1j6mauZXFElns=; b=aWGpIgrnEnHE3Plerm6rHmhAXr/eXvjytSGvTqmU87H8IPmn2arO+zjMxne0gwAT QOg01dLS5e1TSqAiv+1WeX1NDYceCdu5ZzpYo3DxQDR0Mr3YvLnFOmWqO3s2v50EOzE Py0hO5cuJYTHEXiRBQwZicDQpKn4aAHyf7vOzS9A= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=uku4taia5b5tsbglxyj6zym32efj7xqv; d=amazonses.com; t=1717068706; h=Subject:From:To:Date:Mime-Version:Content-Type:Content-Transfer-Encoding:References:Message-Id:Feedback-ID; bh=63WngfMQf0Hx41rC8GUFUrDRibqT5e1j6mauZXFElns=; b=ProagslpTS+P37YuIE7JWQiDAQD6spMY/4n/1c/bDpcT9E2zV6B4QnFryPG3Zcpg EgwxkwWSSeuvTIh6VpxZ3epTksTDr9wbQzCgWe8OORj5hKOpRN7sh9tSFuOz+Lo5k77 Zrc4wZDhFVM2kiIt/nIy4iqmX8Lvws9lPxosb7vM= Subject: [PATCH] Fix PR c++/111106: missing ; causes internal compiler error From: =?UTF-8?Q?Simon_Martin?= To: =?UTF-8?Q?gcc-patches=40gcc=2Egnu=2Eorg?= Date: Thu, 30 May 2024 11:31:45 +0000 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable References: <20240530113143.17575-1-simon@nasilyan.com> X-Mailer: Amazon WorkMail Thread-Index: AQHasoTzXPjKUt2mTtaXG9duNZPLgg== Thread-Topic: [PATCH] Fix PR c++/111106: missing ; causes internal compiler error X-Original-Mailer: git-send-email 2.44.0 X-Wm-Sent-Timestamp: 1717068705 Message-ID: <0102018fc9453036-6366d52e-2ec5-4ee3-a7c5-89336bb1b00f-000000@eu-west-1.amazonses.com> Feedback-ID: ::1.eu-west-1.b24dn6frgCi6dh20skzbuMRr7UL8M6Soir/3ogtEjHQ=:AmazonSES X-SES-Outgoing: 2024.05.30-54.240.51.106 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,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: We currently fail upon the following because an assert in dependent_type_= p=0D=0Afails for f's parameter=0D=0A=0D=0A=3D=3D=3D cut here =3D=3D=3D=0D= =0Aconsteval int id (int i) { return i; }=0D=0Aconstexpr int=0D=0Af (auto= i) requires requires { id (i) } { return i; }=0D=0Avoid g () { f (42); }= =0D=0A=3D=3D=3D cut here =3D=3D=3D=0D=0A=0D=0AThis patch fixes this by ha= ndling synthesized parameters for abbreviated=0D=0Afunction templates in = that assert.=0D=0A=0D=0ASuccessfully tested on x86_64-pc-linux-gnu.=0D=0A= =0D=0A=09PR c++/111106=0D=0A=0D=0Agcc/cp/ChangeLog:=0D=0A=0D=0A=09* pt.cc= (dependent_type_p): Relax assert to handle synthesized template=0D=0A=09= parameters when !processing_template_decl.=0D=0A=0D=0Agcc/testsuite/Chang= eLog:=0D=0A=0D=0A=09* g++.dg/cpp2a/consteval37.C: New test.=0D=0A=0D=0A--= -=0D=0A gcc/cp/pt.cc | 6 +++++-=0D=0A gcc/te= stsuite/g++.dg/cpp2a/consteval37.C | 19 +++++++++++++++++++=0D=0A 2 files= changed, 24 insertions(+), 1 deletion(-)=0D=0A create mode 100644 gcc/te= stsuite/g++.dg/cpp2a/consteval37.C=0D=0A=0D=0Adiff --git a/gcc/cp/pt.cc b= /gcc/cp/pt.cc=0D=0Aindex dfce1b3c359..a50d5cfd5a2 100644=0D=0A--- a/gcc/c= p/pt.cc=0D=0A+++ b/gcc/cp/pt.cc=0D=0A@@ -28019,7 +28019,11 @@ dependent_t= ype_p (tree type)=0D=0A /* If we are not processing a template, the= n nobody should be=0D=0A =09 providing us with a dependent type. */=0D=0A= gcc_assert (type);=0D=0A- gcc_assert (TREE_CODE (type) !=3D T= EMPLATE_TYPE_PARM || is_auto (type));=0D=0A+ gcc_assert (TREE_CODE (= type) !=3D TEMPLATE_TYPE_PARM || is_auto (type)=0D=0A+=09=09 || (/* Synt= hesized template parameter */=0D=0A+=09=09 DECL_TEMPLATE_PARM_P (TEM= PLATE_TYPE_DECL (type)) &&=0D=0A+=09=09 (DECL_IMPLICIT_TEMPLATE_PARM= _P=0D=0A+=09=09 (TEMPLATE_TYPE_DECL (type)))));=0D=0A return = false;=0D=0A }=0D=0A=20=0D=0Adiff --git a/gcc/testsuite/g++.dg/cpp2a/= consteval37.C b/gcc/testsuite/g++.dg/cpp2a/consteval37.C=0D=0Anew file mo= de 100644=0D=0Aindex 00000000000..ea2641fc204=0D=0A--- /dev/null=0D=0A+++= b/gcc/testsuite/g++.dg/cpp2a/consteval37.C=0D=0A@@ -0,0 +1,19 @@=0D=0A+/= / PR c++/111106=0D=0A+// { dg-do compile { target c++20 } }=0D=0A+=0D=0A+= consteval int id (int i) { return i; }=0D=0A+=0D=0A+constexpr int f (auto= i) // { dg-line line_1 }=0D=0A+ requires requires { id (i) } // { dg-er= ror "expected|invalid use" }=0D=0A+{=0D=0A+ return i;=0D=0A+}=0D=0A+=0D=0A= +void g () {=0D=0A+ f (42); // { dg-error "parameter 1" }=0D=0A+}=0D=0A+= =0D=0A+// { dg-error "constraints on a non-templated" {} { target *-*-* }= line_1 }=0D=0A+// { dg-error "has incomplete type" {} { target *-*-* } l= ine_1 }=0D=0A+// { dg-error "invalid type for" {} { target *-*-* } line_1= }=0D=0A+// { dg-note "declared here" {} { target *-*-* } line_1 }=0D=0A-= -=20=0D=0A2.44.0=0D=0A=0D=0A