+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