aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2015-06-16 10:48:56 -0400
committerJason Merrill <jason@gcc.gnu.org>2015-06-16 10:48:56 -0400
commit63d02f058f0ba3c1d00c2a9f12cac86eeec00b66 (patch)
treeaff7fc914e78f2fd2eb3926d7ea57cd8d43727b5 /gcc/cp
parentff09c88dd183154206764fb841a87856f5b2f94d (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/pt.c6
-rw-r--r--gcc/cp/semantics.c2
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;