diff options
author | Jason Merrill <jason@redhat.com> | 2015-06-09 11:27:01 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2015-06-09 11:27:01 -0400 |
commit | 5af874fb6518ed3e21c1e0f750fac86788fdafa3 (patch) | |
tree | 9daa2e07f2106d90a2a2ea5325b24c470fbb6ef0 /gcc/cp/semantics.c | |
parent | ebcf592c841f47aa38ce0a9d95b4f04af975b0ac (diff) | |
download | gcc-5af874fb6518ed3e21c1e0f750fac86788fdafa3.zip gcc-5af874fb6518ed3e21c1e0f750fac86788fdafa3.tar.gz gcc-5af874fb6518ed3e21c1e0f750fac86788fdafa3.tar.bz2 |
re PR c++/66387 (ICE in make_decl_rtl with lambda)
PR c++/66387
* semantics.c (process_outer_var_ref): Make sure the value is
actually constant before returning it.
* typeck.c (cp_build_array_ref): Allow subscripting non-lvalue
array.
From-SVN: r224287
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r-- | gcc/cp/semantics.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 650ef4c..59ec9047 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -3128,7 +3128,11 @@ process_outer_var_ref (tree decl, tsubst_flags_t complain) form, so wait until instantiation time. */ return decl; else if (decl_constant_var_p (decl)) - return scalar_constant_value (decl); + { + tree t = maybe_constant_value (convert_from_reference (decl)); + if (TREE_CONSTANT (t)) + return t; + } } if (parsing_nsdmi ()) |