aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2017-09-06 15:36:48 -0400
committerJason Merrill <jason@gcc.gnu.org>2017-09-06 15:36:48 -0400
commit7ab50e17943ee4caaf2fba2d4238a00e0409f1e7 (patch)
treec515a6b0cec58a31cc8aefd30f838e6cd4ebff43 /gcc/cp
parentbbd3510114011baa1be27dde94c55085678c34bf (diff)
downloadgcc-7ab50e17943ee4caaf2fba2d4238a00e0409f1e7.zip
gcc-7ab50e17943ee4caaf2fba2d4238a00e0409f1e7.tar.gz
gcc-7ab50e17943ee4caaf2fba2d4238a00e0409f1e7.tar.bz2
PR c++/82070 - error with nested lambda capture
* pt.c (tsubst_expr) [DECL_EXPR]: Register capture proxies with register_local_specialization. From-SVN: r251819
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c7
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c154630..e497094 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2017-09-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/82070 - error with nested lambda capture
+ * pt.c (tsubst_expr) [DECL_EXPR]: Register capture proxies with
+ register_local_specialization.
+
2017-09-06 Nathan Sidwell <nathan@acm.org>
* name-lookup.h (lookup_field_1): Delete.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index eb27f6a..4a65e31 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -15985,8 +15985,11 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
else if (is_capture_proxy (decl)
&& !DECL_TEMPLATE_INSTANTIATION (current_function_decl))
{
- /* We're in tsubst_lambda_expr, we've already inserted new capture
- proxies, and uses will find them with lookup_name. */
+ /* We're in tsubst_lambda_expr, we've already inserted a new
+ capture proxy, so look it up and register it. */
+ tree inst = lookup_name (DECL_NAME (decl));
+ gcc_assert (inst != decl && is_capture_proxy (inst));
+ register_local_specialization (inst, decl);
break;
}
else if (DECL_IMPLICIT_TYPEDEF_P (decl)