+2005-04-11 Mark Mitchell <mark@codesourcery.com>
+
+ * decl2.c (determine_visibility): Don't use export_class_data.
+ (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
+ TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY.
+
+2005-04-09 Kazu Hirata <kazu@cs.umass.edu>
+
+ * cp-tree.h (cxx_alignof): Remove.
+
+ * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
+
+ * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
+ CONV_STATIC_CAST): Remove.
+
+ * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.
+
+ * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
+
+ * cp-tree.h (cp_deprecated): Remove.
+
+2005-04-08 Ian Lance Taylor <ian@airs.com>
+
+ * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
+ CONTINUE_STMT, SWITCH_STMT.
+ * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
+ BREAK_STMT, CONTINUE_STMT, SWITCH_STMT.
+ (WHILE_COND, WHILE_BODY): Define.
+ (DO_COND, DO_BODY): Define.
+ (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define.
+ (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define.
+ * cp-gimplify.c (enum bc_t): Define.
+ (struct cp_gimplify_ctx, ctxp): Define.
+ (push_context, pop_context): New static functions.
+ (begin_bc_block, finish_bc_block): New static functions.
+ (build_bc_goto): New static function.
+ (gimplify_cp_loop, gimplify_for_stmt): New static functions.
+ (gimplify_while_stmt, gimplify_do_stmt): Likewise.
+ (gimplify_switch_stmt): Likewise.
+ (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
+ SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
+ (cp_genericize): Call push_context and pop_context.
+ * semantics.c (finish_break_stmt): Just call build_stmt
+ (BREAK_STMT) rather than build_break_stmt.
+ (finish_continue_stmt): Corresponding change.
+ * decl.c (pop_switch): Update call to c_do_switch_warnings for new
+ parameters.
+ * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
+ WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT.
+ * dump.c (cp_dump_tree): Likewise.
+
+2005-04-08 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/20905
+ * parser.c (cp_parser_type_specifier_seq): Add is_condition
+ parameter.
+ (cp_parser_new_type_id): Pass it.
+ (cp_parser_condition): Likewise.
+ (cp_parser_conversion_type_id): Likewise.
+ (cp_parser_type_id): Likewise.
+ (cp_parser_type_specifier_seq): In a condition, do not allow
+ invalid type-specifier combinations.
+ (cp_parser_exception_declaration): Adjust call to
+ cp_parser_type_specifier_seq.
+
+ * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
+ * cp-tree.h (struct tinst_level): Add in_system_header_p.
+ (TINST_IN_SYSTEM_HEADER_P): New macro.
+ (make_tinst_level): Remove.
+ * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
+ the instantiated class.
+ (push_tinst_level): Do not use make_tinst_level. Set
+ TINST_IN_SYSTEM_HEADER_P.
+ (pop_tinst_level): Likewise.
+ (instantiate_class_template): Set in_system_header.
+ (instantiate_pending_templates): Likewise.
+ * tree.c (make_tinst_level): Remove.
+
+2005-04-06 Joseph S. Myers <joseph@codesourcery.com>
+
+ * decl.c (start_decl): Apply pending #pragma weak regardless of
+ scope.
+
+2005-04-06 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/20212
+ * pt.c (regenerate_decl_from_template): Copy attributes for
+ parameters from the pattern to the instantiation.
+
+2005-04-05 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/20734
+ * cp-tree.def (OFFSET_REF): Correct comments.
+ * init.c (build_offset_ref): Remove misleading comment.
+ * typeck.c (build_unary_op): Handle pointer-to-member creation
+ here, rather than ...
+ (unary_complex_lvalue): ... here.
+
+2005-04-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/19312
+ * tree.c (stabilize_init): Don't bother trying to stabilize
+ something with no side-effects.
+
+2005-04-05 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/20763
+ * decl.c (grokdeclarator): Correct attribute handling.
+
+2005-04-05 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/19159
+ * decl2.c (import_export_decl): Use non-COMDAT external linkage
+ for virtual tables, typeinfo, etc. that will be emitted in only
+ one translation unit on systems without weak symbols.
+
+2005-04-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/20679
+ * parser.c (cp_parser_template_name): Fix thinko.
+
+2005-04-04 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/20746
+ * method.c (use_thunk): Protect covariant pointer return
+ adjustments from NULL pointers.
+
+2005-04-04 Jan Hubicka <jh@suse.cz>
+
+ * decl2.c (finish_objects): Revert my previous patch.
+ (cp_finish_file): Likewise.
+
+2005-04-03 Kazu Hirata <kazu@cs.umass.edu>
+
+ * pt.c: Fix comment typos.
+
+2005-04-03 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/20723
+ * pt.c (more_specialized_fn): Member functions are unordered wrt
+ non-members. Conversion operators are unordered wrt other
+ functions.
+
+2005-04-01 Nathan Sidwell <nathan@codesourcery.com>
+
+ * call.c (add_template_candidates_real): Remove length parameter
+ from fn_type_unification call.
+ * class.c (resolve_address_of_overloaded_function): Likewise
+ * cp-tree.h (fn_type_unification): Remove length parameter.
+ * pt.c (get_bindings_overload): Remove.
+ (get_bindings_real): Rename to ...
+ (get_bindings): ... here. Remove length and strict
+ parameters. Change return type flag to boolean. Remove original
+ forwarding function.
+ (determine_specialization): Adjust get_bindings call.
+ (fn_type_unification): Remove length parameter. Adjust.
+ (type_unification_real): Remove length parameter. Adjust.
+ (resolve_overloaded_unification): Adjust get_bindings call.
+ (try_one_overload): Simplify confusing cascaded if control flow.
+ (unify): Remove length paramter from type_unification_real call.
+ (most_specialized_instantiation): Adjust get_bindings calls.
+ (most_specialized): Likewise.
+
+2005-03-31 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/19203, implement DR 214
+ * call.c (joust): Use more_specialized_fn.
+ * cp-tree.h (DEDUCE_ORDER): Remove.
+ (more_specialized): Replace with ...
+ (more_specialized_fn): ... this.
+ * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
+ case.
+ (type_unification_real): Remove DEDUCE_ORDER case.
+ (more_specialized): Replace with ...
+ (more_specialized_fn): ... this. Implement DR 214.
+ (most_specialized_instantiation): Use get_bindings_real directly.
+
+2005-03-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR c++/18644
+ * call.c (build_new_op): Remove check for -Wsynth.
+
+2005-03-31 Jan Hubicka <jh@suse.cz>
+
+ * decl2.c (finish_objects): Mark ctor as needed.
+ (cp_finish_file): Output variables only in nonunit-at-a-time.
+
+2005-03-29 Richard Henderson <rth@redhat.com>
+
+ PR c/20519
+ * decl.c (cp_complete_array_type): Rename from complete_array_type.
+ Use the new complete_array_type in c-common.c. Update all callers.
+ * cp-tree.h (cp_complete_array_type): Update to match.
+
+2005-03-24 Geoffrey Keating <geoffk@apple.com>
+
+ * typeck.c (build_static_cast_1): Allow scalar_cast between
+ any integral, floating, or enumeration type.
+
+2005-03-24 Steven Bosscher <stevenb@suse.de>
+
+ * typeck.c (comptypes): First determine if the types are compatible
+ from a target-independent point of view. Check target attributes
+ last.
+
+ * class.c (build_base_path):
+ (build_vbase_offset_vtbl_entries):
+ (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
+ * error.c (dump_expr): Likewise.
+ * init.c (build_zero_init, expand_cleanup_for_base,
+ build_vec_delete_1): Likewise.
+ * mangle.c (write_integer_cst): Likewise.
+ * method.c (thunk_adjust): Likewise.
+ * pt.c (convert_nontype_argument, tsubst, unify): Likewise.
+ * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
+ * typeck.c (build_ptrmemfunc_access_expr,
+ (get_member_function_from_ptrfunc): Likewise.
+
+2005-03-23 Joseph S. Myers <joseph@codesourcery.com>
+
+ * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
+
+2005-03-23 Joseph S. Myers <joseph@codesourcery.com>
+
+ * cp-tree.h (perform_integral_promotions): Remove.
+ (default_conversion): Add.
+
+2005-03-22 Mark Mitchell <mark@codesourcery.com>
+
+ * parser.c (cp_parser_warn_min_max): New function.
+ (cp_parser_binary_expression): Use it.
+ (cp_parser_assignment_operator_opt): Likewise.
+ (cp_parser_operator): Likewise.
+
+2005-03-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/19980
+ * decl.c (start_preparsed_function): Robustify.
+
+2005-03-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/20499
+ * parser.c (cp_parser_class_head): Return NULL_TREE when
+ encountering a redefinition.
+
+2005-03-22 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/20465
+ PR c++/20381
+ * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
+ template.
+
+2005-03-21 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/20461
+ PR c++/20536
+ * init.c (emit_mem_initializers): Don't crash on undefined
+ types.
+
+2005-03-21 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/20147
+ * semantics.c (finish_stmt_expr_expr): Return immediately
+ if error_operand_p (expr).
+
+2005-03-21 Joseph S. Myers <joseph@codesourcery.com>
+
+ * cp-tree.h (lvalue_or_else, lvalue_p): New.
+ * typeck.c (lvalue_or_else): New. Call lvalue_error.
+
+2005-03-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/20240
+ * decl.c (decls_match): Compare context of VAR_DECL.
+
+2005-03-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/20333
+ * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
+ Check the return value of cp_parser_nested_name_specifier.
+
+2005-03-18 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/20463
+ * parser.c (cp_parser_diagnose_invalid_type_name):
+ Check TYPE_BINFO (current_class_type) before attempting
+ to emit inform messages.
+
+2005-03-17 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/19966
+ * cp-tree.h (grok_op_properties): Change return type to void.
+ * decl.c (grok_op_properties): Return early - don't check the
+ arity - in case of a static member or an operator that cannot
+ be non-member; tidy a bit.
+
+2005-03-17 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/20186
+ * pt.c (contains_dependent_cast_p): Remove.
+ (fold_non_dependent_expr): Don't use it.
+ (value_dependent_expression_p): Use a switch statement.
+ reference_exprs can be dependent.
+
+2005-03-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/4403
+ PR c++/9783, DR433
+ * name-lookup.c (pushtag): Skip template parameter scope when
+ scope is ts_global. Don't push tag into template parameter
+ scope.
+ * pt.c (instantiate_class_template): Reorder friend class
+ template substitution to handle non-dependent friend class
+ that hasn't been previously declared.
+
+2005-03-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ Friend class name lookup 5/n
+ PR c++/1016
+ * cp-tree.h (pushtag): Adjust declaration.
+ * decl.c (lookup_and_check_tag): Call lookup_type_scope if
+ lookup_name fails.
+ (xref_tag): Adjust call to pushtag. Make hidden class visible.
+ (start_enum): Adjust call to pushtag.
+ * name-lookup.c (ambiguous_decl): Ignore hidden names.
+ (qualify_lookup): Change return type to bool.
+ (hidden_name_p): New function.
+ (lookup_namespace_name, unqualified_namespace_lookup,
+ lookup_name_real): Use it.
+ (lookup_type_scope): Update comments.
+ (maybe_process_template_type_declaration): Change parameter name
+ from globalize to is_friend.
+ (pushtag): Change globalize parameter of type int to tag_scope.
+ Hide name if introduced by friend declaration.
+ * name-lookup.h (hidden_name_p): Add declaration.
+ * parser.c (cp_parser_lookup_name): Don't deal with hidden name
+ here.
+ * pt.c (push_template_decl_real): Make hidden class template
+ visible.
+ (lookup_template_class, instantiate_class_template): Adjust call
+ to pushtag.
+ * semantics.c (begin_class_definition): Likewise.
+ * rtti.c (init_rtti_processing, build_dynamic_cast_1,
+ tinfo_base_init, emit_support_tinfos): Use ts_current instead of
+ ts_global.
+
+2005-03-13 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/20157
+ * pt.c (determine_specialization): Reject non-specializations.
+
2005-03-11 Per Bothner <per@bothner.com>
* cp-tree.h (struct cp_declarator): New id_loc field.
Add qualifiers when declaring a typedef of a function type.
Member function pointers pick up the qualifiers of the typedef
used to declare them.
- Don't complain about creating cv-qualified function types.
+ Don't complain about creating cv-qualified function types.
Complain about qualified function typedefs that are used to
declare non-static member functions or free functions.
Use cp_apply_type_quals_to_decl.