[{"id":3678192,"web_url":"http://patchwork.ozlabs.org/comment/3678192/","msgid":"<002fad00-088d-4106-9fcf-33053f457fba@redhat.com>","list_archive_url":null,"date":"2026-04-16T13:49:05","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":4337,"url":"http://patchwork.ozlabs.org/api/people/4337/","name":"Jason Merrill","email":"jason@redhat.com"},"content":"On 4/15/26 7:36 PM, Marek Polacek wrote:\n> Update: we can use valid_splice_for_member_access_p also in\n> cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n> check but that was unreachable anyway due to the dependent_splice_p\n> check above.\n> \n> Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n\nOK.  Incidentally,\n\n> -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n\nthis might be a better implementation of reflection_function_template_p?\n\nJason","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=FGVF+638;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=FGVF+638","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxKBh3jC7z1yG9\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 23:49:48 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 8558F4B9DB69\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 13:49:46 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id 16AAE4BA9014\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 13:49:10 +0000 (GMT)","from mail-qk1-f197.google.com (mail-qk1-f197.google.com\n [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-8-AcBFrjA5PD2u8w_puuF9bA-1; Thu, 16 Apr 2026 09:49:08 -0400","by mail-qk1-f197.google.com with SMTP id\n af79cd13be357-8d4c2906fdfso880982885a.2\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 06:49:08 -0700 (PDT)","from [192.168.50.130]\n (130-44-146-247.s12789.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com.\n [130.44.146.247]) by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8e4f2d037e7sm364172285a.35.2026.04.16.06.49.05\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 16 Apr 2026 06:49:05 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 8558F4B9DB69","OpenDKIM Filter v2.11.0 sourceware.org 16AAE4BA9014"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 16AAE4BA9014","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 16AAE4BA9014","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776347350; cv=none;\n b=wykbVOTvD6/ggPNIVDPcRkKQQHifGq/F/ppzXBE7GIh30Y1xWJejcsqLeRnte0swR/OCyimJ9de5kLQBVjLf9LOly9QwWCypSEHf3BxAzbIGPgyLXOKmFq9p6GngTYmQHA1BlgmPwP+0LJUfPNQVg4tdvtvPoIvElIYyqB6o+sM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776347350; c=relaxed/simple;\n bh=pD80NRH742x7kcm5It4AI2Dr3vagL0VHkFe7JPm94I0=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=S1TdLnB9xGliaqIShV/XTLL/8FzJs2pk0VgFuRlmMnbSpsimGsWRKuuqasEfA+lQTnw+RCfrlqRJX/ShbIsrtla/3S75wPOM75ZwpGxcrj8c5l/zxbS929xkJAr0omSBtBQe8lCM1sTFQwcMXRcryheSYVGNUdIQJiofzLse3j0=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776347349;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=VNLB9c1lXw03oWwBKuM0VXpeHFNgk3txy/h1hedZhXU=;\n b=FGVF+6382x5OQIMbVHVjBYCt3ebIDs7g8+EoNAtf8nWDyQPPRXrjeM0SjywQXO17huw4BY\n 2OOpTS9yjIEUYGzoKT8dzZ1i6Xrmwnxms7ifpu5/OIk/3VbGtYnNgB6xSoeaCMSQIxfKzH\n 5tizJfK4qTUmCXfu8KzOdxb9RfauG2Y=","X-MC-Unique":"AcBFrjA5PD2u8w_puuF9bA-1","X-Mimecast-MFC-AGG-ID":"AcBFrjA5PD2u8w_puuF9bA_1776347348","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776347347; x=1776952147;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=VNLB9c1lXw03oWwBKuM0VXpeHFNgk3txy/h1hedZhXU=;\n b=AfwFHQCAjOTDmZTpdOZUNHFln/bK03l+1SGrpc06TBmPLGs+ancGonj4IRmoGmnJFO\n YreJb6mdyegVK21HFR18ruFSkrs8x6Nwh1DXp6hRkPZ4mrJc3x4tJyMvq/ZwY/7tn8Er\n th+3Tt7VFXbhp3XB2w7cgYWomqTYXmjZENcfprn/uLm0Q9fdyyl20HYecyuAwUWyYgR6\n ZloMSDAqSvfhXAwLsRYClXtx0+2sGJaH/3wnNLf8IG+1iZl0/K25ayJ+ozpEjnYAvK4f\n mMWbyFpwJFfrqa0Xo0bKL0DPjl76qt6/QpOiK1Vv8hVHwtwnPRlNzdefUmGXTaH+zldh\n P7Jg==","X-Forwarded-Encrypted":"i=1;\n AFNElJ/WV2ll01ocogGYVGC5zJyzcO3NmeW2uV4MfhiUcDqyxDYG46gJ8B6cV5HrOwrM2MS9ZAH4vYPnXqWxqw==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YzJtgExkj82ipSM0/wZKW5/IR7vs0cJCVd3S4nlzntCJ1fzpB1V\n 1ocP+3skH/ZUTRFXCxUX5LbG1GWmSe8wKFnJ0R3vHEwDumZNkLreUql4gPYGiECHAfQSb3nzlmf\n baNpGkoVHTNT/3PG1zEHTUt3Ws1cRmVraK8s0WrR4f9xHYmMNFG5oKV/E9B81VCeU6z3rUg==","X-Gm-Gg":"AeBDietelNiG7UCgx09PbV3ELFY1brHCRa3ND9XVpB+gyDCTKqeDw9zDmhEVPqbJb7k\n x9YApHMedTgSBPwKlAlbAjdzYB3ysdl2uZQPn4hcfAyvASxKgAmMqjmnFkP9R4qyhO2dndyfBYg\n mKG+/cRn5hBqjjmfTqiObjHDPOTCWCzq3NB+GtIefCThAyHxJv9XrXoVZUIJeu3334GqFcR6lOZ\n JQzB4xkQc6/6X7Nhd2FGFT/Gd5CSGP75uGc4zbQPovKJ/Yajae1Z5EW5y8AUUerw1edn/sbBzpM\n klKdpNXw0794SzU7YfwqU87ZPRfcdlyPokMMR+IKjNMfPcIffAYfU4dtVPpWVWxYj+zYSuPLPdL\n Sfx91ELicJKHFxuV0KtaNZeBobRCpqVSH85+1QB25UI5ZEWt7owZLz+juM4Q/HkQAUBEZX8MWqK\n 4Q7yQQsukml/qyIbMlFrI2EFMFluqabzYq8r6aIK9LpA==","X-Received":["by 2002:a05:620a:a0cc:20b0:8dd:e092:2724 with SMTP id\n af79cd13be357-8dde0922848mr2655367685a.60.1776347346961;\n Thu, 16 Apr 2026 06:49:06 -0700 (PDT)","by 2002:a05:620a:a0cc:20b0:8dd:e092:2724 with SMTP id\n af79cd13be357-8dde0922848mr2655363185a.60.1776347346478;\n Thu, 16 Apr 2026 06:49:06 -0700 (PDT)"],"Message-ID":"<002fad00-088d-4106-9fcf-33053f457fba@redhat.com>","Date":"Thu, 16 Apr 2026 09:49:05 -0400","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","To":"Marek Polacek <polacek@redhat.com>, GCC Patches\n <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>","From":"Jason Merrill <jason@redhat.com>","In-Reply-To":"<aeAg83cavdrK6uzd@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"D7wOzR2eWMUmudG2euheN7_B6TQ7Dzz30mu-D6pE-go_1776347348","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678200,"web_url":"http://patchwork.ozlabs.org/comment/3678200/","msgid":"<aeDq4W_ZZPafmIKC@redhat.com>","list_archive_url":null,"date":"2026-04-16T13:57:53","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":14370,"url":"http://patchwork.ozlabs.org/api/people/14370/","name":"Marek Polacek","email":"polacek@redhat.com"},"content":"On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n> On 4/15/26 7:36 PM, Marek Polacek wrote:\n> > Update: we can use valid_splice_for_member_access_p also in\n> > cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n> > check but that was unreachable anyway due to the dependent_splice_p\n> > check above.\n> > \n> > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n> \n> OK.  Incidentally,\n> \n> > -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n> \n> this might be a better implementation of reflection_function_template_p?\n\nIf we do that, then we could drop the reflection_ prefix because\nwe no longer have that \"multiple non-template overloads\" case, and\nuse function_template_p in is_overloaded_fn and in\nvalid_splice_for_member_access_p as well.  \n\nMarek","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=AaEbnlJV;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=AaEbnlJV","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxKNk2V8tz1yHP\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 23:58:28 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id B936F4BA23F9\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 13:58:26 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id 68B7D4BA2E0A\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 13:57:58 +0000 (GMT)","from mail-qk1-f198.google.com (mail-qk1-f198.google.com\n [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-308-pFIOGVKNPB2cQo0k4O0fHQ-1; Thu, 16 Apr 2026 09:57:56 -0400","by mail-qk1-f198.google.com with SMTP id\n af79cd13be357-8cfbfac0e05so138767385a.1\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 06:57:56 -0700 (PDT)","from redhat.com ([2603:7000:9500:10::1db4])\n by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8e4ef33b2a6sm369552785a.14.2026.04.16.06.57.54\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 16 Apr 2026 06:57:54 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org B936F4BA23F9","OpenDKIM Filter v2.11.0 sourceware.org 68B7D4BA2E0A"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 68B7D4BA2E0A","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 68B7D4BA2E0A","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776347878; cv=none;\n b=rS9X/kkilT8Pk6kO2Vasa6oXL1RNEnBkpGEpJXSYIkf8ziFLmbj2hm50Gf7w7WB3ofLTxkIDwT/72u3T8vSIlyJ4c+GEiaf+KXHdf3PvCeN+lvbR6zBBl5spcJP5l0AvyYAjOtCLo6ffT9GMqEsJTAdl5dZ3D9WhOKsC8hRWhaE=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776347878; c=relaxed/simple;\n bh=avUjb3QR0eQUtC87liHuCssTy9nN/SOTYi8cdZvlVx4=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=wWi0FlZogt2Z6Qexn0UAtjS4I6iPZKcpEwBWJw0C6pSsPybPenThypHZOpovKoQUglpX4FrTmXq0p48s4YnP/dSSwjiW1CM72XRtVdebv3N095Hm+MC75/ofHaOHSofvVvTxm7mynVAniNMtiYlKCVDsmbUaPfmO6cakMRAvcRE=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776347878;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=ppaSQkewJWG/PEMKkL+Ig1f7MR16/bUtlhXOcj15DPo=;\n b=AaEbnlJVFWsJClKNQo+82W0xlbml72LoM9BFcNxEO7UUV94jUonUlDTQVxdhUZJ1fubvJt\n XO/Acvz2kGtjRrvsXwlJhRcVVeGJNB57XQs2D2hEfNpf0ozR1g3uydgHCL/8EELxOwwWHb\n QQDnKHjg8zehpMtyVoTyX2zzc5vxTXw=","X-MC-Unique":"pFIOGVKNPB2cQo0k4O0fHQ-1","X-Mimecast-MFC-AGG-ID":"pFIOGVKNPB2cQo0k4O0fHQ_1776347876","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776347876; x=1776952676;\n h=user-agent:in-reply-to:content-disposition:mime-version:references\n :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=ppaSQkewJWG/PEMKkL+Ig1f7MR16/bUtlhXOcj15DPo=;\n b=YG6LSg2ViDMz2AGiFGQNgXqVcwEKxdteFbkpObA81deqwPFokvLduzUU2hepLdMXxH\n 2iQKQw3Klc8Scg/WOFFMlq7nmgf0GjA7KBEhk0reKNeC1dUn5omz3eZ2F+IqW6ycuj4e\n dcHAonLXkU2PJJ/LGn5SnwZHcy0iCo79x9/7Gm/MeCsXGTQAkcCw1EJazkIOaVYjUUYG\n 1p88sif4lg705dcG3T3JUNtg8GoK4M+jJfD6TXYR3UBw4Y2wkonq9Kr2KVrFI6REcYY6\n ArONMstPVJ212Up7XrEbFXj7NbLoHHVJmK/D64q0+LzbylNc/a5NdADnPEBWJ9P+ek6E\n 7Wxg==","X-Gm-Message-State":"AOJu0YzZisY8XrDonraC02va4/ONsdom7UHZYcAqEx9NkOYTFHAAgOJK\n qYKZNvkUiXK6ZJ4p404pdB/c4O//fbtMwlQXQIg0PCMFoVjQEbQglUfCLWYZYK18SAfqkE6VfCa\n Iy4IREboMls19Q/PkYrbQTQ5pQ4dZaV4f6BwiA1/IZ4iXdRQ6h2BvLDtnqg8=","X-Gm-Gg":"AeBDiesuc4z5LPvDmzsyPlYFc7BI1cs2luHBwdRk9h5YGArqjtXRFwpRxjdsOaU6dYA\n S+TmcvxUDkgVJvb1/NLhFASeH/V4NJdD2agvuqC3mZs+rQO4NbM/0h+vXEXfZLO6AQUH8q4XmmS\n htEf4Sd0GLJ72zCR19efNw7DSMN/HPQ+NPD0bNhDzh54CZGG4Hn9kdO8C1Vl1cf778h+fyUCqui\n lOBx1zBWj6VYqrRXeZ+IZ2gDEp2l86QuMCztJcQWtCVk3hyV8dHhLmqZA7J9hKbpZ1hSrBYzdLW\n Y2kDZZHaMEQkJcAU7twSujiRsdhjeGpgsA5tCRf1HVQ1/mlO9qzt1hEcil4TWqalzRPt62YZg+Y\n KyQ==","X-Received":["by 2002:a05:620a:c4e:b0:8d7:c82f:ff7b with SMTP id\n af79cd13be357-8e5de5713c4mr480797185a.35.1776347876088;\n Thu, 16 Apr 2026 06:57:56 -0700 (PDT)","by 2002:a05:620a:c4e:b0:8d7:c82f:ff7b with SMTP id\n af79cd13be357-8e5de5713c4mr480792085a.35.1776347875540;\n Thu, 16 Apr 2026 06:57:55 -0700 (PDT)"],"Date":"Thu, 16 Apr 2026 09:57:53 -0400","From":"Marek Polacek <polacek@redhat.com>","To":"Jason Merrill <jason@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","Message-ID":"<aeDq4W_ZZPafmIKC@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>","MIME-Version":"1.0","In-Reply-To":"<002fad00-088d-4106-9fcf-33053f457fba@redhat.com>","User-Agent":"Mutt/2.3.1 (2026-03-20)","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"cfzeaczUW8Y8Co0gOlukAk6THG-XVTqqFR9q59si-1g_1776347876","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678203,"web_url":"http://patchwork.ozlabs.org/comment/3678203/","msgid":"<cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>","list_archive_url":null,"date":"2026-04-16T14:00:02","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":4337,"url":"http://patchwork.ozlabs.org/api/people/4337/","name":"Jason Merrill","email":"jason@redhat.com"},"content":"On 4/16/26 9:57 AM, Marek Polacek wrote:\n> On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n>> On 4/15/26 7:36 PM, Marek Polacek wrote:\n>>> Update: we can use valid_splice_for_member_access_p also in\n>>> cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n>>> check but that was unreachable anyway due to the dependent_splice_p\n>>> check above.\n>>>\n>>> Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n>>\n>> OK.  Incidentally,\n>>\n>>> -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n>>\n>> this might be a better implementation of reflection_function_template_p?\n> \n> If we do that, then we could drop the reflection_ prefix because\n> we no longer have that \"multiple non-template overloads\" case, and\n> use function_template_p in is_overloaded_fn and in\n> valid_splice_for_member_access_p as well.\n\nI still wouldn't want \"function_template_p\" to be true for an OVERLOAD, \nonly for an actual TEMPLATE_DECL.\n\nJason","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Cw+mqDSk;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Cw+mqDSk","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxKRC45Gzz1yG9\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 00:00:39 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 906AF4B9DB69\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 14:00:37 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 2EA974BA901D\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 14:00:08 +0000 (GMT)","from mail-qk1-f167.google.com (mail-qk1-f167.google.com\n [209.85.222.167]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-221-onLg3174ONWTrf1TkEtwxA-1; Thu, 16 Apr 2026 10:00:06 -0400","by mail-qk1-f167.google.com with SMTP id\n af79cd13be357-8cfc8e7f987so1527225085a.2\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 07:00:06 -0700 (PDT)","from [192.168.50.130]\n (130-44-146-247.s12789.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com.\n [130.44.146.247]) by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8e4ef33afc7sm375568785a.18.2026.04.16.07.00.03\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 16 Apr 2026 07:00:03 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 906AF4B9DB69","OpenDKIM Filter v2.11.0 sourceware.org 2EA974BA901D"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 2EA974BA901D","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 2EA974BA901D","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776348008; cv=none;\n b=cDqCP3S0ZgfZELMhVtc4NggESAJqPCkvThJjtP+Ty0usKmjms406CcV55A8WBPBnIKbRctGUZdMOgMNIr+Oaer4AyN8EULVF+iUP4gM3gG59B4dAw8Bqb/NORFiLUpBh90tr/y9vbRynMd+16Hkehxh0OnaF5GNf1bg+vVXDgPY=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776348008; c=relaxed/simple;\n bh=MlILJF6dHHrXmyE4UNsKcA0XInzFn2Xr4i4zH6VjSfo=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=ahiPMyk5n1YBFV/IoKPhD9cX6wvIb76KKyHtL2uaNqPf37r8dpdvgKVzANIZikTa3QKtCBoqbI182MgFREjnhbuh2gko2l0h/VG24L3PY1DPuR+tt/SOa9fW5RDYE0PQshkmIUe5VseqNENbI8d4MnFMlrpKC/BUxY4RMAIbxfk=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776348007;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=wSt+VAiPOwKILot8ey2LkhwJLOMLuxbvxwGWkcDF7zc=;\n b=Cw+mqDSkXCcHytNF0TiWUwtCxVyVdA4krw2g6LApxq3Sl5qSkEeyqPk5ZqD7iIqEam870L\n wo2P3xy1dMECWVWF9ulk+0EMvLyKhgBQXj6vL1jJootqcKG6BS+DQWaii4B3hM/Blrc9iR\n 11VAySTCi2HK4dtd2nXhaFN0JTXPJE8=","X-MC-Unique":"onLg3174ONWTrf1TkEtwxA-1","X-Mimecast-MFC-AGG-ID":"onLg3174ONWTrf1TkEtwxA_1776348006","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776348005; x=1776952805;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=wSt+VAiPOwKILot8ey2LkhwJLOMLuxbvxwGWkcDF7zc=;\n b=LSCo5lMKgNCmOeT05PYxcBc4eQhp/E5g7HAsU45dpJD//r4+JVPC0wqpOSqw6QbR7g\n 6/Oc8P3Hff188Ajeai4KiAqRqLDRRYSpIG8kSazLWuYP2g4wZIUDxejc35HA/nlscHj8\n yLjFoHLgLR9ufRYQs/XOv7iBKZtASAcHj5u60stc58KgE1me3cbVgZbSRiy5xug3X5aK\n p0RX7dy9fdn/6hM9+oFeS/NP6W2dFd6hJSB1snTqA0wesiIVMSJS8Krw3dlqlZV5UPZv\n mIka1rd/SVnVSx4cUkDG77nmCPJH2W+RyzLYEEAzipmlpda2tvYnxdjPZcBYJbgUDml6\n B/9A==","X-Gm-Message-State":"AOJu0YyWiKAw4KPTOXXiSMCn60wpO36bnw5SdsOr8Oo1lMOigcjGKnvI\n +1gmcYYxfXfo0skaGNxyvOSpunxld856El1/pcL5BBDIlo+qoHuBegeHfIE7EP/MgiBsowLylFT\n xyKhU5NUwJA+mAQ9bA7iUekHCkTUx+OqtKJPJQiE1rk0ywLQNvKcLrygq5d9XH3IPbJHRfQ==","X-Gm-Gg":"AeBDiet310mEkXrtpziQhEvOcYXCLqy24b3d/KAG0oGxGZq6k/THGO4lpI1IklqBUB0\n hl8k+xTKIx9bv/8jglowIcZLdWd5Ok9165bYXQQK//jpvqkwWJqWnpb7GUUrqQZgf02EvZcDAnO\n WcLf5bxV3sNtIoQLLgmOOPcfSu1v7vYQWdOgTWkgwneXckWobe6adN8yV8rFqFDxhP0J4g2g2uz\n mE2CX0cc+LOKtCg+qFJEjHyEAgXmt++q/bhJLxwomnJ+xHYB6rP4rFYmi97r6IizEtlEB4k11Yf\n owDJnu9Hqixu4UdlTJFAgqWmBhM01pDS9raUuMFWQ/FUGpO7Eyae3tLPuemJVLGRSvN6EcS5jv+\n k94aG1N5XFBPjHvx6M4FAbzGzXsljFcViqzV1pv8sL3v3X7fGcAZyQrte4waU1FTHEix8Eq573H\n iwFDvmHjyxlwLUrTL6qJNVsSlOE+A5cA3ggEbpna+WIw==","X-Received":["by 2002:a05:620a:19a3:b0:8cd:8ad9:c893 with SMTP id\n af79cd13be357-8ddcd119673mr3625012685a.6.1776348005000;\n Thu, 16 Apr 2026 07:00:05 -0700 (PDT)","by 2002:a05:620a:19a3:b0:8cd:8ad9:c893 with SMTP id\n af79cd13be357-8ddcd119673mr3625001085a.6.1776348004392;\n Thu, 16 Apr 2026 07:00:04 -0700 (PDT)"],"Message-ID":"<cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>","Date":"Thu, 16 Apr 2026 10:00:02 -0400","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","To":"Marek Polacek <polacek@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>\n <aeDq4W_ZZPafmIKC@redhat.com>","From":"Jason Merrill <jason@redhat.com>","In-Reply-To":"<aeDq4W_ZZPafmIKC@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"twNuP40H-9T6CMrYYkWHwduEugO-Zza-iYXrnBJhnGs_1776348006","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678245,"web_url":"http://patchwork.ozlabs.org/comment/3678245/","msgid":"<aeD9tv54ndjwj2vv@redhat.com>","list_archive_url":null,"date":"2026-04-16T15:18:14","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":14370,"url":"http://patchwork.ozlabs.org/api/people/14370/","name":"Marek Polacek","email":"polacek@redhat.com"},"content":"On Thu, Apr 16, 2026 at 10:00:02AM -0400, Jason Merrill wrote:\n> On 4/16/26 9:57 AM, Marek Polacek wrote:\n> > On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n> > > On 4/15/26 7:36 PM, Marek Polacek wrote:\n> > > > Update: we can use valid_splice_for_member_access_p also in\n> > > > cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n> > > > check but that was unreachable anyway due to the dependent_splice_p\n> > > > check above.\n> > > > \n> > > > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n> > > \n> > > OK.  Incidentally,\n> > > \n> > > > -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n> > > \n> > > this might be a better implementation of reflection_function_template_p?\n> > \n> > If we do that, then we could drop the reflection_ prefix because\n> > we no longer have that \"multiple non-template overloads\" case, and\n> > use function_template_p in is_overloaded_fn and in\n> > valid_splice_for_member_access_p as well.\n> \n> I still wouldn't want \"function_template_p\" to be true for an OVERLOAD, only\n> for an actual TEMPLATE_DECL.\n\nSo just using\n\n  return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n\nin reflection_function_template_p breaks splice5.C where we have\n\n  BASELINK<OVERLOAD<TEMPLATE_DECL<FUNCTION_DECL>>>\n\nso we'd also have to add MAYBE_BASELINK_FUNCTIONS (or maybe_get_first_fn) to\nreflection_function_template_p.  Is it still worth it?\n\nAside: maybe_get_fns should use MAYBE_BASELINK_FUNCTIONS.\n\nMarek","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=dV23k0Ta;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=dV23k0Ta","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxMBH4RF8z1yG9\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 01:19:34 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id AC2B14BAD158\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 15:19:32 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 16E464BAD158\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 15:18:20 +0000 (GMT)","from mail-vk1-f199.google.com (mail-vk1-f199.google.com\n [209.85.221.199]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-563-Q-8Xp1HmPkufiMSe1eJiLQ-1; Thu, 16 Apr 2026 11:18:18 -0400","by mail-vk1-f199.google.com with SMTP id\n 71dfb90a1353d-56db8ed8e40so8389083e0c.3\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 08:18:18 -0700 (PDT)","from redhat.com ([2603:7000:9500:10::1db4])\n by smtp.gmail.com with ESMTPSA id\n 6a1803df08f44-8ae6cba0b33sm38396346d6.27.2026.04.16.08.18.15\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 16 Apr 2026 08:18:16 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org AC2B14BAD158","OpenDKIM Filter v2.11.0 sourceware.org 16E464BAD158"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 16E464BAD158","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 16E464BAD158","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776352700; cv=none;\n b=h9WratNtpWDpOcRwMrBWWauPmeUM7E1t11USUKLrp+ZrtbXjWRo/8aq5p2nA435epecwxAdCzGMDY3vA9kQjyfGZF/ptBUzarYeJ0rKtUCDCYVw7TZcR3Qw6taoW7bqwY1gZ0VdOvy9gqperHB2sjABjdmilANWTzqgTo1KfI0M=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776352700; c=relaxed/simple;\n bh=M5VooY9Q0NxCB+TN4J5Htuotqzeiq5uhBZRyOdgICYw=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=mP5JNpHJepa//oVee+Ra1hyrMXQZrP7Dhx3FSdoDmq5odqxPnBpPtcimHEtH5fwjWFAoY5GNWeecWOwl4aG/dTsNdyozDfvRbF4g9DI4vUfrj9I4EoQWKPrGNv/Nq7kyD7Q15lushT/w4LUWN5u+pf3tIcBo1E5FDo0BU+nTfa4=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776352699;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=Lny19nkOOTd7tqd/rdAsLMykmA5CHQ7eRO1Xxmuwg/Y=;\n b=dV23k0TaDxWWdXYB/Xn9I4BPh9Njxx4HllNSrPxtbdGrEc+6SSCKly2VRuZdx5+bR/borv\n j5Bnulnli3EDaS8RKMN1ZUxzFvAohvPz1O1wjZsYSMWlZNWGDTH1mUa39zDiUUYbn49pVG\n oPTco65Lf0sc9esr0SgTgAL+9OagVf0=","X-MC-Unique":"Q-8Xp1HmPkufiMSe1eJiLQ-1","X-Mimecast-MFC-AGG-ID":"Q-8Xp1HmPkufiMSe1eJiLQ_1776352698","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776352697; x=1776957497;\n h=user-agent:in-reply-to:content-disposition:mime-version:references\n :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=Lny19nkOOTd7tqd/rdAsLMykmA5CHQ7eRO1Xxmuwg/Y=;\n b=XEtQiw7SWL0c0Bg+uRzKQPW9eHeCoAAALrMcnUISi2IW1uT0evIJope4AjjLw7+/vE\n wCJBNnbTya1kDd2bpAvRw9ldLxGYzqC3WDLK0p54XJ5SnJ5eid12ZaD0AhTkILDX6b5o\n RlBF8uQyo0VhkUoD0FUPT/FmKf4TLbujpfR/gPTH5ZfYHY2QoGO/cJ0EXKnScVkJWpdG\n XyKj6yEcgtF+AGd/3shDQuvafMmFVl0Q75uJw/2tgY9slmreYpXwHLzJry1C6E+kdFTy\n iBhAVFKTVUlIIRn1kYex96ispI+1sClrSrouEwP3MeGXzyQEExafVmehiYyGppQLTkGJ\n K9Gw==","X-Gm-Message-State":"AOJu0YxdMms8xoLk0C8othHP3tkaX94cSEQ+ECVKjhmYILYqIFelH6vo\n 0XvxHdKfqxR5bv7psoMwdA/TgBhb7bfvix4yt4MNymbsMj1S+iUtLwp5IyeIIvpcaWcmJs89IcZ\n Y8DPZ82vI/x7OGadf4gJNSheRqJ3rR5k+IBPHvchDLczuEA5JasW4MoJql6U=","X-Gm-Gg":"AeBDietRNgJiKyBY1cSDYeP6cIt0QcXtUGESLTFzdAVwTodGa1Ticw4HV9iLfLVhDKC\n UxyK3FZIs4uo8ivCzOHparw4T3Kf9sUZfjENHkZu8ubnQvI7EZmDJhl9AunT3vocWKgOX2jLQh9\n 6e0pNZKICKL3BnuXEe17XZNwZhQFWp8/+5l57lrmOV5H7baEVuYdC6qfrhJEOIN/YtMAOVlB5Jj\n 8II6iLJw/gnRYAGNB60uCnWlxxRf+e28PPZctXQKBSzCoFqk9rrMIvk0s8YQPpfa2+p4t9AJ3/o\n FdMqAcdT+OFaV86jM4dNcXvuXWbf//PMS0QGAV9kofdsmE95ZJTYJBAG5R27aUKw62nkwmpvaVv\n NoA==","X-Received":["by 2002:a05:6122:220e:b0:56e:f2cb:190e with SMTP id\n 71dfb90a1353d-56f3bba2548mr13552404e0c.6.1776352697385;\n Thu, 16 Apr 2026 08:18:17 -0700 (PDT)","by 2002:a05:6122:220e:b0:56e:f2cb:190e with SMTP id\n 71dfb90a1353d-56f3bba2548mr13552330e0c.6.1776352696848;\n Thu, 16 Apr 2026 08:18:16 -0700 (PDT)"],"Date":"Thu, 16 Apr 2026 11:18:14 -0400","From":"Marek Polacek <polacek@redhat.com>","To":"Jason Merrill <jason@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","Message-ID":"<aeD9tv54ndjwj2vv@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>\n <aeDq4W_ZZPafmIKC@redhat.com>\n <cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>","MIME-Version":"1.0","In-Reply-To":"<cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>","User-Agent":"Mutt/2.3.1 (2026-03-20)","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"UTCTRVBjVHxwMszdxUZAkmohngdp7jhcUxKFNL-RBz4_1776352698","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678292,"web_url":"http://patchwork.ozlabs.org/comment/3678292/","msgid":"<37213e98-aba3-4a30-8e45-d164cfae2d11@redhat.com>","list_archive_url":null,"date":"2026-04-16T17:33:42","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":4337,"url":"http://patchwork.ozlabs.org/api/people/4337/","name":"Jason Merrill","email":"jason@redhat.com"},"content":"On 4/16/26 11:18 AM, Marek Polacek wrote:\n> On Thu, Apr 16, 2026 at 10:00:02AM -0400, Jason Merrill wrote:\n>> On 4/16/26 9:57 AM, Marek Polacek wrote:\n>>> On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n>>>> On 4/15/26 7:36 PM, Marek Polacek wrote:\n>>>>> Update: we can use valid_splice_for_member_access_p also in\n>>>>> cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n>>>>> check but that was unreachable anyway due to the dependent_splice_p\n>>>>> check above.\n>>>>>\n>>>>> Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n>>>>\n>>>> OK.  Incidentally,\n>>>>\n>>>>> -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n>>>>\n>>>> this might be a better implementation of reflection_function_template_p?\n>>>\n>>> If we do that, then we could drop the reflection_ prefix because\n>>> we no longer have that \"multiple non-template overloads\" case, and\n>>> use function_template_p in is_overloaded_fn and in\n>>> valid_splice_for_member_access_p as well.\n>>\n>> I still wouldn't want \"function_template_p\" to be true for an OVERLOAD, only\n>> for an actual TEMPLATE_DECL.\n> \n> So just using\n> \n>    return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n> \n> in reflection_function_template_p breaks splice5.C where we have\n> \n>    BASELINK<OVERLOAD<TEMPLATE_DECL<FUNCTION_DECL>>>\n\n...at least if we don't remove the BASELINK from a reflection as Patrick \nwas suggesting.\n\n> so we'd also have to add MAYBE_BASELINK_FUNCTIONS (or maybe_get_first_fn) to\n> reflection_function_template_p.  Is it still worth it?\n\nI think so.\n\n> Aside: maybe_get_fns should use MAYBE_BASELINK_FUNCTIONS.\n> \n> Marek\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=jAlQ2zJ4;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=jAlQ2zJ4","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxQ9g50mvz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 03:34:15 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id A067C4BAE7FC\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 17:34:13 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id A2DDB4BA902B\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 17:33:46 +0000 (GMT)","from mail-qv1-f71.google.com (mail-qv1-f71.google.com\n [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-86-tRz_nkRRPWihX0XPm1tUGA-1; Thu, 16 Apr 2026 13:33:44 -0400","by mail-qv1-f71.google.com with SMTP id\n 6a1803df08f44-8a14905811cso158767226d6.2\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 10:33:44 -0700 (PDT)","from [192.168.50.130]\n (130-44-146-247.s12789.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com.\n [130.44.146.247]) by smtp.gmail.com with ESMTPSA id\n 6a1803df08f44-8ae6cda5a2bsm40895246d6.33.2026.04.16.10.33.42\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 16 Apr 2026 10:33:43 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org A067C4BAE7FC","OpenDKIM Filter v2.11.0 sourceware.org A2DDB4BA902B"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org A2DDB4BA902B","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org A2DDB4BA902B","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776360826; cv=none;\n b=lOWHrMiQgvHrcygd+7SQPDvaX3fW+CMjZXkIsz41OsoJMCy0mjn1vTF2pZt9DEJFqOxxdaPVuhkx06zWPEjVI5bFfu0YXcfTOCaE0rt7ZlsgI5vhsCf8XPux7XIcphAtnuJey/1ADKtg5O2xe0pFLjj8nCk2IMHbpZlsp9N0BKI=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776360826; c=relaxed/simple;\n bh=frEB0U0w3EtEk8W219E9PGeCY/FfwXEQopoUnwgGpnc=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=J0wd5rm8Bl47bdOEEWxnQMgFEUb5B0X2up2plUpvXtMhT+OnJObZPHOUgQRjMOnMWbcu67KniKbwH17WJAxO+wK5UkLfWv8rXgH7GNK/XeuHyAMwMAr1lbUvMhIBAvuViqtRl5kkippY0wZ+bkkMQ2cBXkx0k7qbuHyu0XtAHg4=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776360826;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=dlDCO/F8moS0QpNqGuXwC8AkgpXo9K/CxT5LqsR0U8w=;\n b=jAlQ2zJ4itPFQfmL823NG2YuOAlr4XLn+elV7I7Pj9R/wZBlUDsffz6yabZXpwl1ogmjE1\n U1IvTP/di1cJmHBNCWBHYqnfUDi42i6Bj0SQCvS43WTXThd4DfJdjStrsK0fRGM1Fm5sdv\n TNIyxIoRoaP3tzeUwesA7ugtV7pNBUQ=","X-MC-Unique":"tRz_nkRRPWihX0XPm1tUGA-1","X-Mimecast-MFC-AGG-ID":"tRz_nkRRPWihX0XPm1tUGA_1776360824","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776360824; x=1776965624;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=dlDCO/F8moS0QpNqGuXwC8AkgpXo9K/CxT5LqsR0U8w=;\n b=PXnTWrqocxifi7HBuJL6zUt73FMT7kdNGMKvPeKJ1tjk6hzEKYi0kujiEunaYxRx4j\n wixnI8wL9yn6bC7DSYDKJphaE2ECoQE5deiU775562Vq0/udwxdVNOMU0sJCMImMjvBA\n 5v5pClxIL8YHpNXiu8in5yB+j/3Ap/3iZ/4fIrRKfVSDg3rZ2Xwb1D03uHtufO8m+ACP\n ypNzPWWYG32JBrGIdmAe4zSEfksr7uZC4n6CYrbPXE7dD1Uk+Z+1HcGAurWsLOZ+Td4v\n OFrh66xTmwT4zsE3ixJaVHaXTdbYGhP3hURHTtEyWI1N8UQhgm9GofJGXycFONYEicXS\n u61A==","X-Gm-Message-State":"AOJu0YxeKcQ67OYBAniAj+hIoplwZEcfCAD238mzsdff83okQ1sME8Yk\n oTnY6bvOxuGeL+3SESVtXMiwCS089KbvJYtwxBvUotS+Xdokm4n04qC8BNWXo0G8y8lGWLNCpEO\n Ja6CBSwNlNdzEFzVPDDLXmddgCSlC4murh2tnQVeV6Dluh0/I+MiVaWbHxlA=","X-Gm-Gg":"AeBDievyV7APqVtxbW8QlDxadOehV/dvYWIyTAPwCjELTWL1N3fr/21c9DJhK6KZkLv\n kJrVw7aFos0pixG4/dLt+xHOuDiHTRgvGqnuRZXu7arcRQjJmjU1cyC7Wkn1ZDCXSr+4yfLf6Su\n ccf0olFHFESdfPfXr2N99V2ruJayvsYGbsErVzCIi4KQq4U/m1BsJVQT6HO20Q3v2vFgioi5nv9\n rd2V6+67VegRiUQCQPYSUTr74GZYubxDXPk2TV1cIqhPqvlTYhygMA20f4JigXDKJZnT9n4YMER\n Q0UdI+apjfi9g64JydHD/8Wx790Afy0iCuyPufwn1ZotF06+qMaOzC5KALX7GtoMhHMfcf3iwHf\n KSzyiMgboIXcORf4CTkOm5Y3FBAG3QPBvUdSWwcs/LUXsC/e3EIppVi1OKRbTBpSEpAhbsMvXuR\n L1736NOs6Jz1EsmIA/0FVvyqL1D261l/RAOADlR+1G6A==","X-Received":["by 2002:a05:6214:5913:b0:895:498e:e9dd with SMTP id\n 6a1803df08f44-8b025db7f26mr2875306d6.2.1776360824268;\n Thu, 16 Apr 2026 10:33:44 -0700 (PDT)","by 2002:a05:6214:5913:b0:895:498e:e9dd with SMTP id\n 6a1803df08f44-8b025db7f26mr2874696d6.2.1776360823811;\n Thu, 16 Apr 2026 10:33:43 -0700 (PDT)"],"Message-ID":"<37213e98-aba3-4a30-8e45-d164cfae2d11@redhat.com>","Date":"Thu, 16 Apr 2026 13:33:42 -0400","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","To":"Marek Polacek <polacek@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>\n <aeDq4W_ZZPafmIKC@redhat.com>\n <cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>\n <aeD9tv54ndjwj2vv@redhat.com>","From":"Jason Merrill <jason@redhat.com>","In-Reply-To":"<aeD9tv54ndjwj2vv@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"IrsbQszbCfIQyTQps2SQYTsN8-nrp_iNVonAdTQsGag_1776360824","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678374,"web_url":"http://patchwork.ozlabs.org/comment/3678374/","msgid":"<aeFK2aSu8F8iE5Ig@redhat.com>","list_archive_url":null,"date":"2026-04-16T20:47:21","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":14370,"url":"http://patchwork.ozlabs.org/api/people/14370/","name":"Marek Polacek","email":"polacek@redhat.com"},"content":"On Thu, Apr 16, 2026 at 01:33:42PM -0400, Jason Merrill wrote:\n> On 4/16/26 11:18 AM, Marek Polacek wrote:\n> > On Thu, Apr 16, 2026 at 10:00:02AM -0400, Jason Merrill wrote:\n> > > On 4/16/26 9:57 AM, Marek Polacek wrote:\n> > > > On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n> > > > > On 4/15/26 7:36 PM, Marek Polacek wrote:\n> > > > > > Update: we can use valid_splice_for_member_access_p also in\n> > > > > > cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n> > > > > > check but that was unreachable anyway due to the dependent_splice_p\n> > > > > > check above.\n> > > > > > \n> > > > > > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n> > > > > \n> > > > > OK.  Incidentally,\n> > > > > \n> > > > > > -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n> > > > > \n> > > > > this might be a better implementation of reflection_function_template_p?\n> > > > \n> > > > If we do that, then we could drop the reflection_ prefix because\n> > > > we no longer have that \"multiple non-template overloads\" case, and\n> > > > use function_template_p in is_overloaded_fn and in\n> > > > valid_splice_for_member_access_p as well.\n> > > \n> > > I still wouldn't want \"function_template_p\" to be true for an OVERLOAD, only\n> > > for an actual TEMPLATE_DECL.\n> > \n> > So just using\n> > \n> >    return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n> > \n> > in reflection_function_template_p breaks splice5.C where we have\n> > \n> >    BASELINK<OVERLOAD<TEMPLATE_DECL<FUNCTION_DECL>>>\n> \n> ...at least if we don't remove the BASELINK from a reflection as Patrick was\n> suggesting.\n> \n> > so we'd also have to add MAYBE_BASELINK_FUNCTIONS (or maybe_get_first_fn) to\n> > reflection_function_template_p.  Is it still worth it?\n> \n> I think so.\n\nSo like this?\n\nTest reflect/* so far.\n\nThe subject of the patch is: c++/reflection: tweak reflection_function_template_p\n\n-- >8 --\n...to use the narrower DECL_FUNCTION_TEMPLATE_P instead of\nreally_overloaded_fn.\n\ngcc/cp/ChangeLog:\n\n\t* reflect.cc (valid_splice_for_member_access_p): Use\n\treflection_function_template_p.\n\t(reflection_function_template_p): Check DECL_FUNCTION_TEMPLATE_P\n\tinstead of really_overloaded_fn.  Unwrap BASELINKs and OVERLOADs.\n---\n gcc/cp/reflect.cc | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc\nindex 59a862bf152..fe0c43df686 100644\n--- a/gcc/cp/reflect.cc\n+++ b/gcc/cp/reflect.cc\n@@ -8898,7 +8898,7 @@ valid_splice_for_member_access_p (const_tree t, bool decls_only_p/*=true*/)\n       || VAR_P (t)\n       || TREE_CODE (t) == CONST_DECL\n       || TREE_CODE (t) == FUNCTION_DECL\n-      || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (const_cast<tree> (t)))\n+      || reflection_function_template_p (const_cast<tree> (t))\n       || variable_template_p (const_cast<tree> (t)))\n     return true;\n \n@@ -9305,7 +9305,8 @@ reflection_mangle_prefix (tree refl, char prefix[3])\n bool\n reflection_function_template_p (tree x)\n {\n-  return really_overloaded_fn (x);\n+  x = MAYBE_BASELINK_FUNCTIONS (x);\n+  return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n }\n \n #include \"gt-cp-reflect.h\"\n\nbase-commit: 7c84b2a62827b3509b25727694c9f0eac9e96b80","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=QltW1+bM;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=QltW1+bM","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxVTD6nYbz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 06:47:59 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 811964C91755\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 20:47:56 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id 57BF24C318B0\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 20:47:27 +0000 (GMT)","from mail-qv1-f72.google.com (mail-qv1-f72.google.com\n [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-400-uGmt5iJePt2FILm2HMuzLw-1; Thu, 16 Apr 2026 16:47:25 -0400","by mail-qv1-f72.google.com with SMTP id\n 6a1803df08f44-8acafc224a8so137565286d6.1\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 13:47:25 -0700 (PDT)","from redhat.com ([2603:7000:9500:10::1db4])\n by smtp.gmail.com with ESMTPSA id\n 6a1803df08f44-8ae6ceb4a5fsm58989736d6.45.2026.04.16.13.47.23\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 16 Apr 2026 13:47:23 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 811964C91755","OpenDKIM Filter v2.11.0 sourceware.org 57BF24C318B0"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 57BF24C318B0","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 57BF24C318B0","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776372447; cv=none;\n b=RjnUbwfNEBnNANOpel9tcpuV4xGqYi8ZHg1uMoL0xnfbTz6RuFrepTE6ZkvqsN+eI8EPpghtDDS3mjWnJWXTt/j4eDx7SE6ZTVA9WnsbyihYLJvqCSHQDElShwUmlDOdoSikI4caJXcvWixh1o9OHbklXVOLvCPf7BE2YMNPf4E=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776372447; c=relaxed/simple;\n bh=E8s4Jc7EUTlQY5wsItufOCt1h+OCNK6hcl3Ye22dTck=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=XzhvEeChLLtNeU6nwMMPI8nVq0JPA2xH7JB3r2XkxYVSWySASFw3RQeKk5XJkEga1pIYohDoizN+ZBSsE1V7qczMj86YNlDEyEkuzW5z6vRivlY9rez1DqThj+XwSAHVD3RzCdqhbuNCHy7mghH699C28gk9kZ7ZXdeng//9ol0=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776372446;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=sy13RCJiBXyBwfPPFoM/pY3JUkeuAmfgLSWK7DjQLgE=;\n b=QltW1+bMRdZhgrjXmn2nDKHa7tfPo/RcbJNfoG4Gg+sLjLF06lUolzKEGKuZM+MGwngkQF\n DfXgWBm2MYHPQXm4u0LZO1Dyb+STG3XutzjG8uNNu2QcuQ/tO+Is2uJPWZX3EaV6KQJjQB\n Hz4LuzZuAzkOKJyFvzt8uHzvy4H+1XY=","X-MC-Unique":"uGmt5iJePt2FILm2HMuzLw-1","X-Mimecast-MFC-AGG-ID":"uGmt5iJePt2FILm2HMuzLw_1776372445","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776372445; x=1776977245;\n h=user-agent:in-reply-to:content-disposition:mime-version:references\n :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=sy13RCJiBXyBwfPPFoM/pY3JUkeuAmfgLSWK7DjQLgE=;\n b=JlSbTWfK3qUxEL4LRFD9fL6FhLUMrstDG14v3h7rq26ulpe3hMS7g+rBhxN4yQYaXN\n CY2/DEwmzJgcgskvShsjAUlxDHHicZVNpOBMPWYHtc49bJAMLmma2ykWjzRIDmDV6cSD\n 3wpHwRH/RHxtGaMXwNCYQ8b0osnG/gKbKy+h8+j3mmM8AJxtPiWLx8bSlr9ttnVkUssq\n WJUWq626sPQIOgoYUsIaHtGridpPpYpRcrK1OdM7/+b22gssjprOEEc9d+uNwIiPEfLX\n jz9XA5GW7lH5LLOYh0RDt6e/Sv92vx2DTJEpnlF/oxym4DGOeUADO8wkw+qzwJWRsOap\n MUsA==","X-Gm-Message-State":"AOJu0YxREmN28TGw6tJ9RCdVJ9gU8WF1CzZonTz3+BWVMeVxBN+EOQqU\n Z/cV1M1QKlOFYxHmIrkPBXXEyvr+B/vgupd3Ozp87zm1aQ81z938/Vp8m3fkynB9hx6vbPAz+MU\n RD1URksZprYUjRbwbNOkU+3t9YMNxY698szr6OidnrXllbb7s69yYaFcN6FQ=","X-Gm-Gg":"AeBDiev4uBFoiI/JNbYK8IRZW/TNMpitrX12n2poAN3YQLvosxZnj3b2G5J7dVuwDR0\n 9ca5adGIvjTy95fQwhTyghf0mfm8C0RHVJTcMPE9SJ1fn6UC+tonVbL7nJVhiXAjDCJz+BCHB/m\n PQhmkSuqoYLuPcROynkOH4eEpqRNW83qee+Rc+icf7kQG9dgbmjngRlF91RPUdMbOOP2S7AsP9u\n 8M9ErA9TTSk8CAn5v0SpCyPX9r4dIcZxp6KtIhS/sw4UAGPKERBp0XYdhRkDiRqsY0gc9818n1W\n f7J4xG5YJD9mvJZKkS/6OY4JneqdOxishtItPAZRHXYjfRc4gS8Gb5JC+TOdycqYY6NTo50PhVS\n uKVqVgr4e7dev","X-Received":["by 2002:a05:6214:5545:b0:8ad:7a3e:5c2d with SMTP id\n 6a1803df08f44-8b0280e9f08mr1305236d6.31.1776372444769;\n Thu, 16 Apr 2026 13:47:24 -0700 (PDT)","by 2002:a05:6214:5545:b0:8ad:7a3e:5c2d with SMTP id\n 6a1803df08f44-8b0280e9f08mr1304896d6.31.1776372444358;\n Thu, 16 Apr 2026 13:47:24 -0700 (PDT)"],"Date":"Thu, 16 Apr 2026 16:47:21 -0400","From":"Marek Polacek <polacek@redhat.com>","To":"Jason Merrill <jason@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","Message-ID":"<aeFK2aSu8F8iE5Ig@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>\n <aeDq4W_ZZPafmIKC@redhat.com>\n <cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>\n <aeD9tv54ndjwj2vv@redhat.com>\n <37213e98-aba3-4a30-8e45-d164cfae2d11@redhat.com>","MIME-Version":"1.0","In-Reply-To":"<37213e98-aba3-4a30-8e45-d164cfae2d11@redhat.com>","User-Agent":"Mutt/2.3.1 (2026-03-20)","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"wV6TdWAM3awjjjAHOt_UpTi27dky2kYuUfpFQ4DNTY8_1776372445","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678473,"web_url":"http://patchwork.ozlabs.org/comment/3678473/","msgid":"<44874176-cd4d-4b15-afb0-18a494bf1740@redhat.com>","list_archive_url":null,"date":"2026-04-17T04:08:35","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":4337,"url":"http://patchwork.ozlabs.org/api/people/4337/","name":"Jason Merrill","email":"jason@redhat.com"},"content":"On 4/16/26 4:47 PM, Marek Polacek wrote:\n> On Thu, Apr 16, 2026 at 01:33:42PM -0400, Jason Merrill wrote:\n>> On 4/16/26 11:18 AM, Marek Polacek wrote:\n>>> On Thu, Apr 16, 2026 at 10:00:02AM -0400, Jason Merrill wrote:\n>>>> On 4/16/26 9:57 AM, Marek Polacek wrote:\n>>>>> On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n>>>>>> On 4/15/26 7:36 PM, Marek Polacek wrote:\n>>>>>>> Update: we can use valid_splice_for_member_access_p also in\n>>>>>>> cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n>>>>>>> check but that was unreachable anyway due to the dependent_splice_p\n>>>>>>> check above.\n>>>>>>>\n>>>>>>> Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n>>>>>>\n>>>>>> OK.  Incidentally,\n>>>>>>\n>>>>>>> -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n>>>>>>\n>>>>>> this might be a better implementation of reflection_function_template_p?\n>>>>>\n>>>>> If we do that, then we could drop the reflection_ prefix because\n>>>>> we no longer have that \"multiple non-template overloads\" case, and\n>>>>> use function_template_p in is_overloaded_fn and in\n>>>>> valid_splice_for_member_access_p as well.\n>>>>\n>>>> I still wouldn't want \"function_template_p\" to be true for an OVERLOAD, only\n>>>> for an actual TEMPLATE_DECL.\n>>>\n>>> So just using\n>>>\n>>>     return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n>>>\n>>> in reflection_function_template_p breaks splice5.C where we have\n>>>\n>>>     BASELINK<OVERLOAD<TEMPLATE_DECL<FUNCTION_DECL>>>\n>>\n>> ...at least if we don't remove the BASELINK from a reflection as Patrick was\n>> suggesting.\n>>\n>>> so we'd also have to add MAYBE_BASELINK_FUNCTIONS (or maybe_get_first_fn) to\n>>> reflection_function_template_p.  Is it still worth it?\n>>\n>> I think so.\n> \n> So like this?\n> \n> Test reflect/* so far.\n> \n> The subject of the patch is: c++/reflection: tweak reflection_function_template_p\n> \n> -- >8 --\n> ...to use the narrower DECL_FUNCTION_TEMPLATE_P instead of\n> really_overloaded_fn.\n> \n> gcc/cp/ChangeLog:\n> \n> \t* reflect.cc (valid_splice_for_member_access_p): Use\n> \treflection_function_template_p.\n> \t(reflection_function_template_p): Check DECL_FUNCTION_TEMPLATE_P\n> \tinstead of really_overloaded_fn.  Unwrap BASELINKs and OVERLOADs.\n> ---\n>   gcc/cp/reflect.cc | 5 +++--\n>   1 file changed, 3 insertions(+), 2 deletions(-)\n> \n> diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc\n> index 59a862bf152..fe0c43df686 100644\n> --- a/gcc/cp/reflect.cc\n> +++ b/gcc/cp/reflect.cc\n> @@ -8898,7 +8898,7 @@ valid_splice_for_member_access_p (const_tree t, bool decls_only_p/*=true*/)\n>         || VAR_P (t)\n>         || TREE_CODE (t) == CONST_DECL\n>         || TREE_CODE (t) == FUNCTION_DECL\n> -      || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (const_cast<tree> (t)))\n> +      || reflection_function_template_p (const_cast<tree> (t))\n\nLet's also make reflection_function_template_p take const_tree so \ncallers don't need to const_cast?\n\n>         || variable_template_p (const_cast<tree> (t)))\n>       return true;\n>   \n> @@ -9305,7 +9305,8 @@ reflection_mangle_prefix (tree refl, char prefix[3])\n>   bool\n>   reflection_function_template_p (tree x)\n>   {\n> -  return really_overloaded_fn (x);\n> +  x = MAYBE_BASELINK_FUNCTIONS (x);\n> +  return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n>   }\n>   \n>   #include \"gt-cp-reflect.h\"\n> \n> base-commit: 7c84b2a62827b3509b25727694c9f0eac9e96b80","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Y59e0hGL;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Y59e0hGL","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxhGN1RqQz1yGt\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 14:09:14 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 02F484BB3B81\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 04:09:13 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id 98BF84BA2E35\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 04:08:41 +0000 (GMT)","from mail-qt1-f200.google.com (mail-qt1-f200.google.com\n [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-80-146k95upO46vrAj07wqbGw-1; Fri, 17 Apr 2026 00:08:39 -0400","by mail-qt1-f200.google.com with SMTP id\n d75a77b69052e-50b802961ecso3048261cf.1\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 21:08:39 -0700 (PDT)","from [192.168.50.130]\n (130-44-146-247.s12789.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com.\n [130.44.146.247]) by smtp.gmail.com with ESMTPSA id\n d75a77b69052e-50e392c8575sm3052271cf.3.2026.04.16.21.08.35\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 16 Apr 2026 21:08:37 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 02F484BB3B81","OpenDKIM Filter v2.11.0 sourceware.org 98BF84BA2E35"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 98BF84BA2E35","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 98BF84BA2E35","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776398921; cv=none;\n b=xT4ccAWHKdA8Ew22UnhReyvGax1ZkBgvekodB7FM3GiJ4idx4QeG9H1yuU48r8ZHb7nnN0z4Vp6pO0WJXXaPgbna40yIVqAdS/dZfikVCZ5IIGwL4t1kkA4WjjqKDns9w7HR0oiqslAHkbenDWtbF1MexWciLJewPWPqwu4eJCM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776398921; c=relaxed/simple;\n bh=P0yHWaYdYUNbWvN9rHSJ6OxRRGLfbeKaNBb20Vx05rg=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=RzrMGphEP6szqokPPCDx/VshOcYLH1A65W9uHkJ0S9QUK2+KsHTdUP84UgwpNrtYYnOVwtqMS+rCkpR9LWYXIzwXTXSkEb/mT9IdpqCppyttuX31XCxfVB+Lgo+utlG3pONyvEgUJY5j/9zRy0liQtPnxWXArtOjvRpJsdUhqJI=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776398921;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=9wBBWBtq0YA1pN3MOmU4+eek5yrd6gvgfnlvYHv2RhY=;\n b=Y59e0hGLv73sBEUBKrpFFlKM0z5umscFjgLIZEteC9/B9elXB15H+Xmnb31+8LYagwpXwp\n Hh0VthTRG1rh969ezw5hqehm/8iMc3pI1j7FNJjVibP6z7bVBgyD7HAUVy9EZjMyy09opP\n 5YvZTdw07HXYMp/i8T+Lb/MSdg1py5Q=","X-MC-Unique":"146k95upO46vrAj07wqbGw-1","X-Mimecast-MFC-AGG-ID":"146k95upO46vrAj07wqbGw_1776398919","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776398919; x=1777003719;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=9wBBWBtq0YA1pN3MOmU4+eek5yrd6gvgfnlvYHv2RhY=;\n b=MtZItELkcRfVDozBb2XDfQDavxb9mLba2Tct1/7Dz4B7QVE0E1OKS2zqOHOjfvZ7fM\n Ebo65bZLPzTmdRSH72abcI8j3wL5C+BzW/u9flsm6cU4MPhhnUMmAyOgWk/dU7XDACjK\n ztM8d8fuEO0RRUpA4Q6oJBZlRXQ/1bFKiieNlVPgeIsTIhdRbgG/rE0Dx2bDyV171Jri\n TKewkZTYAnQBDCaQ4THBo8nQcg6vA/j8rprMwgRK+co2RfAxHQ8X5Jwk/rinna8M2CK7\n SBqT1c7KsMh+v1xpx7JRRfl7xQd8IqVUrFyziRL1xjNspHV/kXPIjg4x6nYOIOqS9H0H\n emJg==","X-Gm-Message-State":"AOJu0YwBaNcZ74/NWIJ5U6GNfva8ZAYWex4e97QtWNvySecvuFcwOa+u\n ejJM68Tp6kptCjI5eEsCzTR1UhXfnIhxuXrzzC2RvoxQIFJ9YnxurhPeIe8T7jiB0jnZsSxW3dY\n 4JDb8QAk8N4/xuemv50h+A8Q7/iGF108ZBl09vFMrL6AsjerPnXwUTG9KQfw=","X-Gm-Gg":"AeBDietTXSQNfuJCqJ++daFfXYY1K/enzblGMiN/MbknUUr39u2UstUE0IaIGf9CypN\n dtNwbe66Yno0GWoeg67Xbe/seA37wsYLIarDlkSM4u0XRDIBJ9P0rrlCgLEAFcCd78mUdHI273O\n ZHSf8APcGrKruTwZj0EDnFgjzpeicKB2pxi5V5EspSzgcc4JV1Oqj1RtbnG5Uow88LFVchaIuuE\n fjHuS26+LkixDlMptT9OFEF3EqQSRYtqxZaR5CKA4Mf8+vIZB9qvRGAoNIeh3uxSjwVeJe5/TN6\n F8dbACh9uOaU7G+FC5svkBCeP2fW6p1mdUvALGCEQI6t7/BXpaATKXL4u570794aP7hVPwqNUmu\n vL7t6fnBNLwlP9CgqhOE1KRMYRd0ZpBnJgv1IdtI07Y4aLoP23rnypxOmoJh676mgIali1O0Grj\n ZUdxW2Y89Oe19AMG3IVCmV7MX0XOPsmjLgPJ+leuvPGw==","X-Received":["by 2002:a05:622a:507:b0:50b:49b2:7bf with SMTP id\n d75a77b69052e-50e367fe77bmr18134941cf.12.1776398919277;\n Thu, 16 Apr 2026 21:08:39 -0700 (PDT)","by 2002:a05:622a:507:b0:50b:49b2:7bf with SMTP id\n d75a77b69052e-50e367fe77bmr18134641cf.12.1776398918806;\n Thu, 16 Apr 2026 21:08:38 -0700 (PDT)"],"Message-ID":"<44874176-cd4d-4b15-afb0-18a494bf1740@redhat.com>","Date":"Fri, 17 Apr 2026 00:08:35 -0400","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","To":"Marek Polacek <polacek@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>\n <aeDq4W_ZZPafmIKC@redhat.com>\n <cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>\n <aeD9tv54ndjwj2vv@redhat.com>\n <37213e98-aba3-4a30-8e45-d164cfae2d11@redhat.com>\n <aeFK2aSu8F8iE5Ig@redhat.com>","From":"Jason Merrill <jason@redhat.com>","In-Reply-To":"<aeFK2aSu8F8iE5Ig@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"c1rgLyHHM3qsmPkxwdBSiTtZUMuPfrKoFphBdvb8Lcw_1776398919","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678747,"web_url":"http://patchwork.ozlabs.org/comment/3678747/","msgid":"<aeJDgBlkgez0BKVg@redhat.com>","list_archive_url":null,"date":"2026-04-17T14:28:16","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":14370,"url":"http://patchwork.ozlabs.org/api/people/14370/","name":"Marek Polacek","email":"polacek@redhat.com"},"content":"On Fri, Apr 17, 2026 at 12:08:35AM -0400, Jason Merrill wrote:\n> On 4/16/26 4:47 PM, Marek Polacek wrote:\n> > On Thu, Apr 16, 2026 at 01:33:42PM -0400, Jason Merrill wrote:\n> > > On 4/16/26 11:18 AM, Marek Polacek wrote:\n> > > > On Thu, Apr 16, 2026 at 10:00:02AM -0400, Jason Merrill wrote:\n> > > > > On 4/16/26 9:57 AM, Marek Polacek wrote:\n> > > > > > On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n> > > > > > > On 4/15/26 7:36 PM, Marek Polacek wrote:\n> > > > > > > > Update: we can use valid_splice_for_member_access_p also in\n> > > > > > > > cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n> > > > > > > > check but that was unreachable anyway due to the dependent_splice_p\n> > > > > > > > check above.\n> > > > > > > > \n> > > > > > > > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n> > > > > > > \n> > > > > > > OK.  Incidentally,\n> > > > > > > \n> > > > > > > > -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n> > > > > > > \n> > > > > > > this might be a better implementation of reflection_function_template_p?\n> > > > > > \n> > > > > > If we do that, then we could drop the reflection_ prefix because\n> > > > > > we no longer have that \"multiple non-template overloads\" case, and\n> > > > > > use function_template_p in is_overloaded_fn and in\n> > > > > > valid_splice_for_member_access_p as well.\n> > > > > \n> > > > > I still wouldn't want \"function_template_p\" to be true for an OVERLOAD, only\n> > > > > for an actual TEMPLATE_DECL.\n> > > > \n> > > > So just using\n> > > > \n> > > >     return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n> > > > \n> > > > in reflection_function_template_p breaks splice5.C where we have\n> > > > \n> > > >     BASELINK<OVERLOAD<TEMPLATE_DECL<FUNCTION_DECL>>>\n> > > \n> > > ...at least if we don't remove the BASELINK from a reflection as Patrick was\n> > > suggesting.\n> > > \n> > > > so we'd also have to add MAYBE_BASELINK_FUNCTIONS (or maybe_get_first_fn) to\n> > > > reflection_function_template_p.  Is it still worth it?\n> > > \n> > > I think so.\n> > \n> > So like this?\n> > \n> > Test reflect/* so far.\n> > \n> > The subject of the patch is: c++/reflection: tweak reflection_function_template_p\n> > \n> > -- >8 --\n> > ...to use the narrower DECL_FUNCTION_TEMPLATE_P instead of\n> > really_overloaded_fn.\n> > \n> > gcc/cp/ChangeLog:\n> > \n> > \t* reflect.cc (valid_splice_for_member_access_p): Use\n> > \treflection_function_template_p.\n> > \t(reflection_function_template_p): Check DECL_FUNCTION_TEMPLATE_P\n> > \tinstead of really_overloaded_fn.  Unwrap BASELINKs and OVERLOADs.\n> > ---\n> >   gcc/cp/reflect.cc | 5 +++--\n> >   1 file changed, 3 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc\n> > index 59a862bf152..fe0c43df686 100644\n> > --- a/gcc/cp/reflect.cc\n> > +++ b/gcc/cp/reflect.cc\n> > @@ -8898,7 +8898,7 @@ valid_splice_for_member_access_p (const_tree t, bool decls_only_p/*=true*/)\n> >         || VAR_P (t)\n> >         || TREE_CODE (t) == CONST_DECL\n> >         || TREE_CODE (t) == FUNCTION_DECL\n> > -      || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (const_cast<tree> (t)))\n> > +      || reflection_function_template_p (const_cast<tree> (t))\n> \n> Let's also make reflection_function_template_p take const_tree so callers\n> don't need to const_cast?\n\nSounds good.  Tested reflect/* so far.  Ok?\n\n-- >8 --\n...to use the narrower DECL_FUNCTION_TEMPLATE_P instead of\nreally_overloaded_fn.  Also make the parameter const_tree.\n\ngcc/cp/ChangeLog:\n\n\t* cp-tree.h (reflection_function_template_p): Change the\n\tparameter to const_tree.\n\t* reflect.cc (valid_splice_for_member_access_p): Use\n\treflection_function_template_p.\n\t(reflection_function_template_p): Check DECL_FUNCTION_TEMPLATE_P\n\tinstead of really_overloaded_fn.  Unwrap BASELINKs and OVERLOADs.\n\tAdjust the parameter type.\n---\n gcc/cp/cp-tree.h  | 2 +-\n gcc/cp/reflect.cc | 7 ++++---\n 2 files changed, 5 insertions(+), 4 deletions(-)\n\ndiff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h\nindex abefbc3358f..ff8fcca72fe 100644\n--- a/gcc/cp/cp-tree.h\n+++ b/gcc/cp/cp-tree.h\n@@ -9452,7 +9452,7 @@ extern tree make_splice_scope (tree, bool);\n extern bool dependent_splice_p (const_tree) ATTRIBUTE_PURE;\n extern tree reflection_mangle_prefix (tree, char [3]);\n extern void check_consteval_only_fn (tree);\n-extern bool reflection_function_template_p (tree) ATTRIBUTE_PURE;\n+extern bool reflection_function_template_p (const_tree) ATTRIBUTE_PURE;\n extern void dump_data_member_spec (pretty_printer *, tree);\n \n /* Inline bodies.  */\ndiff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc\nindex 59f8354a3cf..97b6e76c652 100644\n--- a/gcc/cp/reflect.cc\n+++ b/gcc/cp/reflect.cc\n@@ -8919,7 +8919,7 @@ valid_splice_for_member_access_p (const_tree t, bool decls_only_p/*=true*/)\n       || VAR_P (t)\n       || TREE_CODE (t) == CONST_DECL\n       || TREE_CODE (t) == FUNCTION_DECL\n-      || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (const_cast<tree> (t)))\n+      || reflection_function_template_p (t)\n       || variable_template_p (const_cast<tree> (t)))\n     return true;\n \n@@ -9324,9 +9324,10 @@ reflection_mangle_prefix (tree refl, char prefix[3])\n /* Returns true iff X is a reflection of a function template.  */\n \n bool\n-reflection_function_template_p (tree x)\n+reflection_function_template_p (const_tree x)\n {\n-  return really_overloaded_fn (x);\n+  return (DECL_FUNCTION_TEMPLATE_P\n+\t  (OVL_FIRST (MAYBE_BASELINK_FUNCTIONS (const_cast<tree> (x)))));\n }\n \n #include \"gt-cp-reflect.h\"\n\nbase-commit: 5d3472d4933b11c26eebcd67c9227f8ada3451ed","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Cwimvi7E;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Cwimvi7E","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxy1L30pMz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 00:28:52 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 24A254AA3944\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 14:28:50 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id 266E14C91769\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 14:28:22 +0000 (GMT)","from mail-qk1-f199.google.com (mail-qk1-f199.google.com\n [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-392-7lr4UqJbOuaSCTl5qU6mTw-1; Fri, 17 Apr 2026 10:28:20 -0400","by mail-qk1-f199.google.com with SMTP id\n af79cd13be357-8d3a8df9a52so154081785a.1\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 07:28:20 -0700 (PDT)","from redhat.com ([2603:7000:9500:10::1db4])\n by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8e7d5fe98dcsm128642785a.7.2026.04.17.07.28.17\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 17 Apr 2026 07:28:18 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 24A254AA3944","OpenDKIM Filter v2.11.0 sourceware.org 266E14C91769"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 266E14C91769","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 266E14C91769","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776436102; cv=none;\n b=s5tsNyGhSawCuxtigQi4Jo9L6rRj+gcmX3umhcaWdJgSjwUNMROHW0lb3c3dVzp14l/4ayZixPELe14HOpAkhvUEH+GhhpkhNOeY3rSWbOj9En+g+/OnHb+vIq8wI6+lFsW04GnWYqyCPCOZitpBYyldIDw1Ku5JgSpgOA2D74U=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776436102; c=relaxed/simple;\n bh=HE9WN45aFbTaqMw0ZhUbcLR2t+Vr5UmCMeDnkZP7zM4=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=cvfM3C71+mDq8wHBkY3EkTJDT4elZ7ykQWZvmxtYRNQbRKah2TYTWhRRvXoFTu0NQ+inyL+wvsbTl06+ew8YICsji/NXoG7n9FudmStsBBt+vxUrh0DUK/vNcPteEDWuePCV5g6Dq8NGXtYW9aQC/i0wcsBtmEA2yYQg1QFgXQ0=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776436101;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=iXDoE6hTagcbTN7A8Q6UACQG0YFnX/IKkPGYmzM1pKw=;\n b=Cwimvi7EAIYx/UQibK9pCE+otg6fmqWCfXukHtdsAlA8ez9XyL4uRpCCNXArrZpLCs5OYK\n FYm3RNQhPz5l4B7yWKOt3g/NWJt3hkXaXJ/QYXz06JKqbC29E01BrOPd3Tqr5OTreUpCfR\n QUs96bxccDF66JdNrOAYZtOEW6uXqNo=","X-MC-Unique":"7lr4UqJbOuaSCTl5qU6mTw-1","X-Mimecast-MFC-AGG-ID":"7lr4UqJbOuaSCTl5qU6mTw_1776436100","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776436100; x=1777040900;\n h=user-agent:in-reply-to:content-disposition:mime-version:references\n :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=iXDoE6hTagcbTN7A8Q6UACQG0YFnX/IKkPGYmzM1pKw=;\n b=eehZDRB53Xym6sz8uZgY81M/DMGs8T6QTTv6EZkyE4I+1q5LKesO4wvsBF63C66PDM\n 6iWPnqOvxL7Pfq1A+66VlQS8HCcnYfdJwV5DF2EP7AfPm+yvDD6eQ9dgVrTaH6qvAmts\n QUEhMBTE039ZbnIN9mF5qSanoByumL5vg74OKse6SBLzQGy7Ti0BN5dXDL/tahEqdL8t\n g1IxZHv9WvXvK+F1m9Pa8H3XV2aQqtVTxvMiBw9cXtXCT/i4SWZ8woqWt5EgCR5hlr8b\n trxcHdZXBfsDIyTrfPFQZu88GXFHsYmEJoedVx1XzfYDqNJgeRE/V7Cg+0DfchjFla+p\n l8aw==","X-Gm-Message-State":"AOJu0YyQn7tlm+uRr5uKvT89O5S1Sx9o62x0IuuWg89ksxNNnzQ69X2Y\n BmkJAVYtDu++czUwe5zpPsnvMcZaqGfUFOhJivyTWCV2ogLlMPuc71btrlp0nMHczrLZ5kuN/eg\n eE6iSNo6bR1iQPQSPrZb1MBlY1WXW+VL3m/j4QaxnDuqEiBm15yp6FaqfRGI=","X-Gm-Gg":"AeBDietCkvXFqayHU2fgpixsEeHz9oaB91znPznRYG0NruaHZGpUes4JZSagouNfsH4\n r16KIKs4u3fBukuGpw3iBeNoUP6xl/Mj2GzihtnPdFUVU/vt45eFnKKp736IvqS/rVGHxjh7Xhv\n pXiZQ7SLXAMCVzZlQWY4Xv++L3iSdD6aQynu0NXaIxRfbKVqn7blpcuFccYV+f9Hsn1Hf+CPf2u\n xyKYRpFNNYi4EeGhMWL2BUTnV4Ni2na7ZL0b1b27og49JZTorA1ZpRa+l4SUwIyadUWaeeYu/RH\n wYMjAsJn9Ub9MwMIckXXS1STdus1omneY2nmBaE+kcEE4eI6RMix7cMmTkpBfMtLzsCa16agj0j\n VW1QeYtiBWqrV","X-Received":["by 2002:a05:620a:4143:b0:8cd:b626:cdf1 with SMTP id\n af79cd13be357-8e792181919mr407821685a.46.1776436099466;\n Fri, 17 Apr 2026 07:28:19 -0700 (PDT)","by 2002:a05:620a:4143:b0:8cd:b626:cdf1 with SMTP id\n af79cd13be357-8e792181919mr407817385a.46.1776436098965;\n Fri, 17 Apr 2026 07:28:18 -0700 (PDT)"],"Date":"Fri, 17 Apr 2026 10:28:16 -0400","From":"Marek Polacek <polacek@redhat.com>","To":"Jason Merrill <jason@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","Message-ID":"<aeJDgBlkgez0BKVg@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>\n <aeDq4W_ZZPafmIKC@redhat.com>\n <cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>\n <aeD9tv54ndjwj2vv@redhat.com>\n <37213e98-aba3-4a30-8e45-d164cfae2d11@redhat.com>\n <aeFK2aSu8F8iE5Ig@redhat.com>\n <44874176-cd4d-4b15-afb0-18a494bf1740@redhat.com>","MIME-Version":"1.0","In-Reply-To":"<44874176-cd4d-4b15-afb0-18a494bf1740@redhat.com>","User-Agent":"Mutt/2.3.1 (2026-03-20)","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"zBPUuhyhGaIWnmY0vgawGNATqOTAeZTL492XwGHe2FY_1776436100","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3678758,"web_url":"http://patchwork.ozlabs.org/comment/3678758/","msgid":"<433f1cb0-4453-4286-b0f8-65cbbb950777@redhat.com>","list_archive_url":null,"date":"2026-04-17T14:55:04","subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","submitter":{"id":4337,"url":"http://patchwork.ozlabs.org/api/people/4337/","name":"Jason Merrill","email":"jason@redhat.com"},"content":"On 4/17/26 10:28 AM, Marek Polacek wrote:\n> On Fri, Apr 17, 2026 at 12:08:35AM -0400, Jason Merrill wrote:\n>> On 4/16/26 4:47 PM, Marek Polacek wrote:\n>>> On Thu, Apr 16, 2026 at 01:33:42PM -0400, Jason Merrill wrote:\n>>>> On 4/16/26 11:18 AM, Marek Polacek wrote:\n>>>>> On Thu, Apr 16, 2026 at 10:00:02AM -0400, Jason Merrill wrote:\n>>>>>> On 4/16/26 9:57 AM, Marek Polacek wrote:\n>>>>>>> On Thu, Apr 16, 2026 at 09:49:05AM -0400, Jason Merrill wrote:\n>>>>>>>> On 4/15/26 7:36 PM, Marek Polacek wrote:\n>>>>>>>>> Update: we can use valid_splice_for_member_access_p also in\n>>>>>>>>> cp_parser_splice_expression.  It doesn't cover the SPLICE_EXPR\n>>>>>>>>> check but that was unreachable anyway due to the dependent_splice_p\n>>>>>>>>> check above.\n>>>>>>>>>\n>>>>>>>>> Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n>>>>>>>>\n>>>>>>>> OK.  Incidentally,\n>>>>>>>>\n>>>>>>>>> -\t\t  || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (t))\n>>>>>>>>\n>>>>>>>> this might be a better implementation of reflection_function_template_p?\n>>>>>>>\n>>>>>>> If we do that, then we could drop the reflection_ prefix because\n>>>>>>> we no longer have that \"multiple non-template overloads\" case, and\n>>>>>>> use function_template_p in is_overloaded_fn and in\n>>>>>>> valid_splice_for_member_access_p as well.\n>>>>>>\n>>>>>> I still wouldn't want \"function_template_p\" to be true for an OVERLOAD, only\n>>>>>> for an actual TEMPLATE_DECL.\n>>>>>\n>>>>> So just using\n>>>>>\n>>>>>      return DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (x));\n>>>>>\n>>>>> in reflection_function_template_p breaks splice5.C where we have\n>>>>>\n>>>>>      BASELINK<OVERLOAD<TEMPLATE_DECL<FUNCTION_DECL>>>\n>>>>\n>>>> ...at least if we don't remove the BASELINK from a reflection as Patrick was\n>>>> suggesting.\n>>>>\n>>>>> so we'd also have to add MAYBE_BASELINK_FUNCTIONS (or maybe_get_first_fn) to\n>>>>> reflection_function_template_p.  Is it still worth it?\n>>>>\n>>>> I think so.\n>>>\n>>> So like this?\n>>>\n>>> Test reflect/* so far.\n>>>\n>>> The subject of the patch is: c++/reflection: tweak reflection_function_template_p\n>>>\n>>> -- >8 --\n>>> ...to use the narrower DECL_FUNCTION_TEMPLATE_P instead of\n>>> really_overloaded_fn.\n>>>\n>>> gcc/cp/ChangeLog:\n>>>\n>>> \t* reflect.cc (valid_splice_for_member_access_p): Use\n>>> \treflection_function_template_p.\n>>> \t(reflection_function_template_p): Check DECL_FUNCTION_TEMPLATE_P\n>>> \tinstead of really_overloaded_fn.  Unwrap BASELINKs and OVERLOADs.\n>>> ---\n>>>    gcc/cp/reflect.cc | 5 +++--\n>>>    1 file changed, 3 insertions(+), 2 deletions(-)\n>>>\n>>> diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc\n>>> index 59a862bf152..fe0c43df686 100644\n>>> --- a/gcc/cp/reflect.cc\n>>> +++ b/gcc/cp/reflect.cc\n>>> @@ -8898,7 +8898,7 @@ valid_splice_for_member_access_p (const_tree t, bool decls_only_p/*=true*/)\n>>>          || VAR_P (t)\n>>>          || TREE_CODE (t) == CONST_DECL\n>>>          || TREE_CODE (t) == FUNCTION_DECL\n>>> -      || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (const_cast<tree> (t)))\n>>> +      || reflection_function_template_p (const_cast<tree> (t))\n>>\n>> Let's also make reflection_function_template_p take const_tree so callers\n>> don't need to const_cast?\n> \n> Sounds good.  Tested reflect/* so far.  Ok?\n\nOK.\n\n> -- >8 --\n> ...to use the narrower DECL_FUNCTION_TEMPLATE_P instead of\n> really_overloaded_fn.  Also make the parameter const_tree.\n> \n> gcc/cp/ChangeLog:\n> \n> \t* cp-tree.h (reflection_function_template_p): Change the\n> \tparameter to const_tree.\n> \t* reflect.cc (valid_splice_for_member_access_p): Use\n> \treflection_function_template_p.\n> \t(reflection_function_template_p): Check DECL_FUNCTION_TEMPLATE_P\n> \tinstead of really_overloaded_fn.  Unwrap BASELINKs and OVERLOADs.\n> \tAdjust the parameter type.\n> ---\n>   gcc/cp/cp-tree.h  | 2 +-\n>   gcc/cp/reflect.cc | 7 ++++---\n>   2 files changed, 5 insertions(+), 4 deletions(-)\n> \n> diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h\n> index abefbc3358f..ff8fcca72fe 100644\n> --- a/gcc/cp/cp-tree.h\n> +++ b/gcc/cp/cp-tree.h\n> @@ -9452,7 +9452,7 @@ extern tree make_splice_scope (tree, bool);\n>   extern bool dependent_splice_p (const_tree) ATTRIBUTE_PURE;\n>   extern tree reflection_mangle_prefix (tree, char [3]);\n>   extern void check_consteval_only_fn (tree);\n> -extern bool reflection_function_template_p (tree) ATTRIBUTE_PURE;\n> +extern bool reflection_function_template_p (const_tree) ATTRIBUTE_PURE;\n>   extern void dump_data_member_spec (pretty_printer *, tree);\n>   \n>   /* Inline bodies.  */\n> diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc\n> index 59f8354a3cf..97b6e76c652 100644\n> --- a/gcc/cp/reflect.cc\n> +++ b/gcc/cp/reflect.cc\n> @@ -8919,7 +8919,7 @@ valid_splice_for_member_access_p (const_tree t, bool decls_only_p/*=true*/)\n>         || VAR_P (t)\n>         || TREE_CODE (t) == CONST_DECL\n>         || TREE_CODE (t) == FUNCTION_DECL\n> -      || DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (const_cast<tree> (t)))\n> +      || reflection_function_template_p (t)\n>         || variable_template_p (const_cast<tree> (t)))\n>       return true;\n>   \n> @@ -9324,9 +9324,10 @@ reflection_mangle_prefix (tree refl, char prefix[3])\n>   /* Returns true iff X is a reflection of a function template.  */\n>   \n>   bool\n> -reflection_function_template_p (tree x)\n> +reflection_function_template_p (const_tree x)\n>   {\n> -  return really_overloaded_fn (x);\n> +  return (DECL_FUNCTION_TEMPLATE_P\n> +\t  (OVL_FIRST (MAYBE_BASELINK_FUNCTIONS (const_cast<tree> (x)))));\n>   }\n>   \n>   #include \"gt-cp-reflect.h\"\n> \n> base-commit: 5d3472d4933b11c26eebcd67c9227f8ada3451ed","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Yd1pbNcw;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Yd1pbNcw","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxyjB32v7z1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 00:59:57 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 2848B4CCCA1B\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 14:59:55 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id 0BFD14BB3BA8\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 14:55:09 +0000 (GMT)","from mail-vs1-f72.google.com (mail-vs1-f72.google.com\n [209.85.217.72]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-694-4Dyv22fZNAGHl_usmBsF_Q-1; Fri, 17 Apr 2026 10:55:08 -0400","by mail-vs1-f72.google.com with SMTP id\n ada2fe7eead31-612d26038fbso1084757137.1\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 07:55:08 -0700 (PDT)","from [192.168.50.130]\n (130-44-146-247.s12789.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com.\n [130.44.146.247]) by smtp.gmail.com with ESMTPSA id\n ada2fe7eead31-61745c9e51bsm792889137.4.2026.04.17.07.55.04\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Fri, 17 Apr 2026 07:55:06 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 2848B4CCCA1B","OpenDKIM Filter v2.11.0 sourceware.org 0BFD14BB3BA8"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 0BFD14BB3BA8","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 0BFD14BB3BA8","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776437710; cv=none;\n b=gffU023UgRKrFcmM5bNmoS8qK0TmV2BvXBp+lZCPwgxbs/RHRfZnoiqZNAGzXl0QyF6b0bkUnM2Ue5+8DiZzQGbcZRfnf52lSExCC7dlFQBYUAN0+UzCRypwgQvieQylyV1ctPWg2B7CHPuc8Z1exG1ym+dM0uxHaq1M2kXXtzo=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776437710; c=relaxed/simple;\n bh=SFHDFQwB15cFcGB0Iyf9FrrprwCmWQWSuWOM+Rb+UTM=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=DCGN/bnqid6XsnOo/8z18rhRffUKhD0WP9r0H9d4j4zX+B9Tytiv8eUlzrfvI5DKGCLWtqGF44xhwvKhSHSpoB3ta+odq902A3jNQ6P318RA9mMQdeCvjnLkX7KY9fJLgJjaGmhBOVzZPdT9AsAIr28K770gbGGZt0GPmvhr9zs=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776437709;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=wiYJfCFnSoyjOxo+CukVW0iOsW19HjHHdmVuTsLMfLQ=;\n b=Yd1pbNcwLKBYvtlc+qrZrgVtQiOgkox80tOxzNMD6FhVV/nkugDB8hpoetlN232tEsj73a\n +8Qi5rPo2r8kYzPKHtX8Tcv/7HCP7sIof2Nf+wYBrXaJfkoudAaK92KuQ8CjT9ewJXHGkr\n w5a+DfAIzwbEXGG3Oh42sXQNYS5PzTw=","X-MC-Unique":"4Dyv22fZNAGHl_usmBsF_Q-1","X-Mimecast-MFC-AGG-ID":"4Dyv22fZNAGHl_usmBsF_Q_1776437708","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776437708; x=1777042508;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=wiYJfCFnSoyjOxo+CukVW0iOsW19HjHHdmVuTsLMfLQ=;\n b=H3byZ2oc5C3qyjcgxkNhNHH2VNXkW5CKcxZqVTRaFbOdWFkXuyjW7F6khM1+ot/fTl\n gYeCn0ZfUYMVwMAXgDW1CwqbpAWJeoHwLemBLpXu5xs+Ivrl3oPSjcUWHV3wAT3Lyt+R\n zBqo/KyVtq6tAz0RGbCNVJJqSL4QOJQmVgCgGsne8OO6a5VU/36COfncRYquJZQ0TC+T\n ID3R9kRlpYdF29+RoOXHumtYGhkyl+1WBavz3HD/Em/CvHx8m4obzVHJzugF3zixnl6p\n nkg6JZcHrXxXMcRp3eWF8aNJCueKL8HGZdEOjomLoLcx16fP2VZDixHxt/pHAkEoLZdw\n Iy1A==","X-Gm-Message-State":"AOJu0YzHkdE2iSC6vYpuyioATgvYjsYGfpvxVrcRqnyjF7+ml1D7pDpp\n Vt0XQgJ2SCVKpXrP7AeOXY11tPjYKJV2cPA9VHbqSoKbRw1a0UIuun0SGxesfK7msmeeq60y1Vt\n kX7JoDRU6Ov6g7pbZiaeZIobzlQojdA598D6disfR2G/HEkJlEydjUPFxgTY=","X-Gm-Gg":"AeBDietTVI9yw/5+9iUJlhRFm2cNExFi7TQS77v/bubkSGBnAiXnZwY/UX6TL69+CsK\n /zypP5ZjbpjkzK6QP0z0N+BEYQZ5zBEgwO72YLjaHYapTwb/MKVIIqS+0L/9ZVuaxMyh+SlzPo4\n Eo4MC1K+ifrSQZoAiASffJiiAWb5PfvDs5kM1+M1r1OUU3nWkz5pZh163bttlq2A0I5QKNNF6eY\n HCa+7/+mEWQV5+Iv4MTI5XapYunTrM4ed5Mrin0NuUnR2d+SaW06KGJp1b6FGWNXX3mvTOhDhEu\n r9h6L/M6eV5UwVoRZsgtzYYgCHEDOo9ncd6mPuah91JuWnBsEJyttpOPXgOPV80UCt4wOIPybUt\n cFzSJkj7puVxERxBuDmYsgC5+wrPlwAp6f7ijBNQfqAm4vTOy4FbBrYprQKGMjpIUB+Y+BU3QDY\n a3BPGW8yIrn/NhqnAcbvgZDlDMNbEXdVF2B4hViere/A==","X-Received":["by 2002:a05:6102:ccc:b0:602:7589:6545 with SMTP id\n ada2fe7eead31-616f7947776mr1638387137.28.1776437707635;\n Fri, 17 Apr 2026 07:55:07 -0700 (PDT)","by 2002:a05:6102:ccc:b0:602:7589:6545 with SMTP id\n ada2fe7eead31-616f7947776mr1638375137.28.1776437707168;\n Fri, 17 Apr 2026 07:55:07 -0700 (PDT)"],"Message-ID":"<433f1cb0-4453-4286-b0f8-65cbbb950777@redhat.com>","Date":"Fri, 17 Apr 2026 10:55:04 -0400","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2] c++/reflection: detect bad splices in class member\n access [PR124614]","To":"Marek Polacek <polacek@redhat.com>","Cc":"GCC Patches <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","References":"<20260415224602.1507107-1-polacek@redhat.com>\n <aeAg83cavdrK6uzd@redhat.com>\n <002fad00-088d-4106-9fcf-33053f457fba@redhat.com>\n <aeDq4W_ZZPafmIKC@redhat.com>\n <cec739c8-7f80-41c5-bcf1-d02a988a8a0d@redhat.com>\n <aeD9tv54ndjwj2vv@redhat.com>\n <37213e98-aba3-4a30-8e45-d164cfae2d11@redhat.com>\n <aeFK2aSu8F8iE5Ig@redhat.com>\n <44874176-cd4d-4b15-afb0-18a494bf1740@redhat.com>\n <aeJDgBlkgez0BKVg@redhat.com>","From":"Jason Merrill <jason@redhat.com>","In-Reply-To":"<aeJDgBlkgez0BKVg@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"LSClELhlD_GwhsPK_XT4rtwAjBoGaiYrJx3RsgJPUMU_1776437708","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]