From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id D7E903834E41 for ; Wed, 1 Jun 2022 19:20:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D7E903834E41 Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-310-GT8xRNCHMCG56hYYZYI5eA-1; Wed, 01 Jun 2022 15:20:42 -0400 X-MC-Unique: GT8xRNCHMCG56hYYZYI5eA-1 Received: by mail-qv1-f71.google.com with SMTP id da12-20020a05621408cc00b0046448be0e98so2053503qvb.9 for ; Wed, 01 Jun 2022 12:20:42 -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=rpvcPZVfNopDh25ERUuNeHgwppkIqPuitQ4qwFcsbK4=; b=xouzZQM0jTtvtogOlVy09eRdYKpL/DpzPllRcaqI/xQ90PN8cqXBu5ybTxHZsMOcyF U0pZ5qrjp8Od5xJpzO+exHnT1hgOm8Fq1cO2NjPvCMs2PUN6RS0aW0/grpguuxxKdHAy KqFLLy2qPlueW2bIBP4odgotrS+wH3ghJeeW5fQKYQfgdndy/qFUq5jh1pJ2MirAQwW+ j9cwO+0DPG1RxmRuPtMgPLMJEeWVAzuJ13HgeeFeuMwaztEy8iBLpwx2xN+32QQVjn8Q Pg3XoUqsXnbnckIT0D7g/Nv99tGFRBhvdaZf04ROF1bG73KCxP/cPL5Ajndri+/MQfU0 gncg== X-Gm-Message-State: AOAM531NQkE/VR4CHqUa57fEoTD3p4B6jdqC8wWdfkJAeMje5c+vh5qV 9QirVI0zX8MJMvJCpb1z1QGknAkbWUKG8jomed5B+hHMb+I4RbSrM7dDsOobkE0wSZpGFL/9CGK 8zJHXrE6M0R5A5ixN/Cd8q8Bz5tkJsSqTBf537olP95kzl60xnpxrfFbEk6TDJw/8Gg== X-Received: by 2002:a05:620a:2a11:b0:6a5:8dff:76fa with SMTP id o17-20020a05620a2a1100b006a58dff76famr836627qkp.3.1654111241761; Wed, 01 Jun 2022 12:20:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwjMr6ITYMp8HvCdKRG0ftnZiH7tYvkdBLV+CHrIU3stnFzIDFWMws2Vjp/7P4Q/6vGNzGioA== X-Received: by 2002:a05:620a:2a11:b0:6a5:8dff:76fa with SMTP id o17-20020a05620a2a1100b006a58dff76famr836603qkp.3.1654111241308; Wed, 01 Jun 2022 12:20:41 -0700 (PDT) Received: from barrymore.redhat.com (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 q188-20020ae9dcc5000000b0069fc13ce1f2sm1851979qkf.35.2022.06.01.12.20.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jun 2022 12:20:40 -0700 (PDT) From: Jason Merrill To: gcc-patches@gcc.gnu.org Subject: [pushed] c++: auto function as function argument [PR105779] Date: Wed, 1 Jun 2022 15:20:38 -0400 Message-Id: <20220601192038.1778324-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 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Jun 2022 19:20:46 -0000 This testcase demonstrates that the issue in PR105623 is not limited to templates, so we should do the marking in a less template-specific place. Tested x86_64-pc-linux-gnu, applying to trunk. PR c++/105779 gcc/cp/ChangeLog: * call.cc (resolve_args): Call mark_single_function here. * pt.cc (unify_one_argument): Not here. gcc/testsuite/ChangeLog: * g++.dg/cpp1y/auto-fn63.C: New test. --- gcc/cp/call.cc | 5 +++++ gcc/cp/pt.cc | 4 ---- gcc/testsuite/g++.dg/cpp1y/auto-fn63.C | 12 ++++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/auto-fn63.C diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc index 85fe9b5ab85..4710c3777c5 100644 --- a/gcc/cp/call.cc +++ b/gcc/cp/call.cc @@ -4672,6 +4672,11 @@ resolve_args (vec *args, tsubst_flags_t complain) } else if (invalid_nonstatic_memfn_p (EXPR_LOCATION (arg), arg, complain)) return NULL; + + /* Force auto deduction now. Omit tf_warning to avoid redundant + deprecated warning on deprecated-14.C. */ + if (!mark_single_function (arg, tf_error)) + return NULL; } return args; } diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 4f0ace2644b..6de8e496859 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -22624,10 +22624,6 @@ unify_one_argument (tree tparms, tree targs, tree parm, tree arg, return unify_success (explain_p); } - /* Force auto deduction now. Use tf_none to avoid redundant - deprecated warning on deprecated-14.C. */ - mark_single_function (arg, tf_none); - arg_expr = arg; arg = unlowered_expr_type (arg); if (arg == error_mark_node) diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn63.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn63.C new file mode 100644 index 00000000000..ca3bc854065 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn63.C @@ -0,0 +1,12 @@ +// PR c++/105779 +// { dg-do compile { target c++14 } } + +template +struct struct1 +{ + static auto apply() { return 1; } +}; + +int method(int(*f)()); + +int t = method(struct1<1>::apply); base-commit: ae54c1b09963779c5c3914782324ff48af32e2f1 -- 2.27.0