diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2017-07-26 21:46:22 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2017-07-26 21:46:22 +0000 |
commit | eb08656284916b5bc6b4bfcd5561aa17bdc5ebeb (patch) | |
tree | b0d04ab14c780f52cd2ac51f7205d492e008bd82 /gcc | |
parent | 7e2a8417f76b13f06c6a5e21a32e1b83d763d119 (diff) | |
download | gcc-eb08656284916b5bc6b4bfcd5561aa17bdc5ebeb.zip gcc-eb08656284916b5bc6b4bfcd5561aa17bdc5ebeb.tar.gz gcc-eb08656284916b5bc6b4bfcd5561aa17bdc5ebeb.tar.bz2 |
re PR c++/71570 (ICE on invalid variable capture in cxx_incomplete_type_diagnostic, at cp/typeck2.c:55)
/cp
2017-07-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71570
* lambda.c (add_capture): Early return if we cannot capture by
reference.
/testsuite
2017-07-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71570
* g++.dg/cpp0x/lambda/lambda-ice17.C: New.
From-SVN: r250591
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/lambda.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice17.C | 12 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9e763ae..bf3d249 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2017-07-26 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71570 + * lambda.c (add_capture): Early return if we cannot capture by + reference. + 2017-07-26 Jason Merrill <jason@redhat.com> P0702R1 - List deduction of vector. diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index 0e02375..14ff6c2 100644 --- a/gcc/cp/lambda.c +++ b/gcc/cp/lambda.c @@ -529,7 +529,10 @@ add_capture (tree lambda, tree id, tree orig_init, bool by_reference_p, else if (id != this_identifier && by_reference_p) { if (!lvalue_p (initializer)) - error ("cannot capture %qE by reference", initializer); + { + error ("cannot capture %qE by reference", initializer); + return error_mark_node; + } } else { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 61d1743..39af41e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-07-26 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71570 + * g++.dg/cpp0x/lambda/lambda-ice17.C: New. + 2017-07-26 H.J. Lu <hongjiu.lu@intel.com> PR target/81563 diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice17.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice17.C new file mode 100644 index 0000000..57111fd --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice17.C @@ -0,0 +1,12 @@ +// PR c++/71570 +// { dg-do compile { target c++11 } } + +void foo (int); + +void foo (void) +{ + [&foo] // { dg-error "cannot capture" } + { + foo (0); + }; +} |