mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 15:11:15 +08:00
re PR c++/41131 (non-lvalue in unary `&' wrongly accepted)
PR c++/41131 * tree.c (lvalue_p_1) <case CONST_DECL>: Return clk_none if not TREE_STATIC. * g++.dg/expr/unary3.C: New test. From-SVN: r150985
This commit is contained in:
parent
7450a081db
commit
4b8c1a924a
@ -1,3 +1,9 @@
|
||||
2009-08-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/41131
|
||||
* tree.c (lvalue_p_1) <case CONST_DECL>: Return clk_none if
|
||||
not TREE_STATIC.
|
||||
|
||||
2009-08-19 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/41119
|
||||
|
@ -132,6 +132,12 @@ lvalue_p_1 (const_tree ref)
|
||||
return clk_ordinary;
|
||||
|
||||
case CONST_DECL:
|
||||
/* CONST_DECL without TREE_STATIC are enumeration values and
|
||||
thus not lvalues. With TREE_STATIC they are used by ObjC++
|
||||
in objc_build_string_object and need to be considered as
|
||||
lvalues. */
|
||||
if (! TREE_STATIC (ref))
|
||||
return clk_none;
|
||||
case VAR_DECL:
|
||||
if (TREE_READONLY (ref) && ! TREE_STATIC (ref)
|
||||
&& DECL_LANG_SPECIFIC (ref)
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-08-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/41131
|
||||
* g++.dg/expr/unary3.C: New test.
|
||||
|
||||
2009-08-21 Kaz Kojima <kkojima@gcc.gnu.org>
|
||||
|
||||
* gfortran.dg/common_5.f: Add -mdalign for sh.
|
||||
|
11
gcc/testsuite/g++.dg/expr/unary3.C
Normal file
11
gcc/testsuite/g++.dg/expr/unary3.C
Normal file
@ -0,0 +1,11 @@
|
||||
// PR c++/41131
|
||||
// { dg-do compile }
|
||||
|
||||
struct X { enum E { a = 100 }; };
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
X x;
|
||||
(void) &x.a; // { dg-error "lvalue required" }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user