From: Jason Merrill Date: Tue, 24 Dec 2013 04:22:15 +0000 (-0500) Subject: re PR c++/59349 (ICE on invalid: Segmentation fault toplev.c:336) X-Git-Tag: releases/gcc-4.9.0~1931 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8fc13bad8e7c8f63aae7b0f58fe7e9a02ce11a29;p=thirdparty%2Fgcc.git re PR c++/59349 (ICE on invalid: Segmentation fault toplev.c:336) PR c++/59349 * parser.c (cp_parser_lambda_introducer): Handle empty init. From-SVN: r206192 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 52400421d641..c921f203ac99 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-23 Jason Merrill + + PR c++/59349 + * parser.c (cp_parser_lambda_introducer): Handle empty init. + 2013-12-23 Stuart Hastings Bill Maddox Jason Merrill diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 2a2cbf0f0610..4ef0f05c9beb 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -8898,6 +8898,11 @@ cp_parser_lambda_introducer (cp_parser* parser, tree lambda_expr) capture_init_expr = cp_parser_initializer (parser, &direct, &non_constant); explicit_init_p = true; + if (capture_init_expr == NULL_TREE) + { + error ("empty initializer for lambda init-capture"); + capture_init_expr = error_mark_node; + } } else { diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C new file mode 100644 index 000000000000..ad152cf535b8 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C @@ -0,0 +1,6 @@ +// PR c++/59349 +// { dg-options "-std=c++1y" } + +int foo () { + [bar()]{}; // { dg-error "empty initializer" } +}