aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/expr.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2018-02-01 21:07:09 -0500
committerJason Merrill <jason@gcc.gnu.org>2018-02-01 21:07:09 -0500
commitfe23b12a23e357103a40fda08df33f3547f112e6 (patch)
tree1eeccbcc99f8325a3a6b6c4e7886433ffdff17e1 /gcc/cp/expr.c
parent60a57222fe2166519b54641766bccab92fa15606 (diff)
downloadgcc-fe23b12a23e357103a40fda08df33f3547f112e6.zip
gcc-fe23b12a23e357103a40fda08df33f3547f112e6.tar.gz
gcc-fe23b12a23e357103a40fda08df33f3547f112e6.tar.bz2
PR c++/84160 - ICE with nested variadic capture.
* lambda.c (is_capture_proxy_with_ref): New. (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a COMPONENT_REF. * expr.c (mark_use): Use is_capture_proxy_with_ref. * constexpr.c (potential_constant_expression_1): Likewise. * semantics.c (process_outer_var_ref): Likewise. From-SVN: r257325
Diffstat (limited to 'gcc/cp/expr.c')
-rw-r--r--gcc/cp/expr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c
index 2e67986..b2c8cfa 100644
--- a/gcc/cp/expr.c
+++ b/gcc/cp/expr.c
@@ -111,7 +111,7 @@ mark_use (tree expr, bool rvalue_p, bool read_p,
{
case VAR_DECL:
case PARM_DECL:
- if (rvalue_p && is_normal_capture_proxy (expr))
+ if (rvalue_p && is_capture_proxy_with_ref (expr))
{
/* Look through capture by copy. */
tree cap = DECL_CAPTURED_VARIABLE (expr);
@@ -154,7 +154,7 @@ mark_use (tree expr, bool rvalue_p, bool read_p,
{
/* Try to look through the reference. */
tree ref = TREE_OPERAND (expr, 0);
- if (rvalue_p && is_normal_capture_proxy (ref))
+ if (rvalue_p && is_capture_proxy_with_ref (ref))
{
/* Look through capture by reference. */
tree cap = DECL_CAPTURED_VARIABLE (ref);