diff options
author | Jason Merrill <jason@redhat.com> | 2018-02-01 21:07:09 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2018-02-01 21:07:09 -0500 |
commit | fe23b12a23e357103a40fda08df33f3547f112e6 (patch) | |
tree | 1eeccbcc99f8325a3a6b6c4e7886433ffdff17e1 /gcc/cp/expr.c | |
parent | 60a57222fe2166519b54641766bccab92fa15606 (diff) | |
download | gcc-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.c | 4 |
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); |