OSDN Git Service

PR c++/48948
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 May 2011 21:30:18 +0000 (21:30 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 May 2011 21:30:18 +0000 (21:30 +0000)
commit1330e43958fb69797e839f46b918f4d5a36a10b3
tree4fd40e140cf8b453b9b67a51b9e7b85ac05df507
parent88d773ec475960dbb2b381c941dce0342981287f
PR c++/48948
* semantics.c (validate_constexpr_fundecl): Defer checking if
an argument type is being defined.
(is_valid_constexpr_fn): Add defer_ok parm.
(cxx_eval_call_expression): Adjust.
(check_deferred_constexpr_decls): New.
(literal_type_p): Make sure type isn't being defined.
(ensure_literal_type_for_constexpr_object): Handle type being defined.
* cp-tree.h: Declare check_deferred_constexpr_decls.
* decl.c (grokfndecl): Call validate_constexpr_fundecl here.
(start_preparsed_function, cp_finish_decl): Not here.
* class.c (finalize_literal_type_property): Don't call
validate_constexpr_fundecl.
(finish_struct): Call check_deferred_constexpr_decls.
* pt.c (tsubst_decl): Call validate_constexpr_fundecl.
(instantiate_class_template): Call check_deferred_constexpr_decls.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173683 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/pt.c
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/constexpr-friend.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete1.C [new file with mode: 0644]