aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/pt.cc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2022-05-24 17:37:58 -0400
committerJason Merrill <jason@redhat.com>2022-05-25 11:09:10 -0400
commit850a9ce8bcca59c7efabcdeeca14c5bd905e8363 (patch)
tree8e9fe808f5f9be98eb1436a45df1f1376d820f5a /gcc/cp/pt.cc
parent8c9c92f8079589730708ce831a86e01d510d9db4 (diff)
downloadgcc-850a9ce8bcca59c7efabcdeeca14c5bd905e8363.zip
gcc-850a9ce8bcca59c7efabcdeeca14c5bd905e8363.tar.gz
gcc-850a9ce8bcca59c7efabcdeeca14c5bd905e8363.tar.bz2
c++: deduction from auto fn [PR105623]
Since my patch for PR90451, we defer mark_used of single functions as late as possible. And since my r12-1273, we keep BASELINK from lookup around rather than reconstruct it later. These both made us try to instantiate g with a function type that still had 'auto' as its return type. PR c++/105623 gcc/cp/ChangeLog: * decl2.cc (mark_used): Copy type from fn to BASELINK. * pt.cc (unify_one_argument): Call mark_single_function. gcc/testsuite/ChangeLog: * g++.dg/cpp1y/auto-fn62.C: New test.
Diffstat (limited to 'gcc/cp/pt.cc')
-rw-r--r--gcc/cp/pt.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
index b45a299..76913cb 100644
--- a/gcc/cp/pt.cc
+++ b/gcc/cp/pt.cc
@@ -22643,6 +22643,10 @@ 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)