From patchwork Tue Apr 26 03:51:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 53212 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2181B385842E for ; Tue, 26 Apr 2022 03:52:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2181B385842E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1650945151; bh=vaidd8j7WV43/RR013eRAadwYaSisVq+J5xjvnaGcOk=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=skIrNTeKqyQ2pPa4pBRHxayHwD6Y8yd6FuzRV8TQLwAcBTJHsOAX+9Qn/fmwsLvSZ 8JOtzTWy0EQBSU1zNCCoik41d15pM+BKlPDG5DOlfvrkwHDwHu2OHeyBMTEdO9bJF8 FBZuBJjBJdGgNlvfD3zTy5sL7V+YunnxAAE0qw3Q= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id C59A03858C52 for ; Tue, 26 Apr 2022 03:52:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C59A03858C52 Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-101-fPr0IsC6MJCfixH02UNd_Q-1; Mon, 25 Apr 2022 23:51:59 -0400 X-MC-Unique: fPr0IsC6MJCfixH02UNd_Q-1 Received: by mail-qk1-f197.google.com with SMTP id x25-20020a05620a14b900b0069ec20bb022so10994052qkj.19 for ; Mon, 25 Apr 2022 20:51:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=vaidd8j7WV43/RR013eRAadwYaSisVq+J5xjvnaGcOk=; b=0/vs2LBJVdlXESfaBM+lBOtNzvm887GcRX05g7BkV6x40OrFVaJlyZGjjLnVtntbAc QrD9rq7rPIf47M7Vr6jqQ7PbYHIqqLgoxQJDX66PGLHZWH9X0ZcTNLhiDCuf6AMBYUXU RLVdjuUXNrBq2cuaIdPqnwup8Qc4goI7EXiABRpMvioxrtUrGD5L3W9i+i1PwOad/QEg TZwEUjQlrueT0GUE0Kais1FgkoNbpanGcQ6DhOrR2hVuIQA4I7b8czWT3/GYoSYJP5+V v6nVs+d/sj22nnq8dwazGu8cMRZjQLMhVpSMFaBIFkzFEdXb53vdy9waAWC6V5LPkpOh lvVA== X-Gm-Message-State: AOAM533Phyl4b53wUW18/MEIuCZ5mmLa8/VbTCGqUvSc42XPvfCiVuG8 I/6xSsLZCCd1f3phx5Y5HANPtlpHleXi9O+Dp6eBlIcO5O6bwONk2S+DiKqBHmzVwsWWhA9djUW AzV0Jf0Tn9SK2/9yX4yF9VYa4e6Eak9RUsDmuPrDM4dRMloYEU6GeYYX8DR7sPGtzhA== X-Received: by 2002:a05:620a:20d2:b0:69e:93d4:214a with SMTP id f18-20020a05620a20d200b0069e93d4214amr11648325qka.40.1650945118670; Mon, 25 Apr 2022 20:51:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzNdespDERnk1YUPTJROa92oM6Ieq0HFZdDp2Xdug4ESDV3v4dDr2bZEHlWm7+LrjE5pVB6Pw== X-Received: by 2002:a05:620a:20d2:b0:69e:93d4:214a with SMTP id f18-20020a05620a20d200b0069e93d4214amr11648310qka.40.1650945118278; Mon, 25 Apr 2022 20:51:58 -0700 (PDT) Received: from barrymore.cygnus.csb (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id d13-20020a37c40d000000b0069ebc29ddc1sm5791995qki.136.2022.04.25.20.51.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Apr 2022 20:51:57 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [pushed] c++: generic lambda fn parm pack [PR104624] Date: Mon, 25 Apr 2022 23:51:55 -0400 Message-Id: <20220426035155.551308-1-jason@redhat.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jason Merrill via Gcc-patches From: Jason Merrill Reply-To: Jason Merrill Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Parameter packs from the enclosing context can be used unexpanded in a lambda that is itself part of a pack expansion, but not packs that are part of the lambda itself. We already check for capture packs; we also need to check for function parameter packs of the lambda call operator. Tested x86_64-pc-linux-gnu, applying to trunk. PR c++/104624 gcc/cp/ChangeLog: * pt.cc (check_for_bare_parameter_packs): Check for lambda function parameter pack. gcc/testsuite/ChangeLog: * g++.dg/cpp1y/lambda-generic-variadic22.C: New test. --- gcc/cp/pt.cc | 4 +++- .../g++.dg/cpp1y/lambda-generic-variadic22.C | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic22.C base-commit: ab91c10792cd3a1ba1495aa30a34ca17b043bafb diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index dde62ee052d..c05783f505f 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -4341,7 +4341,9 @@ check_for_bare_parameter_packs (tree t, location_t loc /* = UNKNOWN_LOCATION */) parameter_packs = TREE_CHAIN (parameter_packs)) { tree pack = TREE_VALUE (parameter_packs); - if (is_capture_proxy (pack)) + if (is_capture_proxy (pack) + || (TREE_CODE (pack) == PARM_DECL + && DECL_CONTEXT (DECL_CONTEXT (pack)) == lam)) break; } diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic22.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic22.C new file mode 100644 index 00000000000..670c598a865 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic22.C @@ -0,0 +1,15 @@ +// PR c++/104624 +// { dg-do compile { target c++14 } } + +template +auto f (T) +{ + auto a = [](auto ... i) // { dg-prune-output "incomplete type" } + { + int x[][i] = { 0 }; // { dg-error "not expanded" } + }(); +} +void g () +{ + f(0); +}