diff options
author | Jason Merrill <jason@redhat.com> | 2018-02-16 16:02:50 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2018-02-16 16:02:50 -0500 |
commit | 6f58bc5825c0d0ff0606b747b01bb2dcff882a1d (patch) | |
tree | 513ad6e55a9281bb0dd709c6e7b929efdc0962b9 /gcc | |
parent | e1617c1d3837a5d914a6bfd6b01f46c941d0caca (diff) | |
download | gcc-6f58bc5825c0d0ff0606b747b01bb2dcff882a1d.zip gcc-6f58bc5825c0d0ff0606b747b01bb2dcff882a1d.tar.gz gcc-6f58bc5825c0d0ff0606b747b01bb2dcff882a1d.tar.bz2 |
PR c++/84420 - ICE with structured binding in lambda.
* lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
From-SVN: r257761
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/lambda.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C | 10 |
3 files changed, 14 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 076b8f9..b7d4570 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2018-02-16 Jason Merrill <jason@redhat.com> + PR c++/84420 - ICE with structured binding in lambda. + * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P. + PR c++/83835 - C++17 error with constructor ctors. * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P. diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index 6b5bd80..38500b1 100644 --- a/gcc/cp/lambda.c +++ b/gcc/cp/lambda.c @@ -261,6 +261,7 @@ is_capture_proxy (tree decl) return (VAR_P (decl) && DECL_HAS_VALUE_EXPR_P (decl) && !DECL_ANON_UNION_VAR_P (decl) + && !DECL_DECOMPOSITION_P (decl) && LAMBDA_FUNCTION_P (DECL_CONTEXT (decl))); } diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C b/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C new file mode 100644 index 0000000..fbab025 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C @@ -0,0 +1,10 @@ +// PR c++/84420 +// { dg-additional-options -std=c++17 } + +int main(){ + int a[1]{}; + [&a]{ + auto [v] = a; + (void)v; + }(); +} |