]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/cp/init.cc
re PR c++/23099 (ICE in build_simple_base_path, at cp/class.c:460)
authorMark Mitchell <mark@codesourcery.com>
Mon, 29 Aug 2005 14:08:50 +0000 (14:08 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Mon, 29 Aug 2005 14:08:50 +0000 (14:08 +0000)
commitb794e321c163674e83fa0b8f7a7aa1b4359c918c
treea365e22cb324c02aefb465f5f8efd813b9e48964
parent3a6ebcdceed08428c1d47a1f30119bbab87cbd8d
re PR c++/23099 (ICE in build_simple_base_path, at cp/class.c:460)

PR c++/23099
* cp-tree.h (saved_scope): Add skip_evaluation.
* decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
DECL_INITIAL, to determine whether or not a static data member was
initialized in the class-specifier.
(cp_finish_decl): Add comment.
* init.c (integral_constant_value): Subtitute into the
initializers for static data members in templates.
* name-lookup.c (push_to_top_level): Save skip_evaluation.
(pop_from_top_level): Restore it.
* pt.c (instantiate_class_template): Do not substitute into the
intializers of static data members when instantiating a class.
(regenerate_decl_from_template): Simplify.
(instantiate_decl): Tidy.  Substitute into the initializer for a
static data member even when the definition of the data member is
not available.

PR c++/23099
* g++.dg/init/member1.C: Make sure erroneous static data member
definitions are required.
* g++.dg/template/static13.C: New test.
* g++.dg/template/static14.C: Likewise.

From-SVN: r103604
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/init.c
gcc/cp/name-lookup.c
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/init/member1.C
gcc/testsuite/g++.dg/template/static13.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/static14.C [new file with mode: 0644]