+2009-07-14 Taras Glek <tglek@mozilla.com>
+ Rafael Espindola <espindola@google.com>
+
+ * Make-lang.in: Added CP_PLUGIN_HEADERS and
+ c.install-target to export cp-tree.h cxx-pretty-print.h
+ name-lookup.h headers for plugins.
+
+2009-07-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/37276
+ * decl.c (decls_match): A non-extern-C declaration doesn't match
+ a builtin extern-C declaration.
+
+ PR c++/40746
+ * name-lookup.c (qualified_lookup_using_namespace): Don't stop
+ looking in used namespaces just because we found something on
+ another branch.
+
+ PR c++/40740
+ * semantics.c (perform_koenig_lookup): Handle empty template args.
+
+ * call.c (build_over_call): Use can_trust_pointer_alignment.
+
+2009-07-14 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/40705
+ PR c++/403057
+ * decl2.c (grokfield): Don't call set_underlying_type on typedef
+ decls that are type names.
+
+2009-07-13 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR C++/22154
+ * parser.c (cp_parser_elaborated_type_specifier): Accept typename in
+ front of qualified names.
+
+2009-07-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/36628
+ * tree.c (rvalue): Use lvalue_or_rvalue_with_address_p.
+
+ PR c++/37206
+ * cp-tree.h (enum cp_lvalue_kind_flags): Add clk_rvalueref.
+ * tree.c (lvalue_p_1): Return it. Remove
+ treat_class_rvalues_as_lvalues parm.
+ (real_lvalue_p): Disallow pseudo-lvalues here.
+ (lvalue_or_rvalue_with_address_p): New fn.
+ * call.c (initialize_reference): Use it instead of real_lvalue_p.
+
+ PR c++/40689
+ * init.c (build_new_1): Handle initializer list as array initializer.
+ (build_vec_init): Likewise.
+ * typeck.c (cp_build_modify_expr): Likewise.
+ * typeck2.c (process_init_constructor_array): Error rather than abort
+ if too many initializers.
+
+2009-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/40502
+ * error.c (cp_print_error_function): Check for NULL block.
+
+2008-07-09 Simon Martin <simartin@users.sourceforge.net>
+ Jason Merrill <jason@redhat.com>
+
+ * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
+ append_type_to_template_for_access_check_1): Use CLASS_TYPE_P.
+
+2009-07-09 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/40684
+ * pt.c (type_unification_real): Use tsubst_template_arg instead
+ of tsubst to substitute default template arguments.
+
+2009-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c++/31246
+ * init.c (build_new_1): Set TREE_NO_WARNING for compiler-generated
+ code.
+ * cp-gimplify.c (genericize_eh_spec_block): Likewise.
+
+
+2009-07-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/35828
+ * pt.c (tsubst_decl): Don't abort if we didn't change anything
+ in a TEMPLATE_DECL's args.
+
+2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * semantics.c (finalize_nrv_r): Replace EXPR_LOCUS by
+ EXPR_LOCATION.
+
+2009-07-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/37816
+ * decl.c (build_enumerator): Don't add enumerators for a
+ scoped enum to the enclosing class.
+
+ PR c++/40639
+ * decl.c (start_enum): Allow dependent underlying type.
+
+ PR c++/40633
+ * decl.c (finish_enum): Finish scope even in a template.
+
+2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * init.c: Replace %J by an explicit location. Update all calls.
+ * decl.c: Likewise.
+ * typeck2.c: Likewise.
+ * pt.c: Likewise.
+ * name-lookup.c: Likewise.
+
+2009-07-06 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * decl.c: Replace %H by an explicit location. Update all calls.
+ * except.c: Likewise.
+ * semantics.c: Likewise.
+ * parser.c: Likewise.
+
+2009-07-06 Simon Martin <simartin@users.sourceforge.net>
+
+ PR c++/40557
+ * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
+ append_type_to_template_for_access_check_1): Use
+ RECORD_OR_UNION_CODE_P.
+
+2009-07-04 Jason Merrill <jason@redhat.com>
+
+ * pt.c (retrieve_specialization): Don't get confused by a
+ using-declaration that brings in another instance of this template
+ from a base class.
+
+ * ptree.c (cxx_print_type): Fix logic.
+
+ * cp-tree.h (LANG_DECL_FN_CHECK): Fix non-checking version.
+
+ PR c++/40619
+ * cp-tree.h (struct lang_decl_parm): New.
+ (struct lang_decl): Add it.
+ (LANG_DECL_PARM_CHECK): New.
+ (DECL_PARM_INDEX): New.
+ * decl2.c (parm_index): Remove.
+ * lex.c (retrofit_lang_decl): Handle parms.
+ (cxx_dup_lang_specific_decl): Likewise.
+ * mangle.c (write_expression): Adjust.
+ * tree.c (cp_tree_equal): Adjust.
+ (decl_linkage): Only check DECL_COMDAT for functions and variables.
+ * parser.c (cp_parser_parameter_declaration_list): Set
+ DECL_PARM_INDEX.
+ * pt.c (iterative_hash_template_arg): Hash it.
+
+2009-07-03 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (struct lang_decl): Overhaul.
+ (struct lang_decl_flags): Remove.
+ (struct lang_decl_base): New.
+ (struct lang_decl_min): New.
+ (struct lang_decl_fn): New.
+ (struct lang_decl_ns): New.
+ (CAN_HAVE_FULL_LANG_DECL_P): Replace with LANG_DECL_HAS_MIN.
+ (LANG_DECL_MIN_CHECK): New.
+ (LANG_DECL_FN_CHECK): New.
+ (LANG_DECL_NS_CHECK): New.
+ (STRIP_TEMPLATE): New.
+ (NON_THUNK_FUNCTION_CHECK): Remove.
+ (DECL_DECLARES_FUNCTION_P): New.
+ (lots): Adjust.
+ * lex.c (retrofit_lang_decl, cxx_dup_lang_specific_decl): Adjust.
+ * decl.c (push_local_name, duplicate_decls): Adjust.
+ * decl2.c (start_objects): Don't set u2sel.
+ * semantics.c (finish_omp_threadprivate): Adjust.
+ * class.c (build_clone): Don't do much on TEMPLATE_DECLs.
+ (decl_cloned_function_p): Out-of-line implementation of macros.
+ (clone_function_decl, adjust_clone_args): Use DECL_CLONED_FUNCTION_P.
+ * mangle.c (write_unqualified_name): Don't check function flags
+ on non-functions.
+ * method.c (make_alias_for): Don't set DECL_CLONED_FUNCTION.
+ * pt.c (build_template_decl): Don't set function flags.
+ (check_default_tmpl_args): Check that it's a function.
+ (instantiate_template): Use DECL_ABSTRACT_ORIGIN to find the
+ cloned template.
+
+ * pt.c (tsubst_decl) [FUNCTION_DECL]: Don't tsubst
+ DECL_CLONED_FUNCTION.
+
+ * cp-tree.h (struct lang_type_class): Move sorted_fields here.
+ * class.c (finish_struct_1): Adjust.
+ * ptree.c (cxx_print_decl, cxx_print_type): Adjust.
+ * search.c (lookup_field_1): Adjust.
+
+ * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Remove.
+ * decl.c (finish_method): Don't add to it.
+ * class.c (fixup_pending_inline): Remove.
+ (fixup_inline_methods): Remove.
+ (finish_struct_1): Don't call it.
+
+ * error.c (dump_function_name): Handle null name.
+
+2009-07-02 Mark Mitchell <mark@codesourcery.com>
+
+ * typeck.c (cp_build_binary_op): Move warnings about use of NULL
+ in arithmetic earlier and allow comparisions of NULL with
+ pointers-to-members.
+
+2009-07-02 Jason Merrill <jason@redhat.com>
+
+ Use hash tables for template specialization lookup.
+ * pt.c (struct spec_entry): New type.
+ (decl_specializations, type_specializations): New hash tables.
+ (register_specialization, retrieve_specialization): Use them.
+ (reregister_specialization, lookup_template_class): Use them.
+ (eq_specializations, hash_tmpl_and_args, hash_specialization): New.
+ (iterative_hash_template_arg): New.
+ (init_template_processing): New
+ (process_partial_specialization): Don't look to see if we already
+ have this partial specialization.
+ (maybe_process_partial_specialization): Handle reassigning
+ full specializations when we get an explicit specialization
+ of the partial instantiation.
+ (tsubst_friend_function): Adjust specialization reassignment code.
+ (instantiate_template): Only do one lookup.
+ (instantiate_decl): Don't do any lookup.
+ * cp-tree.h: Declare init_template_processing.
+ * decl.c (duplicate_decls): Pass args to reregister_specialization.
+
+2009-07-01 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (DECL_CLASS_TEMPLATE_P): Use DECL_IMPLICIT_TYPEDEF_P.
+
+ * pt.c (register_specialization): Use duplicate_decls to merge
+ the argument with a previous specialization.
+ (check_explicit_specialization): Call register_specialization to
+ merge the TEMPLATE_DECL with a previous version.
+ (determine_specialization): Return the args even if fn is a template.
+
+2009-07-01 Ian Lance Taylor <iant@google.com>
+
+ * g++spec.c (lang_specific_driver): Bump num_args by 1.
+
+2009-06-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/40595
+ * pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
+ EXPR_PACK_EXPANSION.
+
+2009-06-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/40274
+ * error.c (dump_template_parms): Pass all args to
+ count_non_default_template_args.
+ (count_non_default_template_args): Pull out the inner ones.
+
+2009-06-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ * decl.c (duplicate_decls): Re-indent.
+
+2009-06-25 Ian Lance Taylor <iant@google.com>
+
+ * call.c (avoid_sign_compare_warnings): New static function.
+ (build_new_op): Call it.
+ * typeck.c (cp_build_binary_op): Don't call warn_sign_compare if
+ TREE_NO_WARNING is set on either operand.
+
+2009-06-25 Ian Lance Taylor <iant@google.com>
+
+ * g++spec.c (SKIPOPT): define.
+ (lang_specific_driver): Handle -static-libstdc++. Only add
+ LIBSTDCXX_STATIC if we add LIBSTDCXX.
+
+2009-06-25 Ian Lance Taylor <iant@google.com>
+
+ * cvt.c (convert_to_void): Only warn about COND_EXPR if neither
+ the second nor third operand has side effects.
+
+2009-06-25 Ian Lance Taylor <iant@google.com>
+
+ * parser.c (cp_parser_binary_expression): Increment
+ c_inhibit_evaluation_warnings while parsing the right hand side of
+ "true || x" or "false && x".
+ * typeck.c (cp_build_binary_op): Only call warn_for_sign_compare
+ if c_inhibit_evaluation_warnings is zero.
+
+2009-06-24 Jason Merrill <jason@redhat.com>
+
+ * error.c (dump_decl): Do say "typedef" for the injected class name.
+
+ * pt.c (lookup_template_class): Use currently_open_class,
+ compare template args later.
+
+ PR c++/40342
+ * decl.c (decls_match): Check DECL_TI_TEMPLATE too.
+ * class.c (resolve_address_of_overloaded_function): Fix typo.
+
+2009-06-18 Aldy Hernandez <aldyh@redhat.com>
+
+ * class.c (get_vtable_decl): Replace finish_decl with cp_finish_decl.
+ * decl.c (finish_decl): Remove.
+ (declare_global_var): Replace finish_decl with cp_finish_decl.
+ (start_method): Same.
+ * rtti.c (emit_tinfo_decl): Same.
+ * pt.c (tsubst_expr): Same.
+ (instantiate_decl): Same.
+ * decl2.c (grokbitfield): Same.
+ * name-lookup.c (pushdecl_top_level_1): Same.
+ * cp-tree.h: Remove finish_decl.
+
+2009-06-16 David Edelsohn <edelsohn@gnu.org>
+
+ * g++-spec.c (LIBSTDCXX_STATIC): Default to NULL.
+ (lang_specific_driver): Always allocate extra argument.
+ Add LIBSTDCXX_STATIC to arglist if defined and linking
+ statically.
+
+2009-06-16 Ian Lance Taylor <iant@google.com>
+
+ * Make-lang.in (cp/class.o): Depend upon gt-cp-class.h.
+ (cp/semantics.o): Depend upon gt-cp-semantics.h.
+
+2009-06-16 Ian Lance Taylor <iant@google.com>
+
+ * parser.c (cp_unevaluated_operand): Define global variable.
+ (cp_parser_question_colon_clause): Increment
+ c_inhibit_evaluation_warnings when evaluating an expression which
+ will never be executed.
+ (cp_parser_decltype): Increment cp_unevaluated_operand and
+ c_inhibit_evaluation_warnings, not skip_evaluation.
+ (cp_parser_sizeof_operand): Likewise.
+ (cp_parser_enclosed_template_argument_list): Save
+ cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
+ skip_evaluation.
+ * cp-tree.h (struct saved_scope): Remove skip_evaluation field.
+ Add unevaluated_operand and inhibit_evaluation_warnings fields.
+ (cp_unevaluated_operand): Declare.
+ * name-lookup.c (push_to_top_level): Save cp_unevaluated_operand
+ and c_inhibit_evaluation_warnings rather than skip_evaluation.
+ (pop_from_top_level): Restore cp_unevaluated_operand and
+ c_inhibit_evaluation_warnings rather than skip_evaluation.
+ * class.c (build_base_path): Check cp_unevaluated_operand rather
+ than skip_evaluation.
+ * typeck.c (build_class_member_access_expr): Likewise.
+ (cp_build_binary_op): Don't warn about bad shift counts if
+ c_inhibit_evaluation_warnings is non-zero.
+ * pt.c (coerce_template_parms): Save state of
+ cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
+ skip_evaluation.
+ (tsubst_aggr_type): Likewise.
+ (tsubst_pack_expansion): Check cp_unevaluated_operand rather than
+ skip_evaluation.
+ (tsubst_copy): Likewise.
+ (tsubst): Set cp_unevaluated_operand and
+ c_inhibit_evaluation_warnings, not skip_evaluation.
+ (tsubst_copy_and_build): Likewise.
+ * call.c (convert_arg_to_ellipsis): Check cp_unevaluated_operand
+ rather than skip_evaluation.
+ * decl2.c (mark_used): Likewise.
+ * semantics.c (finish_non_static_data_member): Likewise.
+ * cvt.c (cp_convert_and_check): Check
+ c_inhibit_evaluation_warnings rather than skip_evaluation.
+ * mangle.c (write_type): Set cp_unevaluated_operand rather than
+ skip_evaluation.
+
+2009-06-15 Ian Lance Taylor <iant@google.com>
+
+ * parser.c (cp_parser_direct_declarator): Add braces around
+ variables declared before label.
+
+2009-06-15 Rafael Avila de Espindola <espindola@google.com>
+
+ * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Remove.
+ * cp-tree.h (cxx_comdat_group): Change signature.
+ * decl.c (duplicate_decls): Use DECL_COMDAT_GROUP.
+ (cxx_comdat_group): Change signature.
+ * decl2.c (comdat_linkage, maybe_make_one_only): Update call to
+ make_decl_one_only.
+ (constrain_visibility, get_guard): Use DECL_COMDAT_GROUP.
+ * method.c (use_thunk): Update call to make_decl_one_only.
+ * optimize.c (maybe_clone_body): Use DECL_COMDAT_GROUP
+
+2009-06-12 Aldy Hernandez <aldyh@redhat.com>
+
+ * typeck.c (cp_build_binary_op): Pass location to overflow_warning.
+ (build_modify_expr): New arg.
+ * semantics.c (finish_unary_op_expr): Pass location to
+ overflow_warning.
+ (handle_omp_for_class_iterator): Pass location to build_modify_expr.
+ * typeck.c (cxx_sizeof_or_alignof_type): Pass location to
+ c_sizeof_or_alignof_type.
+ (build_array_ref): New argument.
+ (build_compound_expr): Same.
+ (build_const_cast): Same.
+ (build_ptrmemfunc): Pass location to build_c_cast.
+ * init.c (avoid_placement_new_aliasing): Pass location to
+ build_stmt.
+ (build_vec_delete_1): Pass location to cp_build_modify_expr,
+ build_compound_expr.
+ * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
+ * decl.c (poplevel): Pass location to c_build_bind_expr.
+ (finish_case_label): Pass location to build_case_label.
+ (finish_constructor_body): Same.
+ (finish_destructor_body): Pass location to build_stmt.
+ (cxx_maybe_build_cleanup): Same, but to build_compound_expr.
+ * call.c (build_new_op): Pass location to build_array_ref.
+ (build_x_va_arg): Pass location to build_va_arg.
+ * except.c (expand_end_catch_block): Pass location to
+ build_stmt.
+ * cp-tree.h (build_array_ref): New argument.
+ (build_compound_expr): Same.
+ (build_c_cast): Same.
+ * cp-gimplify.c (gimplify_if_stmt): Pass location on down.
+ (gimplify_switch_stmt): Same.
+ * typeck2.c (split_nonconstant_init_1): Same.
+ * pt.c (tsubst_copy): Same.
+ * semantics.c (add_decl_expr): Same.
+ (do_poplevel): Same.
+ (push_cleanup): Same.
+ (finish_goto_stmt): Same.
+ (finish_expr_stmt): Same.
+ (begin_if_stmt): Same.
+ (begin_while_stmt): Same.
+ (begin_do_stmt): Same.
+ (finish_return_stmt): Same.
+ (begin_for_stmt): Same.
+ (finish_break_stmt): Same.
+ (finish_continue_stmt): Same.
+ (begin_switch_stmt): Same.
+ (begin_try_block): Same.
+ (begin_handler): Same.
+ (finish_asm_stmt): Same.
+ (finish_label_stmt): Same.
+ (finish_stmt_expr_expr): Same.
+ (finalize_nrv_r): Same.
+ (finish_omp_atomic): Same.
+ * name-lookup.c (do_using_directive): Same.
+ * decl2.c (grok_array_decl): Same.
+ * parser.c (cp_parser_cast_expression): Same.
+ (cp_parser_selection_statement): Same.
+ (cp_parser_implicitly_scoped_statement): Same.
+ (cp_parser_objc_selector_expression): Same.
+ (cp_parser_objc_synchronized_statement): Same.
+ (cp_parser_objc_throw_statement): Same.
+ (cp_parser_omp_critical): Same.
+ (cp_parser_omp_master): Same.
+ * typeck.c (build_function_call): Add location argument.
+ * init.c: Add location argument to all build_decl calls.
+ * class.c: Same.
+ * method.c: Same.
+ * rtti.c: Same.
+ * tree.c: Same.
+ * pt.c: Same.
+ * semantics.c: Same.
+ * lex.c: Same.
+ * decl2.c: Same.
+ * cp-gimplify.c: Same.
+ * decl.c: Same.
+ (cp_make_fname_decl): Add location argument. Pass location ot
+ build_decl.
+ (finish_case_label): Same.
+ * cp-tree.h (finish_case_label): Add location argument.
+ * parser.c (cp_parser_label_for_labeled_statement): Pass location to
+ finish_case_label.
+
+2009-06-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/40381
+ * decl2.c (mark_used): Return after complaining about deleted fn.
+
+2009-06-08 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_type_id_1): 'auto' type is ok with a
+ late-specified return type.
+
+2009-06-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/40373
+ * call.c (check_dtor_name): Return false even if
+ get_type_value (name) is error_mark_node.
+
+ PR c++/40370
+ PR c++/40372
+ * parser.c (cp_parser_direct_declarator): Don't set TREE_SIDE_EFFECTS
+ on error_mark_node. Check for VLAs outside of function context
+ before check whether to wrap bounds into a NOP_EXPR with
+ TREE_SIDE_EFFECTS.
+
+2009-06-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * repo.c (get_base_filename): Use aux_base_name rather than
+ alternate temporary file during second compare debug compilation.
+ (finish_repo): Skip during -fcompare-debug-second.
+
+2009-06-06 Ian Lance Taylor <iant@google.com>
+
+ * parser.c (cp_parser_label_for_labeled_statement): Support
+ attribute on labels if immediately followed by semicolon.
+ * semantics.c (finish_label_stmt): Return new label.
+ * pt.c (tsubst_expr): Handle attributes for LABEL_EXPR.
+
+2009-06-03 Ian Lance Taylor <iant@google.com>
+
+ * Make-lang.in (cc1plus-checksum.o): Depend upon $(CONFIG_H) and
+ $(SYSTEM_H).
+
+2009-06-02 Mark Mitchell <mark@codesourcery.com>
+
+ * decl.c (maybe_deduce_size_from_array_init): Use relayout_decl.
+
+2009-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/40308
+ PR c++/40311
+ * typeck.c (cp_build_modify_expr): Always pass init-lists to the
+ conversion code.
+ * call.c (implicit_conversion): Allow init-list conversion to scalar
+ during direct-initialization, too. Mark the conversion bad if it
+ has too many levels of braces.
+ (convert_like_real): And give a helpful error.
+
+ PR c++/40306
+ PR c++/40307
+ * decl.c (cp_finish_decl): Handle auto deduction from ().
+ * typeck.c (build_x_indirect_ref): Handle dereferencing an operand
+ with dependent type that is known to be a pointer.
+
+2009-06-02 Simon Martin <simartin@users.sourceforge.net>
+
+ PR c++/38089
+ * pt.c (register_specialization): Properly setup DECL_CONTEXT for
+ specializations in an invalid namespace.
+
+2009-06-01 Aldy Hernandez <aldyh@redhat.com>
+
+ * error.c (print_instantiation_partial_context): Print column
+ numbers.
+
+2009-05-29 Ian Lance Taylor <iant@google.com>
+
+ * error.c (cp_printer): Don't use va_arg with enum type.
+
+2009-05-28 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/39754
+ * cp-tree.h (canonical_type_variant): Remove this function declaration.
+ (strip_typedefs): New function declaration.
+ * tree.c (strip_typedefs): New function definition.
+ (canonical_type_variant): Remove function definition.
+ * cvt.c (convert_from_reference): No need to use
+ canonical_type_variant.
+ * typeck.c (cp_build_indirect_ref): Likewise.
+ * error.c (dump_template_bindings): Use strip_typedefs instead of
+ canonical_type_variant.
+ * pt.c (convert_template_argument, unify): Likewise.
+ * mangle.c (canonicalize_for_substitution): Don't use
+ canonical_type_variant.
+
+2009-05-27 Jason Merrill <jason@redhat.com>
+
+ * call.c (implicit_conversion): Handle conversion from
+ initializer-list to scalar.
+ (convert_like_real): Likewise. Avoid crashing on list
+ initialization with bad conversions.
+ (can_convert): Use LOOKUP_EXPLICIT.
+ (can_convert_arg_bad): Add flags parm.
+ * cp-tree.h: Adjust.
+ * typeck.c (convert_for_assignment): Pass flags.
+
+2009-05-27 Ian Lance Taylor <iant@google.com>
+
+ * Make-lang.in (g++$(exeext)): Change $(COMPILER) to $(LINKER).
+ (cc1plus-dummy$(exeext), cc1plus$(exeext)): Likewise.
+
+2009-05-26 Ian Lance Taylor <iant@google.com>
+
+ * Make-lang.in (g++spec.o): Use $(COMPILER).
+ (g++$(exeext), cc1plus-dummy$(exeext)): Likewise.
+ (cc1plus$(exeext)): Likewise.
+
+2009-05-26 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/40007
+ * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Remove this accessor.
+ (TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): New accessor.
+ (get_types_needing_access_check): Declare new entry point.
+ * pt.c (append_type_to_template_for_access_check_1,
+ get_types_needing_access_check): New functions.
+ (perform_typedefs_access_check): Accept FUNCTION_DECLs and
+ RECORD_TYPEs rather than TEMPLATE_DECLs. Use the new
+ get_types_needing_access_check, no more
+ MEMBER_TYPES_NEEDING_ACCESS_CHECK.
+ (instantiate_class_template): Set input_location to the source
+ location of the most specialized template definition.
+ Perform access check using the RECORD_TYPE of the template, not its
+ associated most generic TEMPLATE_DECL.
+ (append_type_to_template_for_access_check): Augment function
+ comments. Use the new get_types_needing_access_check, not
+ MEMBER_TYPE_NEEDING_ACCESS_CHECK. Use the new
+ append_type_to_template_for_access_check_1 subroutine.
+
+2009-05-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/38064
+ * typeck.c (cp_build_binary_op): Allow ENUMERAL_TYPE in
+ arithmetic comparisons.
+ (cp_common_type): Handle scoped enums.
+
+ * call.c (promoted_arithmetic_type_p): Don't use INTEGRAL_TYPE_P.
+ (add_builtin_candidate, add_builtin_candidates): Likewise.
+ (convert_like_real): Likewise.
+ * class.c (check_bitfield_decl): Likewise.
+ * decl.c (check_static_variable_definition): Likewise.
+ (compute_array_index_type): Likewise.
+ * decl2.c (grokbitfield): Likewise.
+ * init.c (build_new_1): Likewise.
+ * pt.c (convert_nontype_argument): Likewise.
+ (current_instantiation): Likewise.
+ * tree.c (pod_type_p): Likewise.
+ * typeck.c (build_static_cast_1): Likewise.
+ (build_reinterpret_cast_1): Likewise.
+
+2009-05-22 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/38964
+ * init.c (avoid_placement_new_aliasing): Remove.
+ (build_new_1): Do not call it.
+
+2009-05-22 Mark Mitchell <mark@codesourcery.com>
+
+ * decl2.c (decl_needed_p): Consider dllexport'd functions needed.
+ * semantics.c (expand_or_defer_fn): Similarly.
+
+2009-05-20 Ian Lance Taylor <iant@google.com>
+
+ * parser.c (cp_parser_postfix_expression): Change args to a vec.
+ Release it when done.
+ (tree_vector): Define typedef. Define VEC functions.
+ (cp_parser_parenthesized_expression_list): Change return type to
+ vec. Change all callers.
+ (cp_parser_new_expression): Change placement and initializer to
+ vecs. Release them when done.
+ (cp_parser_new_placement): Change return type to vec. Change all
+ callers.
+ (cp_parser_new_initializer): Likewise.
+ * typeck.c (build_function_call_vec): Just call
+ cp_build_function_call_vec.
+ (cp_build_function_call): Just build a vec and call
+ cp_build_function_call_vec.
+ (cp_build_function_call_vec): New function based on old
+ cp_build_function_call.
+ (convert_arguments): Remove nargs and argarray parameters. Change
+ values to a vec. Change caller.
+ (build_x_compound_expr_from_vec): New function.
+ (cp_build_modify_expr): Build vec to pass to
+ build_special_member_call.
+ * call.c (struct z_candidate): Add first_arg field. Change args
+ field to vec.
+ (convert_class_to_reference): Handle first argument separately.
+ (add_candidate): Add first_arg parameter. Change args parameter
+ to vec. Change all callers.
+ (add_function_candidate, add_conv_candidate): Likewise.
+ (add_template_candidate_real, add_template_candidate): Likewise.
+ (add_template_conv_candidate): Likewise.
+ (build_user_type_conversion_1): Handle first argument separately.
+ (resolve_args): Change return type and parameter type to vecs.
+ Change all callers.
+ (perform_overload_resolution): Change args parameter to vec.
+ Change all callers.
+ (build_new_function_call, build_operator_new_call): Likewise.
+ (add_candidates): Likewise.
+ (build_op_call): New globally visible function, built from and
+ replacing static function build_object_call.
+ (build_new_op): Don't handle CALL_EXPR. Build vec, not tree_list,
+ of arguments.
+ (build_op_delete_call): Build vec to pass to
+ cp_build_function_call_vec.
+ (build_temp): Build vec to pass to build_special_member_call.
+ (convert_like_real): Likewise.
+ (perform_direct_initialization_if_possible): Likewise.
+ (build_over_call): Handle first_arg field. Use build_call_array
+ rather than build_call_list.
+ (build_special_member_call): Change args parameter to vec. Change
+ all callers.
+ (build_new_method_call): Likewise.
+ * init.c (expand_default_init): Change parms to vec.
+ (build_raw_new_expr): Change placement and init to vecs. Change
+ all callers.
+ (build_new_1, build_new): Likewise.
+ * class.c (resolve_address_of_overloaded_function): Build array to
+ pass to fn_type_unification.
+ * pt.c (tsubst_copy_and_build): For NEW_EXPR build vecs to pass to
+ build_new. For CALL_EXPR create a vec rather than a tree_list;
+ expand a pack if necessary.
+ (fn_type_unification): Change args parameter to const tree *. Add
+ nargs parameter. Change all callers.
+ (type_unification_real): Likewise.
+ (unify): Build array to pass to type_unification_real.
+ (get_bindings): Build array to pass to fn_type_unification.
+ (any_type_dependent_arguments_p): Change args parameter to a vec.
+ Change all callers.
+ (make_args_non_dependent): Renamed from build_non_dependent_args.
+ Change return type to void. Change parameter type to vec. Change
+ all callers.
+ (do_auto_deduction): Pass an array to type_unification_real.
+ * semantics.c (perform_koenig_lookup): Change args to vec. Change
+ all callers.
+ (finish_call_expr): Change args to vec. Change all callers. Call
+ build_op_call instead of passing CALL_EXPR to build_new_op.
+ (cxx_omp_create_clause_info): Allocate vec to pass to
+ build_special_member_call.
+ * decl2.c (build_offset_ref_call_from_tree): Change args parameter
+ to vec. Change all callers.
+ * name-lookup.c (lookup_function_nonclass): Likewise.
+ (struct arg_lookup): Change args to vec.
+ (arg_assoc_namespace): Handle args as a vec.
+ (arg_assoc_args_vec): New static function.
+ (lookup_arg_dependent): Change args parameter to vec. Change all
+ callers.
+ * method.c (do_build_assign_ref): Allocate vec to pass to
+ build_special_member_call.
+ * except.c (build_throw): Likewise.
+ * typeck2.c (build_functional_cast): Likewise.
+ * cvt.c (ocp_convert): Likewise.
+ * tree.c (build_min_non_dep_call_vec): Change last parameter to
+ vec. Change all callers.
+ * cp-tree.h: Update declarations.
+ * name-lookup.h: Update declarations.
+
+2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
+
+ * typeck.c (default_conversion): Check targetm.promoted_type.
+ * decl.c (grokdeclarator): Check targetm.invalid_return_type.
+ (grokparms): Check targetm.invalid_parameter_type.
+ * cvt.c (ocp_convert): Check targetm.convert_to_type.
+ (build_expr_type_conversion): Check targetm.promoted_type.
+
+2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ * typeck.c (build_binary_op): Allow % on integal vectors.
+
+2009-05-18 Jason Merrill <jason@redhat.com>
+
+ Implement explicit conversions ops as specified in N2437.
+ * decl.c (grokdeclarator): Handle explicit conversion ops.
+ (check_initializer): Pass flags to store_init_value.
+ * decl2.c (maybe_emit_vtables): Likewise.
+ * init.c (expand_aggr_init_1): Likewise.
+ * call.c (convert_class_to_reference): Take flags parm,
+ check DECL_NONCONVERTING_P.
+ (build_user_type_conversion_1): Check DECL_NONCONVERTING_P.
+ (add_builtin_candidates): Simplify getting type of conversion.
+ (build_object_call): Likewise. Check DECL_NONCONVERTING_P.
+ (implicit_conversion): Pass through LOOKUP_ONLYCONVERTING.
+ (reference_binding): Take flags parm. Direct-initialize copy parm.
+ (add_function_candidate): Direct-initialize the copy parm.
+ (add_conv_candidate): Use LOOKUP_IMPLICIT, not LOOKUP_NORMAL.
+ (build_builtin_candidate): Add LOOKUP_ONLYCONVERTING.
+ (conditional_conversion): Likewise.
+ (convert_like_real): Only complain about DECL_NONCONVERTING_P
+ constructors.
+ (perform_implicit_conversion_flags): Add flags parm to
+ perform_implicit_conversion. Improve diagnostics.
+ * cp-tree.h (LOOKUP_IMPLICIT): New macro.
+ (LOOKUP_COPY_PARM): New bit macro.
+ * cvt.c (build_expr_type_conversion): Check DECL_NONCONVERTING_P.
+ * typeck.c (convert_for_assignment): Take flags parm, pass it to
+ perform_implicit_conversion_flags.
+ (cp_build_modify_expr): Pass flags to convert_for_assignment.
+ (convert_for_initialization): Likewise.
+ * typeck2.c (store_init_value): Take flags parm, pass to
+ digest_init_flags.
+ (digest_init_flags): Add flags parm to digest_init.
+ (digest_init_r): Take flags parm, pass to convert_for_initialization.
+ (process_init_constructor_array): Pass it.
+ (process_init_constructor_record): Likewise.
+ (process_init_constructor_union): Likewise.
+
+2009-05-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/40139
+ * pt.c (tsubst_qualified_id): Retain the type if we aren't dealing
+ with a dependent type. Actually look up the destructor.
+ * semantics.c (finish_id_expression): Fix logic.
+ (finish_qualified_id_expr): Don't try to use 'this' if we aren't in
+ a function.
+ * typeck.c (build_x_unary_op): Diagnose taking the address of a
+ constructor or destructor.
+ * tree.c (get_first_fn): Handle OFFSET_REF.
+
+2009-05-17 Joseph Myers <joseph@codesourcery.com>
+
+ * tree.c (cxx_printable_name_internal): Allow consecutive
+ translated and untranslated cached copies of the name of the
+ current function.
+
+2009-05-15 Ian Lance Taylor <iant@google.com>
+
+ * cp-tree.h (enum cp_lvalue_kind_flags): Rename from
+ cp_lvalue_kind. Change all uses.
+ (enum base_access_flags): Rename from enum base_access. Change
+ all uses.
+ * parser.c (enum cp_parser_flags): Remove enum tag.
+
+2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR 16302
+ * call.c (build_new_op): Update calls to warn_logical_operator.
+
+2009-05-14 Ian Lance Taylor <iant@google.com>
+
+ * class.c (layout_class_type): Change itk to unsigned int.
+ * decl.c (finish_enum): Change itk to unsigned int.
+ * parser.c (cp_parser_check_decl_spec): Change ds to int. Remove
+ casts.
+
+2009-05-13 David Mandelin <dmandelin@mozilla.com>:
+
+ * decl.c (duplicate_decls): Preserve parameter attributes.
+
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ * decl2.c (cxx_callgraph_analyze_expr): Use
+ cgraph_mark_address_taken.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * call.c (name_as_c_string): Call type_as_string_translate.
+ Translate identifiers to locale character set.
+ * cp-tree.h (lang_decl_name): Update prototype.
+ (type_as_string_translate, decl_as_string_translate,
+ cxx_printable_name_translate): Declare.
+ * cxx-pretty-print.c (M_): Define.
+ (pp_cxx_unqualified_id, pp_cxx_canonical_template_parameter): Mark
+ English fragments for conditional translation with M_.
+ * decl.c (grokdeclarator): Translate identifiers to locale
+ character set for diagnostics.
+ * error.c (M_): Define.
+ (dump_template_bindings, dump_type, dump_aggr_type,
+ dump_type_prefix, dump_global_iord, dump_simple_decl, dump_decl,
+ dump_function_decl, dump_template_parms, dump_expr,
+ dump_binary_op, op_to_string, assop_to_string): Mark English
+ fragments for conditional translation with M_.
+ (type_as_string): Disable translation of identifiers.
+ (type_as_string_translate): New.
+ (expr_as_string): Disable translation of identifiers.
+ (decl_as_string): Disable translation of identifiers.
+ (decl_as_string_translate): New.
+ (lang_decl_name): Add parameter translate.
+ (args_to_string): Call type_as_string_translate.
+ (cp_print_error_function): Call cxx_printable_name_translate.
+ (print_instantiation_full_context,
+ print_instantiation_partial_context): Call
+ decl_as_string_translate.
+ * parser.c (cp_lexer_get_preprocessor_token): Use %qE for
+ identifier in diagnostic.
+ * tree.c (cxx_printable_name): Change to
+ cxx_printable_name_internal. Add parameter translate.
+ (cxx_printable_name, cxx_printable_name_translate): New wrappers
+ round cxx_printable_name_internal.
+
+2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR c/36892
+ * call.c (build_call_a): Updated warn_deprecated_use call.
+ (build_over_call): Likewise.
+ * decl.c (grokdeclarator): Likewise.
+ (grokparms): Likewise.
+ * semantics.c (finish_id_expression): Likewise.
+ * typeck.c (build_class_member_access_expr): Likewise.
+ (finish_class_member_access_expr): Likewise.
+
+2009-05-06 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/17395
+ * pt.c (tsubst_copy) <case PARM_DECL>: We don't want to tsubst the
+ whole list of PARM_DECLs, just the current one.
+
+2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
+
+ * cp-tree.h:
+ (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook,
+ mangle_compound_literal): Remove unused declarations.
+ (build_vfield_ref, cxx_print_statistics, clone_function_decl,
+ adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name,
+ pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish,
+ check_for_out_of_scope_variable, print_other_binding_stack,
+ maybe_push_decl, cxx_mark_addressable, force_target_expr,
+ build_target_expr_with_type, finish_case_label,
+ cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block,
+ check_template_keyword, cxx_omp_predetermined_sharing,
+ cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
+ cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause,
+ cxx_omp_privatize_by_reference): Rearrange the declarations line to
+ match the comment that indicates the .c file which the functions are
+ defined.
+ (cxx_print_xnode, cxx_print_decl, cxx_print_type,
+ cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment.
+
2009-05-05 Nathan Sidwell <nathan@codesourcery.com>
* typeck.c (cp_build_compound_expr): Require RHS to have a known
2009-02-01 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/39053
- * parser.c (cp_parser_pure_specifier): If there are no tokens left
- do not call cp_lexer_consume_token.
+ PR c++/39053
+ * parser.c (cp_parser_pure_specifier): If there are no tokens left
+ do not call cp_lexer_consume_token.
2009-01-30 Jakub Jelinek <jakub@redhat.com>