PR c++/18001
commitab6bb71403e003cd006220ed24f340436fc58b4e
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 25 Nov 2004 17:11:37 +0000 (25 17:11 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 25 Nov 2004 17:11:37 +0000 (25 17:11 +0000)
tree1f43cc1480d6fed656039fd8b9ad792166e521e4
parent352baa70189c521d2c52b11845fc93cd4ed15b36
PR c++/18001
* c-common.h (lvalue_use): Move here from c-ctypeck.c.
(lvalue_or_else): Declare.
* c-common.c (lvalue_or_else): Move here from c-typeck.c.
* c-typeck.c (lvalue_use): Remove.
(lvalue_or_else): Remove.

PR c++/18556
* toplev.c (check_global_declarations): Set DECL_IGNORED_P on
unemitted variables with static storage duration.

PR c++/18445
* class.c (instantiate_type): Treat NON_DEPENDENT_EXPRs with
unknown_type as non matching.  Tidy up.
* pt.c (build_non_dependent_expr): Do not build a
NON_DEPENDENT_EXPR for a VAR_DECL.

PR c++/18001
* cp-tree.h (lvalue_or_else): Remove declaration.
* tree.c (lvalue_or_else): Remove.
* typeck.c (build_unary_op): Adjust call to lvalue_or_else.
(build_modify_expr): Likewise.

PR c++/18625
* decl.c (duplicate_decls): Return error_mark_node on error, as
specified.

PR c++/18466
* decl.c (grokvardecl): Keep track of whether or not a there was
explicit qualification.
* name-lookup.c (set_decl_namespace): Complain about explicit
qualification of a name within its own namespace.

PR c++/18545
* typeck.c (check_return_expr): Robustify.

PR c++/18445
* g++.dg/template/crash28.C: Likewise.

PR c++/18001
* g++.dg/expr/unary2.C: Adjust lvalue messages.
* g++.dg/ext/lvaddr.C: Likewise.
* g++.dg/opt/pr7503-3.C: Likewise.

PR c++/18466
* g++.dg/parse/qualified3.C: New test.
* g++.old-deja/g++.other/friend7.C: Remove bogus qualification.

PR c++/18545
* g++.dg/expr/return1.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91301 138bc75d-0d04-0410-961f-82ee72b054a4
21 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-common.h
gcc/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/name-lookup.c
gcc/cp/pt.c
gcc/cp/tree.c
gcc/cp/typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/expr/return1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/expr/unary2.C
gcc/testsuite/g++.dg/ext/lvaddr.C
gcc/testsuite/g++.dg/opt/pr7503-3.C
gcc/testsuite/g++.dg/parse/qualified3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/crash28.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/friend7.C
gcc/toplev.c