+2011-05-11 Jason Merrill <jason@redhat.com>
+
+ * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
+ rather than DECL_TEMPLATE_INSTANTIATION.
+ (cxx_eval_call_expression): Likewise.
+
+ * semantics.c (register_constexpr_fundef): Add to hash table here.
+ (validate_constexpr_fundecl): Not here.
+
+ * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
+
+ * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
+ do call maybe_constant_value in C++0x mode.
+ * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
+
+ PR c++/48745
+ * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
+
+2011-05-11 Nathan Froyd <froydnj@codesourcery.com>
+
+ * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
+ TYPE_VALUES_RAW.
+ (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
+ (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
+ (TEMPLATE_TYPE_PARM_INDEX): Likewise.
+
+2011-05-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/48930
+ * class.c (type_build_ctor_call): New.
+ * cp-tree.h: Declare it.
+ * decl.c (check_initializer): Use it instead of
+ TYPE_NEEDS_CONSTRUCTING.
+ * init.c (build_value_init, build_value_init_noctor): Likewise.
+ (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
+ (build_vec_init): Likewise.
+ * typeck2.c (process_init_constructor_array): Likewise.
+ (process_init_constructor_record): Likewise.
+
+ PR c++/48736
+ * pt.c (tsubst_copy_and_build): Handle substitution of a pack
+ expansion producing another expansion.
+
+2011-05-10 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Fixes for override/final.
+ * class.c (check_for_override): Diagnose final on a nonvirtual
+ member function, diagnose override for a virtual with no matching
+ override. Don't fiddle around with DECL_VINDEX.
+
+2011-05-10 Nathan Froyd <froydnj@codesourcery.com>
+
+ * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
+ * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
+ * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
+ operand of EXPR_PACK_EXPANSION.
+ (cp_tree_operand_length): Declare.
+ * tree.c (cp_tree_operand_length): Define.
+ (cp_tree_equal): Call it.
+ * pt.c (value_dependent_expr_P): Likewise.
+ * mangle.c (write_expression): Likewise.
+
+2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48737
+ PR c++/48744
+ * decl.c (reshape_init): Take a complain parameter and do
+ not call error if tf_error is not set.
+ (check_initializer, reshape_init_r, reshape_init_array,
+ reshape_init_array_1, reshape_init_vector, reshape_init_class):
+ Adjust.
+ * typeck2.c (digest_init_r): Take a complain parameter and
+ pass it to convert_for_initialization.
+ (digest_init, digest_init_flags, process_init_constructor_array,
+ process_init_constructor_record, process_init_constructor_union,
+ process_init_constructor, digest_init_r): Adjust.
+ * init.c (expand_default_init, build_new_1): Likewise.
+ * typeck.c (cp_build_modify_expr): Likewise.
+ * decl2.c (grokfield): Likewise.
+ * call.c (convert_like_real, convert_default_arg): Likewise.
+ * semantics.c (finish_compound_literal): Pass complain to
+ reshape_init and digest_init.
+ * cp-tree.h: Adjust declarations.
+
+2011-05-07 Fabien ChĂȘne <fabien@gcc.gnu.org>
+
+ PR c++/48859
+ * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
+ recursion if there is user defined constructor.
+
+2011-05-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/34772
+ * decl.c (initialize_local_var): Use DECL_INITIAL for simple
+ initialization.
+
+2011-05-08 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Implement final/override for member functions.
+ * class.c (check_for_override): Check for DECL_OVERRIDE_P.
+ * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
+ (cp_virt_specifiers, enum virt_specifier): New.
+ * decl.c (set_virt_specifiers): New.
+ (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
+ * parser.c (make_call_declarator): add virt-specifiers parameter.
+ (cp_parser_lambda_declarator_opt): Adjust.
+ (cp_parser_direct_declarator): Likewise.
+ (cp_parser_virt_specifier_seq_opt): New.
+ * search.c (check_final_overrider): Diagnose attempts to override
+ a final member function.
+
+2011-05-09 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48574
+ * class.c (fixed_type_or_null): Use type_dependent_p_push to test
+ if the instance has a dependent initializer.
+
+2011-05-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48816
+ * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
+ effectively unused variable.
+
+2011-05-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * name-lookup.h (global_bindings_p): Adjust prototype.
+ * name-lookup.c (global_bindings_p): Return bool.
+
+2011-05-06 Jason Merrill <jason@redhat.com>
+
+ * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
+ appropriate.
+
+ PR c++/48909
+ * semantics.c (cxx_eval_conditional_expression): Check
+ integer_zerop instead.
+ (potential_constant_expression_1): Likewise.
+
+ PR c++/48911
+ * semantics.c (cxx_eval_array_reference): Handle implicit
+ initializers.
+
+2011-05-06 Nathan Froyd <froydnj@codesourcery.com>
+
+ * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
+ * call.c (standard_conversion): Call class_of_this_parm.
+ * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
+ (pp_cxx_direct_abstract_declarator): Likewise.
+ * decl2.c (change_return_type): Likewise.
+ (cp_reconstruct_complex_type): Likewise.
+ * error.c (dump_type_suffix, dump_function_decl): Likewise.
+ * mangle.c (write_function_type): Likewise.
+ * pt.c (unify): Likewise.
+ * typeck.c (merge_types, type_memfn_quals): Likewise.
+ * decl.c (build_this_parm): Call type_of_this_parm.
+
+2011-05-06 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48838
+ * cp-tree.h (non_static_member_function_p): Declare new function.
+ * tree.c (non_static_member_function_p): Define it.
+ * semantics.c (finish_call_expr): Use it.
+
+2011-05-05 Nathan Froyd <froydnj@codesourcery.com>
+
+ * decl.c (finish_case_label): Omit the loc argument to
+ build_case_label.
+
+2011-05-05 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (REFERENCE_REF_P): Just check the type.
+ * cvt.c (convert_from_reference): Adjust.
+ * pt.c (build_non_dependent_expr): Adjust.
+ * semantics.c (finish_offsetof): Adjust.
+ * tree.c (lvalue_kind): Use it.
+
+ PR c++/48873
+ * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
+
+2011-05-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * decl.c (start_preparsed_function): Do not set
+ dont_save_pending_sizes_p.
+
+2011-05-05 Joseph Myers <joseph@codesourcery.com>
+
+ * parser.c (cp_parser_objc_method_definition_list): Update call to
+ objc_start_method_definition.
+
+2011-05-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/48749
+ * class.c (resolves_to_fixed_type_p): Don't look closely
+ in templates.
+
+2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/28501
+ * call.c (add_builtin_candidate): Handle REALPART_EXPR and
+ IMAGPART_EXPR.
+
+2011-05-02 Lawrence Crowl <crowl@google.com>
+
+ * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
+ (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
+ Change TV_NAME_LOOKUP to start/stop.
+ (define_label): Refactor timevar calls out to a wrapper function.
+ Change TV_NAME_LOOKUP to start/stop.
+ (xref_tag): Likewise.
+ (lookup_label): Refactor timevar calls out to a wrapper function.
+ Change TV_NAME_LOOKUP to start_cond/stop_cond.
+
+ * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
+ TV_TEMPLATE_INST.
+ (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
+ (lookup_template_class): Refactor timevar calls out to a wrapper
+ function. Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
+ (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
+
+ * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
+ (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
+ (push_namespace): Likewise.
+ (pop_nested_namespace): Likewise.
+ (pushdecl_namespace_level): Likewise.
+ (store_class_bindings): Likewise.
+ (push_to_top_level): Likewise.
+ (identifier_type_value): Refactor timevar calls out to a wrapper
+ function. Change TV_NAME_LOOKUP to start/stop.
+ (find_binding): Likewise.
+ (push_using_decl): Likewise.
+ (lookup_arg_dependent): Likewise.
+ (push_using_directive): Likewise.
+ (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
+ to plain code. Change TV_NAME_LOOKUP to start/stop.
+ (lookup_type_current_level): Likewise. Refactor inner return to
+ break.
+ (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
+ code. Change TV_NAME_LOOKUP to start_cond/stop_cond.
+ (pushdecl_top_level_1): Likewise.
+ (lookup_using_namespace): Likewise.
+ (pushdecl_with_scope): Refactor timevar calls out to a wrapper
+ function. Change TV_NAME_LOOKUP to start_cond/stop_cond.
+ (push_overloaded_decl): Likewise.
+ (push_class_level_binding): Likewise.
+ (namespace_binding): Likewise.
+ (set_namespace_binding): Likewise.
+ (supplement_binding): Likewise.
+ (unqualified_namespace_lookup): Likewise.
+ (lookup_name_real): Likewise.
+ (lookup_type_scope): Likewise.
+ (namespace_ancestor): Likewise.
+ (lookup_name_innermost_nonclass_level): Likewise.
+ (pushtag): Likewise.
+ (pop_from_top_level): Likewise.
+ (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
+ function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Wrap long
+ lines.
+ (add_using_namespace): Refactor timevar calls out to a wrapper
+ function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Bypass
+ wrapper on call to self.
+
+ * decl2.c: (cp_write_global_declarations): Add start/stop of
+ new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
+ Remove push/pop calls to TV_VARCONST.
+
+ * parser.c: Add include of "timevar.h".
+ (cp_parser_explicit_instantiation): Add push/pop calls to
+ TV_TEMPLATE_INST.
+ (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
+ (cp_parser_class_specifier): Add wrapper to add push/pop calls to
+ TV_PARSE_STRUCT.
+ (cp_parser_function_definition_from_specifiers_and_declarator): Add
+ push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
+ (cp_parser_late_parsing_for_member): Add push/pop calls to
+ new TV_PARSE_INMETH.
+
+ * call.c: Add include of "timevar.h".
+ (convert_class_to_reference): Wrap and add push/pop calls to
+ TV_OVERLOAD.
+ (build_op_call): Likewise.
+ (build_conditional_expr): Likewise.
+ (build_new_op): Likewise.
+ (build_new_method_call): Likewise.
+ (build_user_type_conversion): Reorganize to single return and add
+ push/pop calls to TV_OVERLOAD.
+ (perform_overload_resolution): Likewise.
+
+ * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
+
+2011-05-02 Jason Merrill <jason@redhat.com>
+
+ * tree.c (build_vec_init_expr): Take complain parm.
+ (build_vec_init_elt): Likewise. Free arg vector.
+ (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
+ * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
+ (VEC_INIT_EXPR_INIT): Likewise.
+ Adjust build_vec_init_expr declaration.
+ * init.c (perform_member_init): Adjust.
+
+ Revert:
+ PR c++/40975
+ * cp-tree.def (VEC_INIT_EXPR): Add third operand.
+ * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
+ * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
+ * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
+ (build_vec_init_elt): Don't expect an array type.
+ (build_array_copy): Adjust.
+ * init.c (perform_member_init): Adjust.
+ (build_new_1): Use build_vec_init_expr.
+
+ PR c++/48834
+ * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
+ Protect an explicit target.
+
+ PR c++/48446
+ * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
+ (compute_array_index_type): Revert earlier 48446 changes.
+ (grokdeclarator): Use stabilize_vla_size.
+
+2011-05-02 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
+ instead of inappropriate zero values.
+
+2011-05-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/47969
+ * decl.c (compute_array_index_type): Check build_expr_type_conversion
+ return value for NULL_TREE.
+
+2011-04-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48606
+ * init.c (perform_member_init): Check build_value_init return
+ value for error_mark_node.
+
+2011-04-29 Diego Novillo <dnovillo@google.com>
+ Le-Chun Wu <lcwu@google.com>
+
+ * call.c (conversion_null_warnings): Also handle assignments
+ when warning about NULL conversions.
+
+2011-04-29 Le-Chun Wu <lcwu@google.com>
+
+ * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
+ * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
+ (build_over_call): Use it to determine whether to emit a NULL
+ warning for template function instantiations.
+ (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
+ EXPLICIT_TARGS is set.
+
+2011-04-29 Nicola Pero <nicola.pero@meta-innovation.com>,
+ Mike Stump <mikestump@comcast.net>
+
+ * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
+ in maintainer mode. Use the --output-file option of gperf instead
+ of > to prevent creating an empty cp/cfns.h when gperf is not
+ available.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48798
+ * semantics.c (finish_base_specifier): cv-qualified base class
+ is fine, per DR 484.
+
+2011-04-28 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48656
+ * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
+ considering call expressions involving a member function.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48530
+ * tree.c (build_cplus_new): Check build_target_expr return
+ value for error_mark_node.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48771
+ * semantics.c (literal_type_p): Reference types are literal types,
+ per the FDIS.
+ (valid_type_in_constexpr_fundecl_p): Remove.
+ (is_valid_constexpr_fn): Adjust.
+
+2011-04-27 Jason Merrill <jason@redhat.com>
+
+ PR libstdc++/48760
+ Implement list-initialization of _Complex.
+ * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
+ (check_initializer): Likewise.
+ * call.c (build_complex_conv): New.
+ (implicit_conversion): Call it.
+ (convert_like_real): Handle it.
+ * typeck2.c (check_narrowing): Handle it.
+
+ * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
+ decide whether to delete.
+ (build_vec_init): Pass sfk_complete_destructor.
+
+ PR c++/40975
+ * cp-tree.def (VEC_INIT_EXPR): Add third operand.
+ * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
+ * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
+ * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
+ (build_vec_init_elt): Don't expect an array type.
+ (build_array_copy): Adjust.
+ * init.c (perform_member_init): Adjust.
+ (build_new_1): Use build_vec_init_expr.
+
+ * class.c (resolve_address_of_overloaded_function): Don't
+ change OVERLOAD to TREE_LIST.
+ * pt.c (print_candidates_1): Remove nonsensical assert.
+
+ PR c++/48046
+ * parser.c (cp_parser_diagnose_invalid_type_name): Commit
+ to tentative parse sooner.
+
+2011-04-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/42687
+ * parser.c (cp_parser_primary_expression): Set *idk to
+ CP_ID_KIND_NONE for a parenthesized identifier.
+
+ * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
+ (cxx_print_identifier): Correct indentation.
+
+ PR c++/48530
+ * decl.c (cxx_maybe_build_cleanup): Add complain parm.
+ * tree.c (force_target_expr): Add complain parm.
+ (build_target_expr_with_type): Likewise.
+ (get_target_expr_sfinae): Split out.
+ (build_vec_init_expr, bot_manip): Adjust.
+ * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
+ (build_delete, build_dtor_call): Likewise.
+ (perform_direct_initialization_if_possible): Adjust.
+ (build_vec_init): Handle error return.
+ * cvt.c (force_rvalue): Add complain parm.
+ Call build_special_member_call directly.
+ * decl2.c (delete_sanity): Add complain parm.
+ (build_cleanup): Adjust.
+ * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
+ * semantics.c (finish_stmt_expr_expr): Adjust.
+ (finish_compound_literal): Adjust.
+ * parser.c (cp_parser_delete_expression): Adjust.
+ * typeck2.c (build_functional_cast): Adjust.
+ * cp-tree.h: Adjust.
+
+2011-04-26 Martin Jambor <mjambor@suse.cz>
+
+ * class.c (cp_fold_obj_type_ref): Remove.
+ * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
+
+2011-04-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
+ * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
+ (UNDERLYING_TYPE_TYPE): Add.
+ * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
+ as TS_COMMON.
+ * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
+ cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
+ (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
+ * semantics.c (finish_underlying_type): New.
+ * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
+ * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
+ * cxx-pretty-print.c (p_cxx_type_id): Likewise.
+ * tree.c (cp_walk_subtrees): Likewise.
+ * pt.c (for_each_template_parm_r, tsubst, unify,
+ dependent_type_p_r): Likewise.
+ * mangle.c (write_type): Sorry for __underlying_type.
+
+2011-04-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/48707
+ * decl.c (type_dependent_init_p): New.
+ (cp_finish_decl): Check it.
+ * pt.c (any_type_dependent_elements_p): New.
+ * cp-tree.h: Declare it.
+
+2011-04-20 Jason Merrill <jason@redhat.com>
+
+ * semantics.c (finish_compound_literal): Don't put an array
+ with a dtor in a static variable.
+
+ * call.c (build_over_call): Handle trivial dtor.
+
+ * search.c (lookup_fnfields_slot): Call complete_type.
+
+ PR c++/48594
+ * decl2.c (build_offset_ref_call_from_tree): Move
+ non-dependency of object outside condition.
+
+ PR c++/48657
+ * decl.c (cp_finish_decl): Simplify template handling.
+
+2011-04-20 Jim Meyering <meyering@redhat.com>
+
+ * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
+
+2011-04-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/46304
+ * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
+
+ PR c++/45267
+ * decl.c (duplicate_decls): Keep always_inline attribute
+ in sync with DECL_DISREGARD_INLINE_LIMITS.
+
+2011-04-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/48569
+ * typeck2.c (build_functional_cast): Handle VOID_TYPE.
+
+ PR c++/48537
+ * init.c (build_value_init): Handle UNION_TYPE the same.
+
+2011-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/48632
+ * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
+ for type dependent pointers.
+
+2011-04-18 Jim Meyering <meyering@redhat.com>
+
+ * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
+
+2011-04-17 Jan Hubicka <jh@suse.cz>
+
+ * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
+ gotos.
+
+2011-04-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/48531
+ * typeck2.c (build_functional_cast): Disallow array type.
+
+ * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
+
+2011-04-17 Jan Hubicka <jh@suse.cz>
+
+ * class.c (cp_fold_obj_type_ref): Drop vtable_method.
+
+2011-04-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+ Implement N3271
+ * parser.c (cp_convert_range_for): Split into
+ cp_parser_perform_range_for_lookup.
+ (cp_parser_perform_range_for_lookup): New.
+ (cp_parser_range_for_member_function): New.
+ (cp_parser_for_init_statement): Correct error message.
+ * semantics.c (finish_call_expr): Accept COMPONENT_REF.
+
+2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * parser.c (cp_parser_objc_protocol_declaration): Updated for
+ change from objc_declare_protocols() to objc_declare_protocol().
+
+2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR objc++/48479
+ * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
+ and return immediately.
+
+2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
+
+ * cp-tree.def (SWITCH_STMT): Add an extra operand.
+ * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
+ * cp-tree.h (SWITCH_STMT_SCOPE): Define.
+ * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
+ (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
+
+2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
+
+ * cp-tree.def (IF_STMT): Add an extra operand.
+ * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
+ * cp-tree.h (IF_SCOPE): Define.
+ * semantics.c (begin_if_stmt): Pass scope to build_stmt.
+ (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
+
+2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
+
+ * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
+ * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
+ * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
+ * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
+ Use FOR_SCOPE instead of TREE_CHAIN.
+ (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
+ (finish_for_stmt): Likewise.
+
+2011-04-14 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_postfix_expression): Fix flags passed to
+ build_new_method_call.
+ * semantics.c (finish_call_expr): Likewise.
+
+ PR c++/48531
+ * init.c (build_value_init_noctor): Check complain consistently.
+
+ PR c++/48557
+ * typeck.c (cp_build_binary_op): Don't decay void operands.
+
+ PR c++/48446
+ * decl.c (compute_array_index_type): Use get_temp_regvar instead
+ of variable_size.
+ * init.c (get_temp_regvar): No longer static.
+ * cp-tree.h: Declare it.
+
+2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * parser.c (cp_parser_objc_class_declaration): Updated for change
+ in objc_declare_class().
+
+2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
+
+ * decl.c (poplevel): Use block_chainon.
+
+2011-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/48594
+ * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
+ or pointer to (non-member) function.
+
+2011-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/48570
+ * semantics.c (cxx_eval_array_reference): Handle reading from
+ wchar_t, char16_t and char32_t STRING_CST.
+
+2011-04-13 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48574
+ * class.c (fixed_type_or_null): We cannot determine the dynamic
+ type of a reference variable if its initializer is dependent.
+
+2011-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/48581
+ * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
+ unqualified lookup failing if we're still in a template.
+
+2011-04-12 Nathan Froyd <froydnj@codesourcery.com>
+
+ * cp-lang.c (cp_init_ts): Call cp_common_init_ts. Move
+ tree_contains_struct initialization to...
+ * cp-objcp-common.c (cp_common_init_ts): ...here. Use MARK_*
+ macros.
+ * cp-objcp-common.h (cp_common_init_ts): Declare.
+ * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
+ calling TREE_CHAIN.
+
+2011-04-12 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * parser.c (cp_parser_objc_message_expression): Updated call
+ to objc_build_message_expr.
+
+2011-04-12 Martin Jambor <mjambor@suse.cz>
+
+ * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
+ cgraph_get_create_node.
+ * decl2.c (cp_write_global_declarations): Call cgraph_get_node
+ instead of cgraph_get_create_node.
+ * method.c (make_alias_for_thunk): Call cgraph_get_node
+ instead of cgraph_get_create_node, assert it returns non-NULL.
+ (use_thunk): Likewise.
+ * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
+ when flag_syntax_only is not set. Call cgraph_get_node instead of
+ cgraph_get_create_node.
+ (maybe_clone_body): Call cgraph_get_node instead of
+ cgraph_get_create_node.
+
+2011-04-12 Martin Jambor <mjambor@suse.cz>
+
+ * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
+ instead of cgraph_node.
+ * decl2.c (cxx_callgraph_analyze_expr): Likewise.
+ (cp_write_global_declarations): Likewise.
+ * optimize.c (maybe_clone_body): Likewise.
+ * semantics.c (maybe_add_lambda_conv_op): Likewise.
+ * mangle.c (mangle_decl): Likewise.
+ * method.c (make_alias_for_thunk): Likewise.
+ (use_thunk): Likewise.
+
+2011-04-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/48535
+ * decl.c (cp_complete_array_type_or_error): New.
+ * semantics.c (finish_compound_literal): Use it.
+ * cp-tree.h: Declare it.
+
+ PR c++/48535
+ * semantics.c (finish_compound_literal): Handle references.
+
+ PR c++/48535
+ * semantics.c (finish_compound_literal): Take complain parm.
+ (build_lambda_object): Adjust.
+ * cp-tree.h: Adjust.
+ * call.c (convert_like_real): Adjust.
+ * decl.c (check_initializer): Adjust.
+ * parser.c (cp_parser_postfix_expression): Adjust.
+ (cp_parser_functional_cast): Adjust.
+ * pt.c (tsubst_copy_and_build): Adjust.
+ * typeck2.c (process_init_constructor_record): Adjust.
+
+ PR c++/48534
+ * cvt.c (ocp_convert): Use build_nop to convert to underlying type
+ of scoped enum.
+
+ PR c++/48523
+ * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
+ than cp_build_indirect_ref.
+
+ PR c++/48457, Core 1238
+ * call.c (reference_binding): Allow rvalue reference to bind to
+ function lvalue.
+ * tree.c (lvalue_kind): Functions are always lvalues.
+
+2011-04-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/48500
+ * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
+ arguments even if we don't know the function.
+
+ PR c++/48481
+ * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
+ at the end of the chain.
+ * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
+ (iterative_hash_template_arg): Likewise.
+
+ PR c++/48481
+ * cp-tree.h (OVL_ARG_DEPENDENT): New.
+ * name-lookup.c (add_function): Set it.
+ * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
+
+ PR c++/48481
+ * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
+ Release unused vector.
+
+ PR c++/48451
+ * pt.c (fn_type_unification): Don't clear incomplete pack flag.
+ (type_unification_real): Clear it here instead.
+
+ PR c++/48468
+ * except.c (build_noexcept_spec): Propagate error_mark_node.
+ (finish_noexcept_expr): Likewise.
+
+ PR c++/48452
+ * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
+ in SFINAE context.
+
+ PR c++/48450
+ * call.c (resolve_args): Take complain.
+ (build_new_function_call, build_operator_new_call): Pass it.
+ (build_op_call, build_new_op, build_new_method_call): Pass it.
+
+ PR c++/48450
+ * typeck.c (check_for_casting_away_constness): Take complain.
+ (build_static_cast_1, build_reinterpret_cast_1): Pass it.
+ (build_const_cast_1): Pass it. Take full complain parm.
+ (build_const_cast, cp_build_c_cast): Adjust.
+
+ * tree.c (build_aggr_init_expr): Always return error_mark_node
+ on abstract violation.
+
+ PR c++/48450
+ * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
+ (bot_manip): Adjust.
+ * cp-tree.h: Adjust.
+ * call.c (convert_like_real, build_cxx_call): Adjust.
+ (perform_direct_initialization_if_possible): Adjust.
+ * cvt.c (ocp_convert): Adjust.
+ * init.c (build_value_init): Adjust.
+ * semantics.c (maybe_add_lambda_conv_op): Adjust.
+ * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
+ * typeck2.c (build_functional_cast): Adjust.
+
+ * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
+ level.
+ (perform_member_init): Not here.
+ * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
+ case to templates.
+ (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
+
+ PR c++/48449
+ * typeck2.c (build_functional_cast): Check complain consistently.
+ Use build_value_init and abstract_virtuals_error_sfinae.
+ (abstract_virtuals_error_sfinae): Split out.
+ * cp-tree.h: Declare it.
+ * init.c (build_new_1): Use it.
+ (build_value_init_noctor): Handle FUNCTION_TYPE.
+
+ * semantics.c (finish_decltype_type): Simplify handling of unknown
+ type.
+
+ * semantics.c (finish_decltype_type): Add complain parm.
+ * cp-tree.h: Adjust.
+ * parser.c (cp_parser_decltype): Adjust.
+ * pt.c (tsubst): Adjust.
+
+ PR c++/48450
+ * cvt.c (ocp_convert): Handle converting scoped enum to bool.
+
+2011-03-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/48277
+ * semantics.c (finish_call_expr): Remove assert.
+
+ PR c++/48280
+ * method.c (defaultable_fn_check): Templates are not defaultable.
+
+ * parser.c (cp_parser_init_declarator): Avoid redundant
+ cp_finish_decl for member declarations.
+
+2011-03-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/48212
+ * semantics.c (non_const_var_error): Just return if DECL_INITIAL
+ is error_mark_node.
+
+2011-03-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/48369
+ * semantics.c (potential_constant_expression_1): Handle
+ UNORDERED_EXPR and ORDERED_EXPR.
+
+ PR c++/48281
+ * semantics.c (finish_compound_literal): Do put static/constant
+ arrays in static variables.
+
+ * call.c (convert_like_real) [ck_list]: Build up the
+ initializer_list object directly.
+ * decl.c (build_init_list_var_init): Adjust.
+
+ * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
+ * decl.c (reshape_init_array_1): Likewise.
+
+2011-03-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/48265
+ * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
+ the variable is constant before looking at its initializer.
+
+ PR c++/48319
+ * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
+
+ PR c++/48089
+ * semantics.c (potential_constant_expression_1): Change error about
+ use of *this in constructor into sorry.
+
+ PR c++/48296
+ * decl.c (cp_finish_decl): Defer validation of constexpr member
+ functions.
+ * class.c (finalize_literal_type_property): Validate them here.
+ * semantics.c (is_valid_constexpr_fn): Don't check completeness.
+
+ * semantics.c (is_valid_constexpr_fn): Specify input location.
+
+2011-03-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/48313
+ * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
+ from overloaded function.
+
+ Core 1232
+ * call.c (build_array_conv): New.
+ (implicit_conversion): Use it.
+
+ * call.c (reference_binding): Allow direct binding to an array
+ rvalue.
+
+ Core 898
+ * parser.c (cp_parser_compound_statement): Add function_body parm.
+ Complain about non-body compound-stmt in constexpr fn.
+ (cp_parser_primary_expression, cp_parser_statement): Adjust.
+ (cp_parser_implicitly_scoped_statement): Adjust.
+ (cp_parser_function_body, cp_parser_try_block): Adjust.
+ (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
+ (cp_parser_objc_try_catch_finally_statement): Adjust.
+
+ Core 898
+ * semantics.c (constexpr_fn_retval): New. Allow using-declaration
+ and using-definition.
+ (register_constexpr_fundef): Call it.
+
+ * except.c (build_noexcept_spec): Call cxx_constant_value after
+ converting to bool.
+
+2011-03-25 Kai Tietz <ktietz@redhat.com>
+
+ * lex.c (interface_strcmp): Handle dos-paths.
+ (handle_pragma_implementation): Use filename_cmp instead of
+ strcmp.
+ (in_main_input_context): Likewise.
+
+2011-03-25 Jason Merrill <jason@redhat.com>
+
+ Core 1135
+ * method.c (defaulted_late_check): Check for exception spec mismatch.
+ (defaultable_fn_check): Allow exception spec and virtual.
+ * class.c (check_for_override): A virtual dtor is non-trivial.
+
+ PR c++/48289
+ * pt.c (build_non_dependent_expr): Keep dereferences outside the
+ NON_DEPENDENT_EXPR.
+
+2011-03-25 Kai Tietz <ktietz@redhat.com>
+
+ * decl.c (decls_match): Replace target hook
+ call of comp_type_attributes by version in tree.c file.
+ * search.c (check_final_overrider): Likewise.
+ * typeck.c (structural_comptypes): Likewise.
+
+2011-03-21 Kai Tietz <ktietz@redhat.com>
+
+ PR target/12171
+ * cxx-pretty-print.c (pp_cxx_ptr_operator):
+ Display allowed attributes for function pointer types.
+ * error.c (dump_type_prefix): Likewise.
+
+ * tree.c (cxx_attribute_table): Adjust table.
+
+2011-03-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/48162
+ * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
+
+ PR c++/48118
+ * call.c (build_over_call): Don't skip ck_rvalue.
+
+2011-03-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/47504
+ * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
+ the conversion set TREE_OVERFLOW.
+
+ Core 1212
+ * semantics.c (finish_decltype_type): Return T&& for xvalue.
+ * typeck.c (unlowered_expr_type): Preserve cv-quals.
+
+ PR c++/48166
+ * decl.c (revert_static_member_fn): Strip function-cv-quals.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/48089
+ * semantics.c (potential_constant_expression_1): Don't allow *this
+ in a constructor.
+ (register_constexpr_fundef): Use potential_rvalue_constant_expression.
+
+ PR c++/47301
+ * decl.c (compute_array_index_type): Don't bother trying to deal
+ with literal classes in ABI v1.
+
+ PR c++/46336
+ * decl.c (duplicate_decls): Return NULL_TREE for clashing
+ C functions.
+
+ PR c++/47570
+ * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
+ use the generic binary expression handling.
+
+2011-03-16 Diego Novillo <dnovillo@google.com>
+
+ * Make-lang.in (CXX_PARSER_H): New.
+ (cp/parser.o): Add dependency on CXX_PARSER_H.
+ Add dependency on tree-pretty-print.h
+ (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
+ * cp-lang.c: Include parser.h.
+ * parser.c: Include parser.h.
+ (struct cp_token): Add bitfield purged_p.
+ Update all users.
+ Move to parser.h.
+ (CPP_PURGED): Remove. Update all users.
+ (struct cp_lexer): Change field buffer to be a VEC of cp_token.
+ Remove field buffer_length.
+ Update all users.
+ Move to parser.h.
+ (struct tree_check): Move to parser.h.
+ (cp_token_position): Likewise.
+ (struct cp_token_cache): Likewise.
+ (CPP_KEYWORD): Likewise.
+ (CPP_TEMPLATE_ID): Likewise.
+ (CPP_NESTED_NAME_SPECIFIER): Likewise.
+ (N_CP_TTYPES): Likewise.
+ (enum cp_parser_status_kind): Likewise.
+ (struct cp_parser_context): Likewise.
+ (struct cp_default_arg_entry_d): Likewise.
+ (struct cp_unparsed_functions_entry_d): Likewise.
+ (struct cp_parser): Likewise.
+ (cp_lexer_dump_tokens): New.
+ (cp_lexer_debug_tokens): New.
+ (cp_lexer_finished_p): New.
+ (cp_lexer_alloc): Factor out of cp_lexer_new_main.
+ (cp_lexer_new_main): Re-write main lexing loop to push
+ tokens into the new VEC buffer.
+ (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
+ Do not abort if the token type is not recognized, just print
+ its code.
+ * parser.h: New file.
+ * config-lang.in (gtfiles): Add cp/parser.h.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ Core 1148
+ * typeck.c (check_return_expr): Fix conditions for setting
+ LOOKUP_PREFER_RVALUE.
+
+ * call.c (build_over_call): Remove require_complete_type_sfinae call.
+
+ PR c++/48132
+ * decl.c (check_array_designated_initializer): Allow integer index.
+ (reshape_init_array_1): Set index on the elements.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/48113
+ * typeck.c (convert_for_initialization): Use
+ perform_implicit_conversion_flags.
+ * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
+ rvaluedness_matches_p on ck_rvalue.
+ (convert_like_real) [ck_rvalue]: And restore it here.
+
+ PR c++/48115
+ * call.c (convert_arg_to_ellipsis): Handle incomplete type.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
+ committed to this tentative parse.
+
+ PR c++/47999
+ * semantics.c (finish_call_expr): Preserve reference semantics
+ in templates.
+
+ * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
+
+2011-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
+ DECL_LANG_SPECIFIC is NULL.
+
+2011-03-15 Jason Merrill <jason@redhat.com>
+
+ Core 1074
+ * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
+ check value_dependent_expression_p on the operand.
+
+ * semantics.c (push_cx_call_context): Return bool.
+ (cxx_eval_call_expression): Handle excess depth.
+
+ Core 1191
+ * method.c (synthesized_method_walk): Cleanups don't affect the
+ triviality of a constructor, but do affect deletion and exception
+ specification.
+
2011-03-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
* decl2.c (cp_check_const_attributes): New.