aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/tree.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-12-03 11:56:37 -0500
committerJason Merrill <jason@gcc.gnu.org>2010-12-03 11:56:37 -0500
commit3ee353e956beac249a08337099ec885ae28bba04 (patch)
treef17f7173335da4fe762e344bfc510bf7e3d9d2a0 /gcc/cp/tree.c
parentfac680656629b130c140c11dca1272d0dbd6dd43 (diff)
downloadgcc-3ee353e956beac249a08337099ec885ae28bba04.zip
gcc-3ee353e956beac249a08337099ec885ae28bba04.tar.gz
gcc-3ee353e956beac249a08337099ec885ae28bba04.tar.bz2
re PR c++/46058 (gcc crashes with lvalue error on the following Code)
PR c++/46058 * tree.c (lvalue_kind) [SCOPE_REF]: Handle non-dependent case. From-SVN: r167435
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r--gcc/cp/tree.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 5538eea..1a77dc1 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -146,9 +146,12 @@ lvalue_kind (const_tree ref)
return clk_ordinary;
break;
- /* A currently unresolved scope ref. */
+ /* A scope ref in a template, left as SCOPE_REF to support later
+ access checking. */
case SCOPE_REF:
- gcc_unreachable ();
+ gcc_assert (!type_dependent_expression_p (CONST_CAST_TREE(ref)));
+ return lvalue_kind (TREE_OPERAND (ref, 1));
+
case MAX_EXPR:
case MIN_EXPR:
/* Disallow <? and >? as lvalues if either argument side-effects. */