diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-12-03 16:56:37 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-12-03 16:56:37 +0000 |
commit | 989a479c72f9e821f8e83495158af3eb2c7b8800 (patch) | |
tree | f17f7173335da4fe762e344bfc510bf7e3d9d2a0 | |
parent | 30015fe99e2901a272956e5d926256f089dc440a (diff) | |
download | gcc-989a479c72f9e821f8e83495158af3eb2c7b8800.tar.gz |
PR c++/46058
* tree.c (lvalue_kind) [SCOPE_REF]: Handle non-dependent case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167435 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/tree.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/scope4.C | 15 |
4 files changed, 30 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c24204e5012..edb50b5d7b5 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2010-12-03 Jason Merrill <jason@redhat.com> + + PR c++/46058 + * tree.c (lvalue_kind) [SCOPE_REF]: Handle non-dependent case. + 2010-12-03 Richard Guenther <rguenther@suse.de> PR c/46745 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 5538eea2e86..1a77dc18f32 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. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c75ed75e177..e70cf6a3d2d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-03 Jason Merrill <jason@redhat.com> + + PR c++/46058 + * g++.dg/template/scope4.C: New. + 2010-12-03 Nathan Froyd <froydnj@codesourcery.com> * gcc.target/arm/neon-offset-1.c: New test. diff --git a/gcc/testsuite/g++.dg/template/scope4.C b/gcc/testsuite/g++.dg/template/scope4.C new file mode 100644 index 00000000000..a4ae074c0df --- /dev/null +++ b/gcc/testsuite/g++.dg/template/scope4.C @@ -0,0 +1,15 @@ +// PR c++/46058 + +class StringLiterals { +public: + static const char dec[]; +}; + +template<class St, class Base, const char* name> +class NoValueCommand : public Base { +public: +}; + +template<class St, class Base> +class DecBasic : public NoValueCommand<St,Base,StringLiterals::dec> { +}; |