aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/parser.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2017-01-17 18:22:34 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2017-01-17 18:22:34 +0000
commit8ddfdbc265cfe0da5b727559d3736876d0198afb (patch)
tree127551e9b5d51e1763e5a76af78e43a959b28a43 /gcc/cp/parser.c
parentf46fe37e86aa04522258dad374d0c7bf9c443ed3 (diff)
downloadgcc-8ddfdbc265cfe0da5b727559d3736876d0198afb.zip
gcc-8ddfdbc265cfe0da5b727559d3736876d0198afb.tar.gz
gcc-8ddfdbc265cfe0da5b727559d3736876d0198afb.tar.bz2
re PR c++/61636 (generic lambda: segfault / "cannot call member function without object")
PR c++/61636 * cp-tree.h (maybe_generic_this_capture): Declare. * lambda.c (resolvable_dummy_lambda): New, broken out of ... (maybe_resolve_dummy): ... here. Call it. (maybe_generic_this_capture): New. * parser.c (cp_parser_postfix_expression): Speculatively capture this in generic lambda in unresolved member function call. * pt.c (tsubst_copy_and_build): Force hard error from failed member function lookup in generic lambda. PR c++/61636 * g++.dg/cpp1y/pr61636-1.C: New. * g++.dg/cpp1y/pr61636-2.C: New. * g++.dg/cpp1y/pr61636-3.C: New. From-SVN: r244544
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r--gcc/cp/parser.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 295c450..6d3b877 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -6971,6 +6971,7 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
|| type_dependent_expression_p (fn)
|| any_type_dependent_arguments_p (args)))
{
+ maybe_generic_this_capture (instance, fn);
postfix_expression
= build_nt_call_vec (postfix_expression, args);
release_tree_vector (args);