diff options
author | Jason Merrill <jason@redhat.com> | 2015-06-16 10:48:56 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2015-06-16 10:48:56 -0400 |
commit | 63d02f058f0ba3c1d00c2a9f12cac86eeec00b66 (patch) | |
tree | aff7fc914e78f2fd2eb3926d7ea57cd8d43727b5 /gcc/cp | |
parent | ff09c88dd183154206764fb841a87856f5b2f94d (diff) | |
download | gcc-63d02f058f0ba3c1d00c2a9f12cac86eeec00b66.zip gcc-63d02f058f0ba3c1d00c2a9f12cac86eeec00b66.tar.gz gcc-63d02f058f0ba3c1d00c2a9f12cac86eeec00b66.tar.bz2 |
re PR c++/66387 (ICE in make_decl_rtl with lambda)
PR c++/66387
* pt.c (tsubst_copy) [VAR_DECL]: Use process_outer_var_ref.
From-SVN: r224521
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 15766f4..1ab5e8f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2015-06-16 Jason Merrill <jason@redhat.com> + + PR c++/66387 + * pt.c (tsubst_copy) [VAR_DECL]: Use process_outer_var_ref. + 2015-06-15 Nathan Sidwell <nathan@acm.org> PR c++/58583 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index ea8c8b6..9236311 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -13071,10 +13071,8 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl) if (TREE_STATIC (r)) rest_of_decl_compilation (r, toplevel_bindings_p (), at_eof); - else if (decl_constant_var_p (r)) - /* A use of a local constant decays to its value. - FIXME update for core DR 696. */ - r = scalar_constant_value (r); + else + r = process_outer_var_ref (r, complain); } } /* Remember this for subsequent uses. */ diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 59ec9047..a1519b9 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -3103,6 +3103,8 @@ process_outer_var_ref (tree decl, tsubst_flags_t complain) if (cp_unevaluated_operand) /* It's not a use (3.2) if we're in an unevaluated context. */ return decl; + if (decl == error_mark_node) + return decl; tree context = DECL_CONTEXT (decl); tree containing_function = current_function_decl; |