From c2f14a91ec59188504f4be205cb986b0726d50f2 Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 16 Feb 2018 21:02:50 +0000 Subject: PR c++/84420 - ICE with structured binding in lambda. * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257761 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/lambda.c | 1 + 1 file changed, 1 insertion(+) (limited to 'gcc/cp/lambda.c') diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index 6b5bd800741..38500b13262 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))); } -- cgit v1.2.1 From e86f32c088263317a3d74cbdf242381743a22dcd Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 20 Feb 2018 03:39:37 +0000 Subject: PR c++/84429 - ICE capturing VLA. * lambda.c (build_capture_proxy): Handle reference refs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257836 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/lambda.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gcc/cp/lambda.c') diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index 38500b13262..a0a80dfde5c 100644 --- a/gcc/cp/lambda.c +++ b/gcc/cp/lambda.c @@ -451,11 +451,12 @@ build_capture_proxy (tree member, tree init) { if (PACK_EXPANSION_P (init)) init = PACK_EXPANSION_PATTERN (init); - if (INDIRECT_REF_P (init)) - init = TREE_OPERAND (init, 0); - STRIP_NOPS (init); } + if (INDIRECT_REF_P (init)) + init = TREE_OPERAND (init, 0); + STRIP_NOPS (init); + gcc_assert (VAR_P (init) || TREE_CODE (init) == PARM_DECL); while (is_normal_capture_proxy (init)) init = DECL_CAPTURED_VARIABLE (init); -- cgit v1.2.1