http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45923
--- Comment #12 from Jason Merrill <jason at gcc dot gnu.org> 2011-06-29 14:35:03 UTC --- Author: jason Date: Wed Jun 29 14:34:58 2011 New Revision: 175646 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=175646 Log: PR c++/45923 * class.c (explain_non_literal_class): New. (finalize_literal_type_property): Call it. * cp-tree.h: Declare it. * semantics.c (ensure_literal_type_for_constexpr_object): Call it. (is_valid_constexpr_fn): Likewise. (massage_constexpr_body): Split out from... (register_constexpr_fundef): ...here. (is_instantiation_of_constexpr): New. (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case. (explain_invalid_constexpr_fn): New. (cxx_eval_call_expression): Call it. (potential_constant_expression_1): Likewise. Avoid redundant errors. * method.c (process_subob_fn): Diagnose non-constexpr. (walk_field_subobs): Likewise. (synthesized_method_walk): Don't shortcut if we want diagnostics. (explain_implicit_non_constexpr): New. (defaulted_late_check): Use it. * call.c (build_cxx_call): Remember location. Added: trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-diag3.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c trunk/gcc/cp/class.c trunk/gcc/cp/cp-tree.h trunk/gcc/cp/method.c trunk/gcc/cp/semantics.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-friend.C trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete2.C