From patchwork Sun Feb 2 22:26:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: A J Ryan Solutions Ltd X-Patchwork-Id: 105889 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 AAA6A3858405 for ; Sun, 2 Feb 2025 22:29:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AAA6A3858405 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=ajryansolutions.co.uk header.i=@ajryansolutions.co.uk header.a=rsa-sha256 header.s=dkim header.b=YGl2SzE1 X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-200162.simplelogin.co (mail-200162.simplelogin.co [176.119.200.162]) by sourceware.org (Postfix) with ESMTPS id 194A53858D1E for ; Sun, 2 Feb 2025 22:26:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 194A53858D1E Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=ajryansolutions.co.uk Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ajryansolutions.co.uk ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 194A53858D1E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=176.119.200.162 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1738535202; cv=pass; b=Nq8jykxzCilBfEVVPsr/aFZTOF/hTM7FwGYRuWMI1vcoFZWo7RSIzSW3ptlXXexEePzxSWgviNbbv4zZDo+kUk7WZC3/GkWCl5pHCxRU901Co8V1dguNGzsMxxmImqRNDinIQMmAEAp3+KcrUz1A5040Nrqn+Csl6ufHX64T50c= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1738535202; c=relaxed/simple; bh=yrITLBRG25FHEJOddRD7j+UUsvzssEOOQ2AQf3imYA0=; h=DKIM-Signature:Date:Subject:MIME-Version:From:To:Message-ID; b=uzKc+54HDJtoSChTsDBzCMZwZin23Pr5ANvKhvwTzKFmHZpLpeNxQj+vSH+yjXeuQtx1IuSB2En0ft7oek49gN9rBf06xK8kgORY+2M0ReecIUXprKpDFSUaQdN8Ppc3jyLftw1maHXNtHCQvHdC2C+uMXHjN6mEFWZu2EolsKE= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 194A53858D1E ARC-Seal: i=1; a=rsa-sha256; d=simplelogin.co; s=arc-20230626; t=1738535199; cv=none; b=V2Q2W2CrIFCG+U+hnhif5DhQ3tWnZtmZKOg77ssNjuTiy+rfQ2rUjQ9QRppdzULzUDsWwPbTQS+tzZmiXD9YvQnwV7IV9NNREesLrqjhOzmqfX0rvQvDCHna+w3uu/5JpvUILgn9gy1n2kk9/pIVRJh3jd8rY1ZvEXkyJLdyKYCAxbP/RrGk40ly0+yaS/a/QZDb/iw7JNU4X2YP4lYIsPn1s1xrhipULBBnhTpZZFV/mfXGQC+G4lc75POYdMNb/Shgh+zcYiLByMrDnPLWFaBnOOR2vA3H81PMHtwJD845hiFUrUBiSjp3MZBWlbyOsu0TUTxN67DgXl0lUBZfTA== ARC-Message-Signature: i=1; a=rsa-sha256; d=simplelogin.co; s=arc-20230626; t=1738535199; c=relaxed/simple; bh=yrITLBRG25FHEJOddRD7j+UUsvzssEOOQ2AQf3imYA0=; h=Date:Subject:From:To; b=ymwV5jMec4SdRXeNr9iyRmYFzfW95ISdXS1fPRCQvwr4Obx/aOf8M9zKX8cED7SnF71eHfXVBwkzoVk9QPUYodAkAmG1flWEcF67oUUmmCs8tt9fBRXe9qkfsdF4YNfLrVvVEYhsbLNbOSv0b+26wft4/Og0WrDkjPlaw+PMrmIAu5crFk+y25uAnImycEFaTWXB/k3gVzHnn1gY5NI3Yf/NftNgN84wU/TETMlERpd8z8S8bRYwDDJ7AD9H0SDef/7ZjSeSIWoeLG9eLN9XisXTqovy4W+o2/M+Y9W0RAhNPzU4wr2U0nG/Zh40y6XCziH4xtIa7Z1WvvJ8eK8I1g== ARC-Authentication-Results: i=1; mail.protonmail.ch DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ajryansolutions.co.uk; s=dkim; t=1738535199; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yrITLBRG25FHEJOddRD7j+UUsvzssEOOQ2AQf3imYA0=; b=YGl2SzE1NXIC+tccMyfbrHXrLoWGULM6a4uAGqVb+jN5eNdlaXZqaw+y6a/p4anZNKHdI4 XP037sZj9YEy4rAuDt0lEpqHTbvWArjZLbTzpg82tWYcVaxhYsNeaIaMImQLiuwBUTkLpd mZCqfeSkE5OXWmOjtWgXbjPIev1zdGc= Date: Sun, 02 Feb 2025 22:26:32 +0000 Subject: [PATCH v2] c++: Add tree walk case to reach A pack from B in ...B> [PR118265] MIME-Version: 1.0 From: A J Ryan Solutions Ltd To: gcc-patches@gcc.gnu.org Message-ID: <173853519910.6.8730848112244089249.586786770@ajryansolutions.co.uk> X-SimpleLogin-Type: Reply X-SimpleLogin-EmailLog-ID: 586786770 X-SimpleLogin-Want-Signing: yes X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, KAM_COUK, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, TXREP 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~patchwork=sourceware.org@gcc.gnu.org This version has all the updates as per feedback from version 1. It makes a minor correction to the code styling, reformats the commit message and moves the test into the cpp1z directory. In addition I've updated the test to conform with c++17 for better coverage. Andrew Pinski had put one up on the ticket to use, it would be c++20, I can switch it to that if there was another reason to use it that I've overlooked. Regards Adam Ryan From 966d4d2d9cdf7181162f15ff0e167270a8207b32 Mon Sep 17 00:00:00 2001 From: Adam J Ryan Date: Wed, 1 Jan 2025 13:31:01 +0000 Subject: [PATCH] Add tree walk case to obtain A pack in ...B>. For non-type parameter packs when unifying the arguments in unify_pack_expansion it iterates over the associated packs of a param so that when it recursively unifies the param with the arguments it knows which targs have been populated with parameter pack arguments that it can then collect up. This change adds a tree walk so that in the example above it reaches ...A and adds it to the associated packs for ...B and therefore knows it will have been set in targs in unify_pack_expansion and processes it as per other pack arguments. PR c++/118265 gcc/cp/ChangeLog: * pt.cc (find_parameter_packs_r) : Walk into the type of a parameter pack. Signed-off-by: Adam J Ryan --- gcc/cp/pt.cc | 5 +++++ gcc/testsuite/g++.dg/cpp1z/variadic-nontype1.C | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp1z/variadic-nontype1.C diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 77583dd6bb5..61ba4b98e3d 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -4010,6 +4010,11 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data) &find_parameter_packs_r, ppd, ppd->visited); return NULL_TREE; + case TEMPLATE_PARM_INDEX: + if (parameter_pack_p) + WALK_SUBTREE (TREE_TYPE (t)); + return NULL_TREE; + case DECL_EXPR: { tree decl = DECL_EXPR_DECL (t); diff --git a/gcc/testsuite/g++.dg/cpp1z/variadic-nontype1.C b/gcc/testsuite/g++.dg/cpp1z/variadic-nontype1.C new file mode 100644 index 00000000000..ad2af623b13 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/variadic-nontype1.C @@ -0,0 +1,18 @@ +// { dg-do compile { target c++17 } } +struct Class1 +{ + void apply_bool(bool){} + void apply_char(char){} +}; + +template struct Class2; +template struct Class2 +{ + void apply(){} +}; + +int main() +{ + Class2<&Class1::apply_bool, &Class1::apply_char> class2; + class2.apply (); +} -- 2.43.0