2003-12-30 Nathan Sidwell PR c++/13507 * decl.c (duplicate_decls): Use build_type_attribute_variant to merge attributes. PR c++/13494 * tree.c (build_cplus_array_type_1): Only build a minimal array type for dependent types or domains. 2003-12-29 Nathan Sidwell PR c++/12774 * typeck.c (comp_array_types): Fold non-dependent domains for ABI-1. 2003-12-29 Kriang Lerdsuwanakij PR c++/13289 * semantics.c (finish_id_expression): Only check if the type of a template argument is integral or enumeration when it is not dependent. 2003-12-29 Kriang Lerdsuwanakij PR c++/12403 * parser.c (cp_parser_template_declaration_after_export): Set up template specialization scope in case of explicit specialization. 2003-12-28 Mark Mitchell PR c++/13081 * decl.c (duplicate_decls): Preserve inline-ness when redeclaring a function template. PR c++/12613 * decl.c (reshape_init): Reject GNU colon-style designated initializers in arrays. PR c++/13009 * call.c (build_special_member_call): Do not assume that we have a pointer to the complete object in an assignment operator. 2003-12-28 Roger Sayle PR c++/13070 * decl.c (duplicate_decls): When setting the type of an anticipated declaration, merge the existing type attributes. 2003-12-25 Andrew Pinski PR c++/13268, c++/13339 * class.c (add_method): Return early when method is error_mark_node. * pt.c (tsubst_friend_function): Return early when new_friend is error_mark_node. 2003-12-23 Mark Mitchell * cp-lang.c (cp_expr_size): Return zero for empty classes. * cp-tree.h (warn_if_uknown_interface): Remove unused function. * decl2.c (warn_if_unknown_interface): Likewise. 2003-12-23 Nathan Sidwell PR c++/13387 * cp-lang.c (cxx_get_alias_set): Correct logic for a base type. 2003-12-22 Mark Mitchell * decl.c (start_function): Do not check flag_alt_external_templates or flag_external_templates. * decl2.c (warn_if_unknown_interface): Likewise. * lex.c (extract_interface_info): Likewise. * pt.c (lookup_template_class): Likewise. PR c++/12862 * name-lookup.c (pushdecl): Look up all namespace-scope entities in their corresponding namespace. PR c++/12397 * typeck.c (finish_class_member_access_expr): Don't tree IDENTIFIER_NODEs as non-dependent expressions. 2003-12-22 Andrew Pinski PR c++/5050 * tree.c (cp_start_inlining): Remove. (cp_end_inlining): Remove. * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Do not define. (LANG_HOOKS_TREE_INLINING_END_INLINING): Do not define. * cp-tree.h (cp_start_inlining): Do not declare. (cp_end_inlining): Do not declare. 2003-12-22 Mark Mitchell PR c++/12479 * parser.c (cp_parser_declaration_seq_opt): Only issue "extra ;" pedwarn when not in a system header. 2003-12-21 Mark Mitchell * cp-tree.h (cp_tree_index): Remove CPTI_RECORD_TYPE, CPTI_UNION_TYPE, CPTI_ENUM_TYPE. (record_type_node): Remove. (union_type_node): Likewise. (enum_type_node): Likewise. * decl.c: Remove mention of above tree nodes in comment. * lex.c (cxx_init): Do not assign to record_type_node, union_type_node, or enum_type_node. Simplify handling of class_type_node. PR c++/11554 * init.c (sort_mem_initializers): Add warning. 2003-12-21 Kazu Hirata * call.c: Fix comment formatting. * class.c: Likewise. * cp-tree.h: Likewise. * cvt.c: Likewise. * cxx-pretty-print.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * error.c: Likewise. * except.c: Likewise. * init.c: Likewise. * name-lookup.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * rtti.c: Likewise. * semantics.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. 2003-12-19 Kazu Hirata * cvt.c: Remove uses of "register" specifier in declarations of arguments and local variables. * decl.c: Likewise. * decl2.c: Likewise. * expr.c: Likewise. * friend.c: Likewise. * lex.c: Likewise. * name-lookup.c: Likewise. * repo.c: Likewise. * search.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. 2003-12-19 Mark Mitchell PR c++/12795 * name-lookup.c (pushdecl): Do not treated any functions as being "nested" in C++. 2003-12-19 Jason Merrill PR c++/13371 * typeck.c (build_modify_expr): Stabilize lhs if we're narrowing. * cvt.c (convert_to_void): Don't warn about the RHS of a comma being useless if TREE_NO_UNUSED_WARNING is set. 2003-12-18 Richard Henderson * cp-tree.h (struct lang_type_header): Remove __extension__. 2003-12-18 Jason Merrill PR c++/12253 * init.c (build_vec_init): Initialization of an element from an initializer list is also a full-expression. * parser.c, pt.c, semantics.c: Rename constant_expression_p to integral_constant_expression_p. 2003-12-18 Kriang Lerdsuwanakij PR c++/13262 * pt.c (instantiate_decl): Wrap push_nested_class and pop_nested_class around cp_finish_decl call for static member variable. 2003-12-18 Giovanni Bajo PR c++/9154 * parser.c (cp_parser_template_argument): A type-id followed by '>>' is just an user typo, and should be accepted as last resort if any other parsing fails. (cp_parser_enclosed_template_argument_list): If the argument list is parsed correctly, but the next token is '>>', emit a diagnostic. (cp_parser_next_token_ends_template_argument): Accept '>>' as delimiter of template argument, it will be later detected as a typo. 2003-12-17 Kelley Cook * Make-lang.in: Replace cp/g++.1 with $(docobjdir)/g++.1. 2003-12-17 Mark Mitchell PR c++/10603 PR c++/12827 * parser.c (cp_parser_error): Help c_parse_error print good messages if the next token is a keyword. (cp_parser_parameter_declaration_list): When resynchronizing after a bad parameter declaration, stop if a comma is found. (cp_parser_parameter_declaration): Avoid backtracking. 2003-12-16 Mark Mitchell PR c++/12696 * decl.c (reshape_init): Recover quickly from errors. 2003-12-16 Nathan Sidwell PR c++/9043 C++ ABI change: Mangling array indices in templates. * decl.c (compute_array_index_type): Reorganize for earlier template errors. Use value_dependent_expression_p for abi-2. * mangle.c (write_array_type): Check broken mangling for expression indices on abi-1 2003-12-16 Mark Mitchell PR c++/12696 * decl.c (reshape_init): Recover quickly from errors. PR c++/13275 * lex.c (reswords): Add "__offsetof" and "__offsetof__". * parser.c (cp_parser): Add in_offsetof_p. (cp_parser_new): Initialize it. (cp_parser_primary_expression): Handle __offsetof__ (...). (cp_parser_postfix_expression): Allow casts to pointer type and uses of "->" in a constant expression if implementing offsetof. (cp_parser_unary_expression): Allow the use of "&" in a constant expression if implementing offsetof. 2003-12-16 Giovanni Bajo PR c++/2294 * name-lookup.c (push_overloaded_decl): always construct an OVERLOAD if the declaration comes from an using declaration. 2003-12-16 Giovanni Bajo * semantics.c (finish_id_expression): Refactor the code to handle template parameters, and emit a more informative error message when they are used within an integral constant expression. 2003-12-16 Nathan Sidwell PR c++/13387 * class.c (finish_struct_1): Compute mode and alias set for CLASSTYPE_AS_BASE. * call.c (build_over_call): Use CLASSTYPE_AS_BASE for trivial assignment of a class, as necessary. * cp-lang.c (cxx_get_alias_set): The alias set as a base is the same as for the complete type. PR c++/13242 C++ ABI change. Mangling template parameters of reference type * mangle.c (write_template_args): Remove unreachable code. (write_template_arg): Look through an argument of reference type. 2003-12-16 Giovanni Bajo PR c++/2294 * name-lookup.c (push_overloaded_decl): always construct an OVERLOAD if the declaration comes from an using declaration. 2003-12-15 Mark Mitchell PR c++/10926 * decl2.c (grokfield): Robustify. PR c++/11116 * parser.c (cp_parser_throw_expression): Determine whether or not an assignment-expression is present by doing one-token lookahead. PR c++/13269 * parser.c (cp_parser_function_definition_after_declarator): Stop scanning tokens when reaching EOF. PR c++/12989 * typeck.c (cxx_sizeof_or_alignof_expr): Robustify. PR c++/13310 * pt.c (dependent_template_p): Handle OVERLOADs. 2003-12-15 Mark Mitchell PR c++/13243 PR c++/12573 * parser.c (cp_parser_postfix_expression): Tighten handling of integral constant expressions. (cp_parser_unary_expression): Likewise. * pt.c (value_dependent_expression_p): Remove handling for COMPONENT_REFs. 2003-12-15 Nathan Sidwell * class.c (add_method): Disallow destructor for java classes. * decl.c (xref_basetypes): Check java class inheritance. * decl2.c (check_java_method): Skip artificial params. PR c++/13241 C++ ABI change. Mangling of symbols in expressions. * mangle.c (write_mangled_name): Add top_level flag. Rework for nested and unnested mangling. Deal with abi version 1 and version 2 differences. (write_expression): Adjust write_mangled_name call. (mangle_decl_string): Use write_mangled_name for all non-type decls. 2003-12-14 Mark Mitchell PR c++/10779 PR c++/12160 * parser.c (struct cp_parser): Add in_template_argument_list_p. (cp_parser_error): Use c_parse_error. (cp_parser_name_lookup_error): New function. (cp_parser_new): Initialize it. (cp_parser_declarator): Add parenthesized_p parameter. (cp_parser_nested_name_specifier_opt): Use cp_parser_name_lookup_error. (cp_parser_parenthesized_expression_list): Improve comments. (cp_parser_condition): Adjust call to cp_parser_declarator. (cp_parser_template_parameter): Adjust call to cp_parser_parameter_declaration. (cp_parser_template_argument_list): Set in_template_argument_list_p. (cp_parser_explicit_instantiation): Adjust call to cp_parser_declarator. (cp_parser_simple_type_specifier): Remove unncessary code. (cp_parser_using_declaration): Use cp_parser_name_lookup_error. (cp_parser_init_declarator): Handle member function definitions. (cp_parser_direct_declarator): Adjust call to cp_parser_declarator. (cp_parser_type_id): Adjust call to cp_parser_declarator. (cp_parser_parameter_declaration_list): Avoid backtracking where possible. (cp_parser_parameter_declaration): Add parenthesized_p parameter. (cp_parser_function_definition): Remove. (cp_parser_member_declaration): Do not backtrack to look for function definitions. (cp_parser_exception_declaration): Adjust call to cp_parser_declarator. (cp_parser_single_declaration): Handle function definitions via cp_parser_init_declarator. (cp_parser_save_member_function_body): New function. 2003-12-14 Kriang Lerdsuwanakij PR c++/13106 * decl.c (finish_function): Check if return type is dependent before issuing no return statement warning. 2003-12-12 Nathan Sidwell PR c++/13118 * cp-tree.h (lang_decl_u): Add thunk_alias member. (THUNK_VIRTUAL_OFFSET): Must be a FUNCTION_DECL. (THUNK_ALIAS_P): Remove. (THUNK_ALIAS): Adjust. * class.c (update_vtable_entry_for_fn): Get the vbase within the overriding function's return type. (dump_thunk): Adjust THUNK_ALIAS printing. (build_vtbl_initializer): Adjust THUNK_ALIAS use. * method.c (make_thunk): Revert 12881 test change. Clear THUNK_ALIAS. (finish_thunk): Adjust THUNK_ALIAS setting. (use_thunk): Adjust THUNK_ALIAS use. * semantics.c (emit_associated_thunks): Likewise. PR c++/13114, c++/13115 * class.c (layout_empty_base): Propagate the move of an empty base to offset zero. PR c++/12881 * method.c (make_thunk): Deal with thunk aliases when searching for a thunk. Robustify assertion. 2003-12-11 Nathan Sidwell * mangle.c (conv_type_names): Holds IDENTIFIER_NODEs only. (hash_type): Use TYPE_UID of the identifier's type. (compare_type): Adjust. (mangle_conv_op_name_for_type): Store identifier nodes only, use TYPE_UID has hash value. 2003-12-10 Mark Mitchell * cp-tree.h (DECL_CONV_FN_P): Check that DECL_NAME is non-NULL. 2003-12-08 Matt Austern PR c/13134 * decl.c (duplicate_decls): Copy visibility flag when appropriate. 2003-12-09 Giovanni Bajo * init.c (build_new_1): Deal with an OVERLOAD set when looking up for _Jv_AllocObject. * except.c (build_throw): Likewise for _Jv_Throw. 2003-12-08 Jason Merrill PR c++/11971 * tree.c (build_local_temp): Split out from build_cplus_new. (force_target_expr): New fn. * call.c (call_builtin_trap): Call it. Take a type parm. (convert_arg_to_ellipsis): Pass it. (build_x_va_arg): Use call_builtin_trap. PR c++/11929 * call.c (magic_varargs_p): New fn. (build_over_call): Do no ellipsis conversions for arguments to functions with magic varargs. * name-lookup.c, init.c, except.c: Revert Giovanni's patch from yesterday. Give the anonymous namespace a null DECL_NAME. * cp-tree.h: Don't declare anonymous_namespace_name. * decl.c: Don't define it. * dump.c (cp_dump_tree): Don't check for it. * cxx-pretty-print.c (pp_cxx_original_namespace_definition): Likewise. * error.c (dump_decl): Likewise. * name-lookup.c: Define it here. (push_namespace): Put it in DECL_ASSEMBLER_NAME instead. * mangle.c (write_unqualified_name): Adjust. 2003-12-07 Giovanni Bajo PR c++/2294 * name-lookup.c (push_overloaded_decl): Always construct an OVERLOAD unless the declaration is a built-in. (set_namespace_binding): While binding OVERLOADs with only one declaration, we still need to call supplement_binding. * init.c (build_new_1): Deal with an OVERLOAD set when looking up for _Jv_AllocObject. * except.c (build_throw): Likewise for _Jv_Throw. 2003-12-06 Mark Mitchell PR c++/13323 * class.c (same_signature_p): Handle conversion operators correctly. (check_for_override): Likewise. 2003-12-06 Kelley Cook * Make-lang.in (GXX_CROSS_NAME, CXX_CROSS_NAME): Delete. (c++.install_common, cp/g++.1, c++.install-man): Adjust for above. (c++.uninstall): Likewise. 2003-12-05 Danny Smith Mark Mitchell PR c++/13305 * parser.c (cp_parser_elaborated_type_specifier): Accept attributes. 2003-12-05 Mark Mitchell PR c++/13314 * parser.c (cp_parser_class_specifier): Match push_scope/pop_scope calls. (cp_parser_class_head): Likewise. 2003-12-05 Kriang Lerdsuwanakij PR c++/13166 * parser.c (cp_parser_late_parsing_default_args): Make sure the context is a class before calling push_nested_class and pop_nested_class. 2003-12-03 James E Wilson * g++spec.c (lang_specific_driver): Delete USE_LIBUNWIND_EXCEPTIONS support. 2003-12-03 Mark Mitchell PR c++/9127 * cp-tree.h (at_namespace_scope_p): New function. * parser.c (cp_parser_class_head): Handle invalid explicit specializations. * search.c (at_namespace_scope_p): New function. PR c++/13179 * semantics.c (finish_handler_parms): Do not call eh_type_info for types used in templates. PR c++/10771 * parser.c (cp_parser_check_for_invalid_template_id): New function. (cp_parser_simple_type_specifier): Use it. (cp_parser_elaborated_type_specifier): Likewise. (cp_parser_class_head): Likewise. 2003-12-02 Giovanni Bajo PR c++/10126 * pt.c (convert_nontype_argument): Handle default conversions while converting a pointer to member function. 2003-12-02 Giovanni Bajo PR c++/12573 * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by looking into them recursively. 2003-12-02 Richard Henderson * name-lookup.h (struct cp_binding_level): Use ENUM_BITFIELD. * parser.c (struct cp_token): Likewise. (struct cp_parser_token_tree_map_node): Likewise. * lex.c (struct resword): Move const after ENUM_BITFIELD. 2003-11-30 Mark Mitchell PR c++/9849 * parser.c (cp_lexer_prev_token): New function. (cp_parser_skip_to_closing_parenthesis): Add consume_paren parameter. (cp_parser_nested_name_specifier_opt): Add is_declaration parameter. (cp_parser_nested_name_specifier): Likewise. (cp_parser_class_or_namespace_name): Likewise. (cp_parser_class_name): Likewise. (cp_parser_template_id): Likewise. (cp_parser_template_name): Likewise. (cp_parser_id_expression): Adjust calls to cp_parser_nested_name_specifier_op, cp_parser_template_id, cp_parser_class_name. (cp_parser_unqualified_id): Likewise. (cp_parser_postfix_expression): Likewise. (cp_parser_pseudo_destructor_name): Likewise. (cp_parser_cast_expression): Likewise. (cp_parser_mem_initializer_id): Likewise. (cp_parser_simple_type_specifier): Likewise. (cp_parser_type_name): Likewise. (cp_parser_elaborated_type_specifier): Likewise. (cp_parser_qualified_namespace_specifier): Likewise. (cp_parser_using_declaration): Likewise. (cp_parser_using_directive): Likewise. (cp_parser_ptr_operator): Likewise. (cp_parser_declarator_id): Likewise. (cp_parser_class_head): Likewise. (cp_parser_base_specifier): Likewise. (cp_parser_constructor_declarator_p): Likewise. (cp_parser_direct_declarator): Fix typo in comment. (cp_parser_parenthesized_expression_list): Adjust call to cp_parser_skip_to_closing_parenthesis. (cp_parser_selection_statement): Likewise. 2003-11-23 Kriang Lerdsuwanakij PR c++/12924 * typeck.c (finish_class_member_access_expr): Handle TEMPLATE_ID_EXPR with OVERLOAD and DECL nodes as the first operand. 2003-11-22 Kriang Lerdsuwanakij * pt.c (tsubst) : Remove erroneous argument to build_nt. 2003-11-22 Kriang Lerdsuwanakij PR c++/5369 * friend.c (is_friend): Handle member function of a class template as template friend. (do_friend): Likewise. * decl2.c (check_classfn): Add template_header_p parameter. * decl.c (start_decl): Adjust check_classfn call. (grokfndecl): Likewise. * pt.c (is_specialization_of_friend): New function. (uses_template_parms_level): Likewise. (push_template_decl_real): Use uses_template_parms_level. (tsubst_friend_function): Adjust check_classfn call. * cp-tree.h (check_classfn): Adjust declaration. (uses_template_parms_level): Add declaration. (is_specialization_of_friend): Likewise. 2003-11-21 Mark Mitchell PR c++/12515 * pt.c (build_non_dependent_expr): Handle GNU extension to ?: operator. 2003-11-21 Jan Hubicka * parser.c (cp_parser_postfix_expression): Initialize 's' to NULL_TREE. 2003-11-20 Joseph S. Myers * Make-lang.in (c++.extraclean): Delete. 2003-11-20 Joseph S. Myers * Make-lang.in (check-g++, lang_checks): Add. 2003-11-18 Kriang Lerdsuwanakij PR c++/12932 * class.c (currently_open_derived_class): Check if current_class_type is NULL_TREE. * semantics.c (finish_call_expr): Check if currently_open_derived_class returns NULL_TREE. * cp-tree.h (DERIVED_FROM_P): Add parenthesis around PARENT parameter. 2003-11-17 Jason Merrill * init.c (build_new_1): Preevaluate placement args. * call.c (build_op_delete_call): Don't expose placement args to overload resolution. 2003-11-16 Jason Merrill * Make-lang.in (c++.tags): Create TAGS.sub files in each directory and TAGS files that include them for each front end. 2003-11-15 Bernardo Innocenti PR c++/2294 * name-lookup.c: Revert previous patch for PR c++/2294 to prevent build failure on libjava. 2003-11-14 Giovanni Bajo PR c++/2294 * name-lookup.c (push_overloaded_decl): Always construct an OVERLOAD unless the declaration is a built-in. (set_namespace_binding): While binding OVERLOADs with only one declaration, we still need to call supplement_binding. 2003-11-14 Mark Mitchell PR c++/12762 * parser.c (cp_parser_enclosed_template_argument_list): New function. (cp_parser_template_id): Use it. (cp_parser_simple_type_specifier): Recognize invalid template syntax. 2003-11-14 Giovanni Bajo PR c++/2094 * pt.c (unify): Add support for PTRMEM_CST and FIELD_DECL unification. 2003-11-13 Richard Earnshaw * decl.c (grokfndecl): Change OK to type tree. 2003-11-12 Mark Mitchell * tree.c (build_target_expr_with_type): Treate VA_ARG_EXPR like CONSTRUCTOR. * decl.c (cp_make_fname_decl): When creating a top-level __FUNCTION__-like symbol, do register it with pushdecl. * decl.c (finish_case_label): Do not check that we are within a switch statement here. * parser.c (struct cp_parser): Add in_iteration_statement_p and in_switch_statement_p. (cp_parser_new): Initialize them. (cp_parser_labeled_statement): Check validity of case labels here. (cp_parser_selection_statement): Set in_switch_statement_p. (cp_parser_iteration_statement): Set in_iteration_statement_p. (cp_parser_jump_statement): Check validity of break/continue statements here. PR c++/12735 * cp-tree.h (duplicate_decls): Return a tree. * decl.c (duplicate_decls): Clarify documentation. Return error_mark_node to indicate a failed redeclaration. * friend.c (do_friend): Handle that case. * name-lookup.c (pushdecl): Likewise. 2003-11-11 Jason Merrill * cp-tree.h (DECL_NAMESPACE_ASSOCIATIONS): New macro. * name-lookup.c (parse_using_directive): New fn. (is_associated_namespace): New fn. (arg_assoc_namespace): Also check associated namespaces. * name-lookup.h: Declare new fns. * pt.c (maybe_process_partial_specialization): Allow specialization in associated namespace. * parser.c (cp_parser_using_directive): Accept attributes. Use parse_using_directive. 2003-11-10 Richard Henderson * cvt.c (convert_to_void): Use void_zero_node after overload failure. 2003-11-10 Gabriel Dos Reis PR c++/12832 * name-lookup.c (supplement_binding): Gracefully handle names used at non-class scope prior declaration. 2003-11-06 Matt Austern * decl.c (duplicate_decls): copy DECL_VISIBILITY field. * method.c (use_thunk): give thunk same visibility as function. * optimize.c (maybe_clone_body): copy DECL_VISIBILITY field. 2003-11-05 Kriang Lerdsuwanakij PR c++/11616 * pt.c (instantiate_pending_templates): Save and restore input_location. 2003-11-05 Kriang Lerdsuwanakij PR c++/2019 * friend.c (add_friend): Don't display previous declaration in case of duplicate friend warning. 2003-11-02 Kriang Lerdsuwanakij PR c++/9810 * call.c (build_over_call): Check access using primary template if FN is a member function template. 2003-11-01 Kriang Lerdsuwanakij PR c++/12796 * class.c (handle_using_decl): Set input_location before calling error_not_base_type. 2003-10-26 Kriang Lerdsuwanakij PR c++/10371 * semantics.c (finish_non_static_data_member): Handle when both processing_template_decl and qualifying_scope are true. 2003-10-24 Kriang Lerdsuwanakij PR c++/11076 * class.c (handle_using_decl): Swap arguments of error_not_base_type. * parser.c (cp_parser_direct_declarator): Only resolve typename for namespace scope declarations. 2003-10-24 Nathan Sidwell PR c++/12698, c++/12699, c++/12700, c++/12566 * cp-tree.h (THUNK_ALIAS_P, THUNK_ALIAS): New. (debug_class, debug_thunks): New. * class.c (dump_class_hierarchy_1): New break out from ... (dump_class_hierarchy): ... here. (dump_thunk, debug_thunks, debug_class): New. (update_vtable_entry_for_fn): Add ssizetype casts. Correct continued search for primary binfo via virtual. (build_vtbl_initializer): Follow covariant thunk alias. * method.c (make_thunk): Clear DECL_THUNKS of the thunk. (finish_thunk): Look for an alias of the covariant thunk and point to it. (use_thunk): We should never use an alias. * semantics.c (emit_associated_thunks): Do not emit aliases. PR c++/12566 * cp-tree.h (cp_fname_init): Add TYPE pointer param. * decl.c (cp_fname_init): Add TYPE pointer param. Set it. Don't create an ad-hoc ERROR_MARK. (cp_make_fname_decl): Adjust. * pt.c (tsubst_expr): Adjust. 2003-10-23 Jason Merrill PR c++/12726 * tree.c (build_target_expr_with_type): Don't call force_rvalue for CONSTRUCTORs. 2003-10-22 Kazu Hirata * call.c: Fix comment formatting. * class.c: Likewise. * cxx-pretty-print.c: Likewise. * init.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. 2003-10-21 Mark Mitchell PR c++/11962 * typeck.c (build_x_conditional_expr): Handle missing middle operands in templates. * mangle.c (write_expression): Issue errors about attempts to mangle a non-existant middle operator to the ?: operator. 2003-10-21 Robert Bowdidge * decl.c (cp_finish_decl): Remove clause intended for asm directives in struct or class fields: this code is never executed. 2003-10-22 Kriang Lerdsuwanakij * decl.c (start_decl): Exit if push_template_decl returns error_mark_node. 2003-10-20 Kazu Hirata * ChangeLog: Fix typos. * call.c: Fix comment typos. * class.c: Likewise. * cp-tree.h: Likewise. * cvt.c: Likewise. * cxx-pretty-print.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * init.c: Likewise. * mangle.c: Likewise. * name-lookup.c: Likewise. * parser.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. 2003-10-20 Jan Hubicka * decl.c (start_cleanup_fn): Set DECL_DECLARED_INLINE_P to deffer the expansion. 2003-10-20 Mark Mitchell * Make-lang.in (c++.install-info): Remove. 2003-10-20 Jason Merrill * class.c (layout_class_type): Set DECL_ARTIFICIAL on padding field. 2003-10-20 Kriang Lerdsuwanakij PR c++/9781, c++/10583, c++/11862 * decl.c (cp_finish_decl): Exit immediately if decl is an error_mark_node. * pt.c (push_template_decl_real): Return error_mark_node for invalid template declaration of variable. 2003-10-18 Kriang Lerdsuwanakij PR c++/12495 * pt.c (lookup_template_class): Handle when current_class_type is a local class. 2003-10-17 Kriang Lerdsuwanakij PR c++/2513 * decl.c (make_typename_type): Use dependent_type_p. (make_unbound_class_template): Likewise. * pt.c (instantiate_class_template): Increment processing_template_decl during substitution of template friend function. Preincrement processing_template_decl rather than postincrement. (get_mostly_instantiated_function_type): Increment processing_template_decl during partial substitution of function type. 2003-10-15 Jan Hubicka PR c++/12574 * decl2.c (cxx_callgraph_analyze_expr): Deal with baselink. 2003-10-14 Jason Merrill PR c++/11878 * tree.c (build_target_expr_with_type): Call force_rvalue for classes with non-trivial copy ctors. PR c++/11063 * typeck.c (build_modify_expr): Call convert rather than abort. 2003-10-14 Gabriel Dos Reis Breack out decl.c (3/n) * name-lookup.c: Include flags.h (lookup_name_current_level): Make static. (add_decl_to_level): Likewise. (push_local_binding): Likewise. (push_overloaded_decl): Likewise. (lookup_using_namespace): Likewise. (qualified_lookup_using_namespace): Likewise. (lookup_type_current_level): Likewise. (unqualified_namespace_lookup): Likewise. (namespace_ancestor): Likewise. (push_using_directive): Likewise. * decl.c (pushdecl): Move to name-lookup.c. (pushdecl_top_level_1): Likewise. (pushdecl_top_level): Likewise. (pushdecl_top_level_and_finish): Likewise. (maybe_push_decl): Likewise. (push_using_decl): Likewise. (push_overloaded_decl): Likewise. (make_anon_name): Likewise. (anon_cnt): Likewise. (clear_anon_tags): Likewise. (maybe_inject_for_scope_var): Likewise. (check_for_out_of_scope_variable): Likewise. * Make-lang.in (cp/name-lookup.o): Depend on flags.h. * decl.c (warn_extern_redeclared_static): Export. * cp-tree.h (warn_extern_redeclared_static): Declare. 2003-10-14 Nathanael Nerode * Make-lang.in: Replace uses of $(target_alias) with $(target_noncanonical). 2003-10-13 Volker Reichelt * ChangeLog: Add PR number to patch for PR c++/12370. 2003-10-13 Gabriel Dos Reis * name-lookup.h (cxx_scope_find_binding_for_name): Don't export. (binding_for_name): Likewise. (cxx_binding_clear): Move to name-lookup.c. * name-lookup.c (cxx_scope_find_binding_for_name): Now static. (binding_for_name): Likewise. * decl2.c (is_ancestor): Move to name-lookup.c (namespace_ancestor): Likewise. (add_using_namespace): Likewise. (ambiguous_decl): Likewise. (lookup_using_namespace): Likewise. (qualified_lookup_using_namespace): Likewise. (set_decl_namespace): Likewise. (decl_namespace): Likewise. (current_decl_namespace): Likewise. (push_decl_namespace): Likewise. (pop_decl_namespace): Likewise. (push_scope): Likewise. (pop_scope): Likewise. (struct arg_lookup): Likewise. (arg_assoc): Likewise. (arg_assoc_args): Likewise. (arg_assoc_type): Likewise. (add_function): Likewise. (arg_assoc_namespace): Likewise. (arg_assoc_class): Likewise. (arg_assoc_template_arg): Likewise. (do_namespace_alias): Likewise. (validate_nonmember_using_decl): Likewise. (do_nonmember_using_decl): Likewise. (do_toplevel_using_decl): Likewise. (do_local_using_decl): Likewise. (do_class_using_decl): Likewise. (do_using_directive): Likewise. (constructor_name_full): Likewise. (constructor_name): Likewise. (constructor_name_p): Likewise. 2003-10-13 Gabriel Dos Reis Break out decl.c (2/n) * name-lookup.c: Include diagnostic.h (cxx_binding_free): Make static. (cxx_binding_make): Likewise. (binding_table_new): Likewise (binding_table_free): Likewise. (binding_table_insert): Likewise. (binding_table_find_anon_type): Likewise. (binding_table_reverse_maybe_remap): Likewise. (supplement_binding): Likewise. * name-lookup.h (global_scope_name): Declare extern. (global_type_node): Likewise. (cxx_binding_free): Don't export. (cxx_binding_make): Likewise. (binding_table_new): Likewise. (binding_table_free): Likewise. (binding_table_insert): Likewise. (binding_table_find_anon_type): Likewise. (binding_table_reverse_maybe_remap): Likewise. * Make-lang.in (cp/name-lookup.o): Depend on $(DIAGNOSTIC_H) * decl.c (lookup_namespace_name): Move to name-lookup.c (select_decl): Likewise. (unqualified_namespace_lookup): Likewise. (lookup_qualified_name): Likewise. (lookup_name_real): Likewise. (lookup_name_nonclass): Likewise. (lookup_function_nonclass): Likewise. (lookup_name): Likewise. (lookup_name_current_level): Likewise. (lookup_type_current_level): Likewise. (lookup_flags): Likewise. (qualify_lookup): Likewise. (lookup_tag): Likewise. (lookup_tag_reverse): Likewise. (getdecls): Likewise. (storedecls): Remove. (cxx_remember_type_decls): Move to name-lookup.c. (global_bindings_p): Likewise. (innermost_nonclass_level): Likewise. (toplevel_bindings_p): Likewise. (namespace_bindings_p): Likewise. (kept_level_p): Likewise. (innermost_scope_kind): Likewise. (template_parm_scope_p): Likewise. (push_binding): Likewise. (push_local_binding): Likewise. (add_decl_to_level): Likewise. Make extern. (push_class_binding): Move to name-lookup.c. (resume_level): Likewise. Rename to resume_scope. (begin_scope): Move to name-lookup.c. (indent): Likewise. (binding_depth): Likewise. (is_class_level): Likewise. (cxx_scope_descriptor): Likewise. (cxx_scope_debug): Likewise. (namespace_scope_ht_size): Likewise. (leave_scope): Likewise. (pushlevel_class): Likewise. (poplevel_class): Likewise. (clear_identifier_class_values): Likewise. (pushdecl_with_scope): Likewise. (pushdecl_namespace_level): Likewise. (pushdecl_class_level): Likewise. (push_class_level_binding): Likewise. (push_using_directive): Likewise. (identifier_global_value): Likewise. (keep_next_level_flag): Likewise. (keep_next_level): Likewise. (free_binding_level): Likewise. (set_class_shadows): Likewise. (maybe_push_cleanup_level): Likewise. (cp_namespace_decls): Likewise. (bt_print_entry): Likewise. (print_binding_level): Likewise. (print_other_binding_stack): Likewise. (print_binding_stack): Likewise. (push_namespace): Likewise. (pop_namespace): Likewise. (push_nested_namespace): Likewise. (pop_nested_namespace): Likewise. (cxx_saved_binding_make): Likewise. (struct cxx_saved_binding_make): Likewise. (store_bindings): Likewise. (maybe_push_to_top_level): Likewise. (push_to_top_level): Likewise. (pop_from_top_level): Likewise. (identifier_type_value): Likewise. (set_identifier_type_value): Likewise. (set_identifier_type_value_with_scope): Likewise. (pop_everything): Likewise. (pushtag): Likewise. (follow_tag_typedef): Likewise. (maybe_process_template_type_declaration): Likewise. (pop_binding): Likewise. * cp-tree.h: Move corresponding declarations to name-lookup.h 2003-10-12 Steven Bosscher * cvt.c (ocp_convert): Move warning to C common code. 2003-10-09 Jason Merrill PR c++/6392 * tree.c (build_cplus_array_type): Handle all quals the same. (cp_build_qualified_type_real): Look through arrays first. * tree.c (build_cplus_new): Use build_decl to create a VAR_DECL. (build_target_expr_with_type): Likewise. * pt.c (instantiate_class_template): Sanity check that our enclosing class has been instantiated. 2003-10-08 Giovanni Bajo * cp_tree.h: Added TFF_NO_FUNCTION_ARGUMENTS. * error.c (dump_function_decl): Use it to skip the dump of the arguments. (dump_expr): When dumping a declaration found within an expression, always set TFF_NO_FUNCTION_ARGUMENTS in the flags. 2003-10-08 Giovanni Bajo PR c++/11097 * pt.c (tsubst_decl): Substitute also the DECL_NAME node of USING_DECL. 2003-10-06 Mark Mitchell PR c++/10147 * call.c (initialize_reference): Tweak error message. * cxx-pretty-print.h (cxx_pretty_printer_flags): Remove pp_cxx_flag_qualified_id and pp_cxx_flag_global_scope. * cxx-pretty-print.c (pp_cxx_id_expression): Always display qualified entities using qualified names. PR c++/12337 * init.c (build_new_1): Make sure that the expression returned is not an lvalue. PR c++/12344, c++/12236, c++/8656 * decl.c (start_function): Do not ignore attributes embedded in a function declarator. 2003-10-06 Mark Mitchell * Make-lang.in (c++.info): Remove. (c++.dvi): Remove. (c++.generated-manpages): Replace with ... (generated-manpages): ... this. 2003-10-03 Gabriel Dos Reis * decl.c (struct cp_binding_level): Move to name-lookup.h (current_binding_level): Likewise. (class_binding_level): Likewise. * cp-tree.h (enum scope_kind): Likewise. 2003-10-03 Gabriel Dos Reis * name-lookup.c (binding_entry_free): Nullify name and type fields. 2003-10-02 Mark Mitchell PR c++/12486 * typeck.c (finish_class_member_access_expr): Issue diagnostic on erroneous use of qualified name. 2003-09-30 Richard Henderson PR c++/12370 * decl.c (duplicate_decls): Copy DECL_SAVED_INSNS too. 2003-09-30 Kelley Cook * g++spec.c: Convert to ISO C90 prototypes. * parser.c: Likewise. 2003-09-30 Gabriel Dos Reis * decl.c (pop_binding): Don't mess with nullifying binding->scope here. * name-lookup.c: Re-format. (cxx_binding_free): Nullify binding->scope. 2003-09-29 Jan Hubicka PR C++/12047 * except.c (build_eh_type_type): Call mark_used on the type. 2003-09-28 Richard Henderson * typeck.c (c_expand_asm_operands): Take location_t, instead of individual file and line. 2003-09-28 Andreas Jaeger * decl.c (cxx_builtin_type_decls): Convert to ISO C90 function definition. * init.c (push_base_cleanups): Likewise. * decl2.c (finish_file): Likewise. * mangle.c (init_mangle): Likewise. (dump_substitution_candidates): Likewise. * search.c: Likewise. 2003-09-27 Gabriel Dos Reis * name-lookup.h (get_global_value_if_present): New function. (is_typename_at_global_scope): Likewise. * except.c (do_begin_catch): Use get_global_value_if_present. (do_end_catch): Likewise. (do_allocate_exception): Likewise. (do_free_exception): Likewise. (build_throw): Likewise. * parser.c (cp_parser_member_declaration): Likewise. * rtti.c (throw_bad_cast): Likewise. (throw_bad_typeid): Likewise. * decl.c (check_tag_decl): Use is_typename_at_global_scope. (grokdeclarator): Likewise. * cp-tree.h (global_namespace): Move to name-lookup.h * call.c (call_builtin_trap): Tidy. 2003-09-27 Kriang Lerdsuwanakij PR c++/11415 * parser.c (cp_parser_nested_name_specifier_opt): Issue correct error message when parser->scope is global_namespace. 2003-09-27 Gabriel Dos Reis * cp-tree.h, name-lookup.h, decl.c, decl2.c: Remove reference to macros BINDING_SCOPE, BINDING_VALUE and BINDING_TYPE. 2003-09-26 Gabriel Dos Reis * decl.c (pop_binding_level, suspend_binding_level, find_class_binding_level): Merge into leave_scope. Remove. (leave_scope): New function. (poplevel): Update. (poplevel_class): Likewise. (pop_namespace): Likewise. 2003-09-25 Kriang Lerdsuwanakij PR c++/5655 * parser.c (cp_parser_check_access_in_redeclaration): New function. (cp_parser_member_declaration): Use it. (cp_parser_template_declaration_after_export): Likewise. 2003-09-22 Gabriel Dos Reis * cp-tree.h (scope_kind): Add new enumerator. (keep_next_level): Change parameter type to bool. (begin_scope): Change prototype. (pushlevel): Remove declaration. * decl.c (push_binding_level): Fold in begin_scope. Remove. (struct cp_binding_level): Remove tag_tranparent field. Make keep of bitsize one. (keep_next_level_flag): Make a bool. (cxx_scope_descriptor): Update scope names table (make_cxx_scope): Fold in begin_scope. Remove.. (namespace_scope_ht_size): New function. (begin_scope): Change prototype. Return a scope. Tidy. (kept_level_p): Update. (pushlevel): Remove. (maybe_push_cleanup_level): Simplify. (poplevel): Update for sk_cleanup and keep change. (print_binding_level): Likewise. (initial_push_namespace_scope): Fold in begin_scope. Remove. (push_namespace): Update. (pushtag): Likewise. (lookup_tag): Likewise. (lookup_name_current_level): Likewise. (lookup_type_current_level): Likewise. (cxx_init_decl_processing): Likewise. (start_function): Likewise. (begin_function_body): Likewise. (start_method): Likewise. * pt.c (push_inline_template_parms_recursive): Likewise. (begin_template_parm_list): Likewise. (begin_specialization): Likewise. * semantics.c (do_pushlevel): Likewise. (begin_compound_stmt): Likewise. (begin_stmt_expr): Likewise. 2003-09-21 Richard Henderson * class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c, method.c, optimize.c, pt.c, semantics.c, tree.c: Revert. 2003-09-21 Richard Henderson * class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c, method.c, optimize.c, pt.c, semantics.c, tree.c: Update for DECL_SOURCE_LOCATION rename and change to const. 2003-09-20 Richard Henderson * decl.c, decl2.c, pt.c: Use %J in diagnostics. 2003-09-20 Kriang Lerdsuwanakij PR c++/157 * parser.c (cp_parser_direct_declarator): Clear parser->num_template_parameter_lists when parsing function parameters. (cp_parser_constructor_declarator_p): Likewise. 2003-09-19 Kriang Lerdsuwanakij PR c++/495 * pt.c (tsubst_friend_class): Only use innermost template arguments for the injected friend class template. 2003-09-19 Nathan Sidwell PR c++/12332 * pt.c (instantiate_class_template): Increment processing_template_decl around the tsubst of a template member function. 2003-09-19 Gabriel Dos Reis * decl.c (cxx_scope_descriptor): Fix thinko. (struct cp_binding_level): Adjust type of binding_depth field. 2003-09-18 Danny Smith PR c++/12320 * call.c (type_passed_as): Check for incomplete type. (convert_for_arg_passing): Likewise. 2003-09-18 Nathan Sidwell PR c++/9848 * optimize.c (maybe_clone_body): Don't set MARK_USED on parameters here. * semantics.c (expand_body): Set it here on the remaining clones. 2003-09-18 Roger Sayle * lex.c (init_operators): Remove operator_name_info for FFS_EXPR. * class.c (instantiate_type): Remove FFS_EXPR case. 2003-09-18 Volker Reichelt * ChangeLog: Fix recent commit. 2003-09-18 Volker Reichelt * ChangeLog: Add PR number to patch for PR c++/12316. 2003-09-18 Gabriel Dos Reis * error.c (dump_type): Simplify. Use pp_type_specifier_seq for "C" types. * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Fix thinko. 2003-09-17 Richard Henderson * semantics.c (expand_body): Don't save/restore input_location. 2003-09-17 Mark Mitchell PR c++/12266 * cp-tree.h (tsubst_flags_t): Add tf_conv. * class.c (standard_conversion): Pass tf_conv to instantiate_type. (resolve_address_of_overloaded_function): Do not call mark_used when just checking conversions. PR debug/12066 * cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define. * cp-tree.h (cxx_builtin_type_decls): Declare. * decl.c (builtin_type_decls): New variables. (cxx_builtin_type_decls): New function. (record_builtin_type): Add to builtin_type_decls. 2003-09-17 Richard Henderson PR c++/12316 * semantics.c (expand_or_defer_fn): Inc/dec function_depth. 2003-09-16 Kriang Lerdsuwanakij PR c++/7939 * typeck.c (comptypes): Don't ICE when its first argument is error_mark_node. (compparms): Reverse the arguments of same_type_p. 2003-09-15 Nathan Sidwell PR c++/12184 * typeck.c (convert_arguments): Return error_mark_node for an incomplete parameter. Make error message more informative. 2003-09-12 Mark Mitchell PR c++/3907 * class.c (maybe_note_name_used_in_class): Refine test for whether or not we are in a class scope. * cp-tree.h (language_function): Remove x_expanding_p. (expanding_p): Remove. (doing_semantic_analysis_p): Remove. (scope_kind): Add sk_function_parms, sk_class, sk_namespace. (innermost_scope_kind): New method. * call.c (cxx_type_promotes_to): Use type_decays_to. * cp-lang.c (LANG_HOOKS_PUSHLEVEL): Redefine. (LANG_HOOKS_POPLEVEL): Likewise. * decl.c (cp_binding_level): Remove parm_flag, template_parms_p, template_spec_p, namespace_p, is_for_scope, is_try_scope, and is_catch_scope. Add kind and explicit_spec_p. (cxx_scope_descriptor): Use a lookup table. (find_class_binding_level): Use "kind" field in binding_level, not the various flags. (pop_binding_level): Likewise. (innermost_nonclass_level): Likewise. (toplevel_bindings_p): Likewise. (namespace_bindings_p): Likewise. (template_parm_scope_p): Likewise. (innermost_scope_kind): New method. (current_tmpl_spec_kind): Use "kind" field in binding_level, not the various flags. (pushlevel): Remove check for doing_semantic_analysis_p. (begin_scope): Simplify. (add_decl_to_level): Use "kind" field in binding_level, not the various flags. (push_local_binding): Likewise. (pop_label): Remove check for doing_semantic_analysis_p. (poplevel): Use "kind" field in binding_level, not the various flags. (set_block): Remove check for doing_semantic_analysis_p. (pushlevel_class): Use "kind" field in binding_level, not the various flags. (poplevel_class): Likewise. (initial_push_namespace_scope): Likewise. (maybe_push_to_top_level): Likewise. (set_identifier_type_value_with_scope): Likewise. (pop_everything): Likewise. (maybe_process_template_type_declaration): Likewise. (pushtag): Likewise. (pushdecl): Likewise. (pushdecl_with_scope): Likewise. (check_previous_goto_1): Likewise. (define_label): Likewise. (finish_case_label): Likewise. (lookup_tag): Likewise. (unqualified_namespace_lookup): Likewise. (lookup_name_real): Likewise. (lookup_name_current_level): Likewise. (lookup_type_current_level): Likewise. (record_builtin_type): Likewise. (cp_make_fname_decl): Likewise. (maybe_inject_for_scope_var): Likewise. (cp_finish_decl): Remove check for doing_semantic_analysis_p. (start_function): Use begin_scope, not pushlevel. (finish_function): Use "kind" field in binding_level, not the various flags. (start_method): Use begin_scope, not pushlevel. (make_label_decl): Do not check expanding_p. (save_function-data): Do not set expanding_p. (cxx_push_function_context): Do not clear expanding_p. * semantics.c (cxx_expand_function_start): Do not set expanding_p. 2003-09-14 Mark Mitchell * class.c (layout_class_type): Make DECL_MODE match TYPE_MODE for an bit-field whose width exceeds that of its type. 2003-09-14 Geoffrey Keating * rtti.c (get_tinfo_decl): Set TREE_PUBLIC for typeinfo decls. 2003-09-14 Kazu Hirata * ChangeLog: Follow spelling conventions. * parser.c: Likewise. 2003-09-13 Richard Henderson * decl2.c (finish_file): Check cgraph_assemble_pending_functions during relaxation loop. 2003-09-11 David Edelsohn * decl2.c (var_finalized_p): Swap arms of conditional. 2003-09-10 Nathan Sidwell PR c++/11788 * typeck.c (build_address): If it is a function, mark it used. (build_unary_op): Do not lose object's side-effects when taking address of static member function. * class.c (resolve_address_of_overloaded_function): Use tsubst_flags_t parameter. Only expect overload sets. Adjust. (instantiate_type): Adjust flags passing. Do not lose object's side-effects when taking address of static member function. 2003-09-11 Richard Henderson * semantics.c (expand_or_defer_fn): Update for new cgraph_finalize_function argument. 2003-09-10 Richard Henderson * decl2.c (cxx_callgraph_analyze_expr): Mark argument unused. 2003-09-10 Jan Hubicka * decl2.c (var_finalized_p): New. (maybe_emit_vtables, write_out_vars, finish_file): Use it. 2003-09-10 Richard Henderson * decl2.c (cxx_callgraph_analyze_expr): New, from corpse of mark_member_pointers. (lower_function): Remove. * cp-tree.h: Update to match. * cp-lang.c (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): New. (LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Remove. 2003-09-09 Richard Henderson * semantics.c (expand_or_defer_fn): Update call to cgraph_finalize_function. * semantics.c (expand_or_defer_fn): Use cgraph_finalize_function always. * decl2.c (finish_file): Avoid out-of-bounds array reference during memmove. 2003-09-09 Richard Henderson * decl2.c (mark_member_pointers): Rename from mark_member_pointers_and_eh_handlers and don't check eh handlers. 2003-09-09 Christian Ehrhardt PR bootstrap/12168 * method.c (use_thunk): Clear DECL_RTL of copied nodes. 2003-09-08 Mark Mitchell * cp-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to c_register_builtin_type. PR c++/11786 * decl2.c (add_function): Do not complain about seeing the same non-function twice. * semantics.c (perform_koenig_lookup): Improve documentation. PR c++/5296 * pt.c (try_one_overload): Add addr_p parameter. (resolve_overloaded_unification): Pass it. 2003-09-08 Richard Henderson * optimize.c (maybe_clone_body): Inc/dec function_depth. 2003-09-08 Richard Henderson * decl.c (finish_function): Clear current_function_decl. * decl2.c (mark_used): Don't push/pop gc context. * optimize.c (optimize_function): Likewise. * tree.c (cp_cannot_inline_tree_fn): Likewise. * pt.c (instantiate_decl): Inc/dec function_depth instead. * semantics.c (expand_body): Update for tree_rest_of_compilation nested argument. 2003-09-07 Gabriel Dos Reis PR c++/11762 * error.c (dump_decl): Handle namespace-alias-definition. * decl.c (warn_extern_redeclared_static): There is no point in checking changes in storage class specifier for a namespace declaration. (duplicate_decls): Tidy diagnostic message. * cxx-pretty-print.c (pp_cxx_left_brace): New macro. (pp_cxx_right_brace): Likewise. (pp_cxx_original_namespace_definition): New function. (pp_cxx_namespace_alias_definition): Likewise. (pp_cxx_declaration): Use them. Handle NAMESPACE_DECLs. 2003-09-07 Jan Hubicka * decl2.c (maybe_emit_vtables, write_out_vars, finish_file): Avoid re-emitting variables in unit-at-a-time mode. 2003-09-06 Mark Mitchell PR c++/11867 * call.c (standard_conversion): Improve comments. (perform_direct_initialization): Make sure we return an expression of the correct type. * typeck.c (build_static_cast): Check for ambiguity and accessibility when performing conversions. 2003-09-06 Gabriel Dos Reis * cp-tree.h (add_binding): Remove declaration. * name-lookup.h (supplement_binding): Declare. * decl.c (add_binding): Move to name-lookup.c. (push_local_binding): Adjust. (push_class_binding): Likewise. (set_identifier_type_value_with_scope): Likewise. * name-lookup.c (supplement_binding): Rename from add_binding. Return a bool. Improve documentation. (set_namespace_binding): Adjust. * Make-lang.in (cp/name-lookup.o): Depend on toplev.h 2003-09-06 Nathan Sidwell PR c++/11794 * class.c (pushclass): Push dependent using decls for nested classes of templates too. 2003-09-06 Roger Sayle PR c++/11409 * class.c (resolve_address_of_overloaded_function): When building list of matching non-template function decls, ignore anticipated declarations of undeclared or shadowed GCC builtins. 2003-09-06 Steven Bosscher PR c++/11595 * decl.c (define_label): Remove unreachable timevar pop. Always return the decl, even if the definition is invalid. 2003-09-06 Nathan Sidwell PR c++/12167 * parser.c (cp_parser_late_parsing_default_args): Push & pop the unparsed functions queue. 2003-09-05 Mark Mitchell PR c++/12163 * call.c (perform_direct_initialization): Correct logic for direct-initialization of a class type. PR c++/12146 * pt.c (lookup_template_function): Robustify. 2003-09-05 Nathan Sidwell PR c++/11922 * pt.c (tsubst_qualified_id): Make sure we get a non-type. (tsubst_expr, tsubst_copy_and_build): Pass false, not zero, as is_type_p to lookup_qualified_name. * semantics.c (finish_call_expr): Refactor some code. PR c++/12037 * cp-tree.h (COMPOUND_EXPR_OVERLOADED): New. (build_min_non_dep): Declare. * tree.c (build_min): Propagate TREE_SIDE_EFFECTS. (build_min_non_dep): New. * cvt.c (convert_to_void): Don't explicitly copy TREE_SIDE_EFFECTS, TREE_NO_UNUSED_WARNING. * call.c (build_new_method_call): Use build_min_non_dep. * decl2.c (grok_array_decl): Likewise. (build_offset_ref_call_from_tree): Likewise. * typeck.c (finish_class_member_access_expr, build_x_indirect_ref, build_x_binary_op, build_x_unary_op, build_x_conditional_expr, build_x_compound_expr): Likewise. (build_static_cast, build_reinterpret_cast, build_const_cast): Propagate TREE_SIDE_EFFECTS inside a template. * typeck2.c (build_x_arrow): Use build_min_non_dep. (build_functional_cast): Propagate TREE_SIDE_EFFECTS inside a template. * rtti.c (build_dynamic_cast_1): Set DECL_IS_PURE. (build_dynamic_cast): Set TREE_SIDE_EFFECTS. * pt.c (build_non_dependent_expr): Check COMPOUND_EXPR_OVERLOADED. 2003-09-04 Richard Henderson * decl2.c (mark_member_pointers_and_eh_handlers): Update for change in cgraph_mark_needed_node arguments. 2003-09-02 Geoffrey Keating PR 12161 * decl2.c (mark_used): Use ggc_push_context/ggc_pop_context. * tree.c (cp_cannot_inline_tree_fn): Likewise. 2003-09-04 Nathan Sidwell * cp-tree.h (finish_sizeof, finish_alignof): Remove. (expr_sizeof): Replace with ... (cxx_sizeof_or_alignof_expr): ... here. (cxx_sizeof_or_alignof_type): Make complain parameter a bool. * parser.c (cp_parser_unary_expression): Commonize alignof and sizeof handling. * pt.c (tsubst_copy_and_build): Adjust alignof and sizeof substitution. * semantics.c (finish_sizeof, finish_alignof): Remove. * typeck.c (cxx_sizeof_or_alignof_type): Complain parameter becomes bool. Set TREE_READONLY. (expr_sizeof): Replace with ... (cxx_sizeof_or_alignof_expr): ... here. Clear TREE_SIDE_EFFECTS. 2003-09-04 Mark Mitchell Remove cast-as-lvalue extension. * call.c (build_conditional_expr): Correct formatting. (convert_like_real): Use lvalue_p, not non_cast_lvalue_p. (initialize_real): Use real_lvalue_p, not real_non_cast_lvalue_p. * cp-tree.h (non_cast_lvalue_p): Remove. (real_non_cast_lvalue_p): Remove. (non_cast_lvalue_or_else): Remove. * tree.c (lvalue_p_1): Remove allow_cast_as_lvalue parameter. (real_lvalue_p): Adjust call to lvalue_p_1. (non_cast_lvalue_p): Remove. (non_cast_lvalue_or_else): Remove. (lvalue_p): Adjust call to lvalue_p_1. (lvalue_or_else): Simplify. * typeck.c (build_unary_op): Use lvalue_or_else, not non_cast_lvalue_or_else. (build_static_cast): Use real_lvalue_p, not real_non_cast_lvalue_p. 2003-09-03 DJ Delorie * decl.c (finish_function): Pass fndecl to aggregate_value_p. 2003-09-03 Mark Mitchell PR c++/12053 * class.c (include_empty_classes): Correct logic for ABI version 1. 2003-09-03 Richard Henderson * optimize.c (optimize_function): Push/pop ggc context around the call to optimize_inline_calls. 2003-09-02 Scott Brumbaugh PR c++/11553 * parser.c (cp_parser_decl_specifier_seq): Add check for a duplicate friend decl-specifier. 2003-09-02 Mark Mitchell PR c++/11847 * pt.c (convert_nontype_argument): Correct representation of REFERENCE_TYPE expressions. PR c++/11808 * cp-tree.h (KOENIG_LOOKUP_P): New macro. (finish_call_expr): Change prototype. * parser.c (cp_parser_postfix_expression): Adjust call to finish_call_expr. * pt.c (tsubst_copy_and_build): Use KOENIG_LOOKUP_P. * semantics.c (finish_call_expr): Add koenig_p parameter. 2003-09-01 Mark Mitchell PR c++/12114 * cp-tree.h (initialize_reference): Change prototype. * call.c (initialize_reference): Add cleanup parameter. * decl.c (grok_reference_init): Likewise. (check_initializer): Likewise. (cp_finish_decl): Insert a CLEANUP_STMT if necessary. (duplicate_decls): When replacing an anticipated builtin, do not honor TREE_NOTHROW. * typeck.c (convert_for_initialization): Correct call to initialize_reference. PR c++/11972 * pt.c (dependent_type_p_r): Pass only the innermost template arguments to any_dependent_template_arguments_p. 2003-09-01 Josef Zlomek * error.c (dump_expr): Kill BIT_ANDTC_EXPR. * lex.c (init_operators): Kill BIT_ANDTC_EXPR. * pt.c (tsubst_copy): Kill BIT_ANDTC_EXPR. * typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR. (tsubst_copy_and_build): Kill BIT_ANDTC_EXPR. 2003-08-29 Mark Mitchell PR c++/12093 * pt.c (build_non_dependent_expr): Do not build a NON_DEPENDENT_EXPR for a STRING_CST. PR c++/11928 * search.c (add_conversions): Avoid adding two conversion operators for the same type. 2003-08-29 Mark Mitchell PR c++/6196 * pt.c (tsubst_copy_and_build): Correct handling of address-of-label extension. * semantics.c (finish_goto_stmt): The address of a label must go through the lvalue-to-rvalue conversion. 2003-08-29 Richard Henderson Jason Merrill * cp-lang.c (LANG_HOOKS_RTL_EXPAND_START): New. (LANG_HOOKS_RTL_EXPAND_STMT): New. * cp-tree.h (cxx_expand_function_start): Declare. * decl.c (start_function): Use allocate_struct_function. Move stmts_are_full_exprs_p assertion from expand_body. Do not free_after_parsing or free_after_compilation. (cxx_push_function_context): Move code to set struct function data from genrtl_start_function. * optimize.c (optimize_function): Don't inc/dec function_depth. * semantics.c (expand_body): Use tree_rest_of_compilation. (cxx_expand_function_start): Rename from genrtl_start_function, omit bits done by tree_rest_of_compilation. (genrtl_finish_function): Remove. (clear_decl_rtl): Move to ../tree-optimize.c. 2003-08-29 Gabriel Dos Reis PR c++/11811 * cxx-pretty-print.c (pp_cxx_canonical_template_parameter): New function. * cxx-pretty-print.h: Declare. * error.c (dump_template_parameter): Use it. (dump_type): Likewise. 2003-08-28 Mark Mitchell * init.c (decl_constant_value): Deal with COND_EXPR specially. * call.c (build_conditional_expr): Revert previous patch. PR optimization/5079 * call.c (build_conditional_expr): Use decl_constant_value to simplify the arguments. 2003-08-26 Dan Nicolaescu * parser.c (struct cp_token): Use enum bitfields. (CP_TOKEN_BLOCK_NUM_TOKENS): Make sure cp_token_block fits in a 512B allocation unit. (cp_parser_token_tree_map_node): Use enum bitfields. 2003-08-26 Nathan Sidwell PR c++/11871 * decl.c (push_class_level_binding): Correct old_decl value from my 2003-07-29 reorganization. * call.c (build_call): Don't set TREE_SIDE_EFFECTS here. (build_new_method_call): Add goto finish. * semantics.c (simplify_aggr_init_exprs_r): Don't set TREE_SIDE_EFFECTS on a call. 2003-08-25 Richard Henderson * cxx-pretty-print.c (pp_cxx_class_name): Remove unused function. 2003-08-25 Gabriel Dos Reis * cxx-pretty-print.h (pp_cxx_flag_default_argument): New flag. (cxx_pretty_printer): Adjust base type. (pp_cxx_function_specifier): Declare. * cxx-pretty-print.c (pp_cxx_whitespace): New macro. (pp_cxx_left_paren): Likewise. (pp_cxx_right_paren): Likewise. (pp_cxx_dot): Likewise. (pp_cxx_arrow): Likewise. (pp_cxx_semicolon): Likewise. (pp_cxx_identifier): Likewise. (pp_cxx_cv_qualifier_seq): Likewise. (pp_cxx_storage_class_specifier): Likewise. (pp_cxx_expression_list): Likewise. (pp_cxx_space_for_pointer_operator): Likewise. (pp_cxx_init_declarator): Likewise. (pp_cxx_call_argument_list): Likewise. (pp_cxx_nonconsecutive_character): Tidy. (pp_cxx_conversion_function_id): New function. (pp_cxx_template_id): Likewise. (pp_cxx_template_keyword_if_needed): Likewise. (pp_cxx_nested_name_specifier): Likewise. (pp_cxx_unqualified_id): Tidy (pp_cxx_qualified_id): Handle more nodes. (pp_cxx_primary_expression): Tidy. (pp_cxx_postfix_expression): Likewise. (pp_cxx_new_expression): Tidy. (pp_cxx_delete_expression): Likewise. (pp_cxx_cast_expression): New function. (pp_cxx_pm_expression): Tidy. (pp_cxx_conditional_expression): Likewise. (pp_cxx_assignment_operator): New function. (pp_cxx_assignment_expression): Tidy. (pp_cxx_expression): New function. (pp_cxx_function_specifier): Likewise. (pp_cxx_decl_specifier_seq): Likewise. (pp_cxx_simple_type_specifier): Tidy. (pp_cxx_type_specifier_seq): Likewise. (pp_cxx_ptr_operator): New function. (pp_cxx_implicit_parameter_type): Likewise. (pp_cxx_parameter_declaration): Tidy. (pp_cxx_parameter_declaration_clause): New function. (pp_cxx_exception_specification): Likewise. (pp_cxx_direct_declarator): Tidy. (pp_cxx_declarator): Likewise. (pp_cxx_ctor_initializer): New function. (pp_cxx_function_definition): Likewise. (pp_cxx_abstract_declarator): Tidy. (pp_cxx_direct_abstract_declarator): Likewise. (pp_cxx_type_id): Likewise. (pp_cxx_exception_declaration): New function. (pp_cxx_statement): Likewise. (pp_cxx_simple_declaration): Likewise. (pp_cxx_template_parameter_list): Likewise. (pp_cxx_template_parameter): Likewise. (pp_cxx_template_declaration): Likewise. (pp_cxx_explicit_specialization): Likewise. (pp_cxx_explicit_instantiation): Likewise. (pp_cxx_declaration): Tidy. (pp_cxx_pretty_printer_init): Initialize more fields. 2003-08-25 Mark Mitchell PR c++/8795 * cp-tree.h (build_cplus_method_type): Remove. * call.c (standard_conversion): Use build_method_type_directly instead of build_cplus_method_type. * class.c (build_clone): Likewise. (adjust_clone_args): Likewise. * decl.c (build_ptrmem_type): Likewise. (grokdeclarator): Likewise. (check_function_type): Likewise. * decl2.c (grok_method_quals): Likewise. (maybe_retrofit_in_chrg): Likewise. * pt.c (copy_default_args_to_explicit_spec): Likewise. (tsubst_function_type): Likewise. (tsubst): Likewise. * tree.c (build_cplus_method_type): Remove. * typeck.c (merge_types): Use build_method_type_directly. 2003-08-23 Kriang Lerdsuwanakij PR c++/3765 * search.c (dfs_access_in_type): Fix typo in comment. (dfs_accessible_queue_p): Likewise. (dfs_accessible_p): Only terminate when a friend is found. (accessible_p): Return immediately if access_in_type allows access. 2003-08-23 Kriang Lerdsuwanakij PR c++/641, c++/11876 * friend.c (add_friend): Add complain parameter. (make_friend_class): Likewise. (do_friend): Adjust add_friend call. * decl.c (grokdeclarator): Adjust make_friend_class call. * parser.c (cp_parser_member_declaration): Likewise. (cp_parser_template_declaration_after_export): Likewise. * pt.c (instantiate_class_template): Adjust make_friend_class and add_friend call. * cp-tree.h (make_friend_class): Adjust declaration. (add_friend): Likewise. 2003-08-21 Jason Merrill PR c++/11283 * call.c (build_conditional_expr): Ignore cv-qual differences for non-class types. 2003-08-21 Mark Mitchell PR c++/11551 * parser.c (cp_parser_id_expression): Add declarator_p parameter. (cp_parser_primary_expression): Adjust call to cp_parser_id_expression. (cp_parser_unqualified_id): Complain about the use of typedef-names in a destructor declarator. (cp_parser_postfix_expression): Adjust call to cp_parser_id_expression. (cp_parser_type_parameter): Likewise. (cp_parser_template_argument): Likewise. (cp_parser_declarator_id): Likewise. PR c++/11919 * call.c (standard_conversion): Use same_type_p, not pointer equality, to compare types. PR c++/10762 * parser.c (cp_parser_using_declaration): Check for invalid uses of template-ids here... * decl2.c (do_class_using_decl): ... rather than here. 2003-08-20 Mark Mitchell PR c++/11834 * pt.c (more_specialized): Bump processing_template_decl. 2003-08-21 Jason Merrill PR c++/11614 * decl.c (grokdeclarator): Recognize a flexible array based on the type, not the form of the declarator. 2003-08-20 Jason Merrill * semantics.c (simplify_aggr_init_expr): Split out from simplify_aggr_init_exprs_r. Convert slot address to match the return type. * cp-tree.h: Declare it. * tree.c (cp_copy_res_decl_for_inlining): Don't clobber the DECL_NAME of a user variable. 2003-08-20 Nathan Sidwell PR c++/11945 * pt.c (build_non_dependent_expr): Look inside COND_EXPR and COMPOUND_EXPR. * semantics.c (finish_expr_stmt): Always convert to void. * typeck.c (build_x_compound_exp): Always convert to void. 2003-08-19 Mark Mitchell PR c++/11684 * cp-tree.h (grok_op_properties): Change prototype. * decl.c (grok_op_properties): Add complain parameter. (grokfndecl): Pass it. * pt.c (tsubst_decl): Adjust accordingly. PR c++/10926 * decl.c (start_method): Return immediately if push_template_decl does not like the declaration. * pt.c (push_template_decl_real): Disallow member template destructors. PR c++/11036 * cp-tree.h (add_binding): Add prototype. * class.c (add_method): Set TYPE_HAS_DESTRUCTOR if appropriate. (maybe_warn_about_overly_private_class): Use CLASSTYPE_DESTRUCTORS. (pushclass): Adjust call to set_identifier_type_value. * decl.c (add_binding): Give it external linkage. (push_local_binding): Adjust call to add_binding. (push_class_binding): Likewise. (set_identifier_type_value_with_scope): Change prototype. Use add_binding for global bindings. (set_identifier_type_value): Adjust accordingly. (pushtag): Likewise. (pushdecl): Use set_identifier_type_value, not set_identifier_type_value_with_scope. (pushdecl_namespace_level): Adjust calls to SET_IDENTIFIER_TYPE_VALUE to pass a DECL. (pushdecl_class_level): Likewise. (lookup_tag): Use select_decl. (select_decl): Improve comment. (record_builtin_type): Do not call pushdecl. (cxx_init_decl_processing): Do not call xref_tag for bad_alloc. (cp_finish_decl): Adjust call to set_identifier_type_value. (check_elaborated_type_specifier): Improve checks for invalid uses of typedefs. (xref_tag): Adjust call to check_elaborated_type_specifier. * decl2.c (grokclassfn): Do not set TYPE_HAS_DESTRUCTOR. * name-lookup.c (set_namespace_binding): Use add_binding. * parser.c (cp_parser_simple_type_specifier): Return a TYPE_DECL, rather than an IDENTIFIER_NODE, to represent built-in types, if requested by the caller. (cp_parser_postfix_expression): Adjust call. (cp_parser_type_specifier): Likewise. (cp_parser_elaborated_type_specifier): Adjust call to check_elaborated_type_specifier. * typeck2.c (build_functional_cast): Do not perform name lookups. PR c++/10717 * decl.c (expand_static_init): Remove unnecessary code. 2003-08-19 Andrew Pinski PR c++/10538, PR c/5582 * cp/cp-lang.c (LANG_HOOKS_DECL_UNINIT): Define. 2003-08-19 Kriang Lerdsuwanakij PR c++/11174 * init.c (build_offset_ref): Perform access checking for pointer to member correctly. 2003-08-19 Gabriel Dos Reis * cp-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Fix spelling. 2003-08-18 Nathan Sidwell PR c++/11957 * cp-tree.h (finish_stmt_expr): Add bool parameter. * init.c (finish_init_stmts): Pass true to finish_stmt_expr. Don't adjust the stmt_expr here. (build_vec_init): Use finish_stmt_expr_expr, convert result to array type. * parser.c (cp_parser_primar_expression): Adjust finish_stmt_expr call. * pt.c (tsubst_copy): Likewise. * semantics.c (finish_stmt_expr): Add parameter. * pt.c (instantiate_class_template): Push to class's scope before tsubsting base. 2003-08-17 Jan Hubicka PR C++/11702 * semantics.c (finish_id_expression): Mark all functions as used. 2003-08-16 Nathan Sidwell PR c++/11512 * cvt.c (convert_to_void): Indicate which side of conditional has no effects, and rhs of comma operator. Test for no sideeffect expressions here and always build a convert expr. * init.c (expand_default_init): Convert the init to void. * typeck.c (build_x_compound_expr): Do not check for side effects here. (build_compound_expr): Do not convert lhs when building a template. 2003-08-15 Nathan Sidwell * cp-tree.def (NON_DEPENDENT_EXPR): Add operand. * decl2.c (build_offset_ref_call_from_tree): Use build_non_dependent_expr. * error.c (dump_expr) : Dump the operand. * pt.c (build_non_dependent_expr): Set operand. 2003-08-14 Jan Hubicka * decl2.c (mark_member_pointers): Rename to... (mark_member_pointers_and_eh_tinfos): ... this one; deal with eh tinfos (lower_function): Update call. * except.c (eh_type_info): Break out from ... (build_eh_type): ... here; tinfo is already used. (finish_eh_spec_block): Mark tinfos as used. * semantics.c (finish_handler_params): Mark tinfo as used. * cp-tree.h (eh_type_info): Declare. 2003-08-15 Nathan Sidwell * pt.c (instantiate_class_template): Set location before substuting bases. * decl.c (make_typename_type): Use my_friendly_assert. * pt.c (tsubst_aggr_type): Rearrange context substitution. 2003-08-14 Jan Hubicka * method.c (use_thunk): Expand body directly. 2003-08-12 Mark Mitchell PR c++/11703 * call.c (type_passed_as): Use TYPE_SIZE, not TYPE_PRECISION to determine whether or not to promote types. (convert_for_arg_passing): Likewise. * decl2.c (cp_build_parm_decl): Do not set DECL_ARG_TYPE in templates. * pt.c (tsubst_decl): Do not expect it to be set. PR c++/9512 PR c++/10923 * cp-tree.h (check_elaborated_type_specifier): Declare. (handle_class_head): Remove. (note_got_semicolon): Likewise. (note_list_got_semicolon): Likewise. (finish_class_definition): Likewise. * decl.c (check_elaborated_type_specifier): Make it public. Robustify. (handle_class_head): Remove. * parser.c (cp_parser_elaborated_type_specifier): Use check_elaborated_type_specifier. (cp_parser_class_specifier): Do not call finish_class_definition. (cp_parser_class_head): Or handle_class_head. Check for over-qualified names. * semantics.c (finish_class_definition): Remove. * parser.c (cp_parser_check_for_definition_in_return_type): New function. (cp_parser_simple_declaration): Adjust call to cp_parser_init_declarator. (cp_parser_decl_specifier_seq): Change type of declares_class_or_enum parameter. (cp_parser_explicit_instantiation): Adjust accordingly. (cp_parser_type_specifier): Change type of declares_class_or_enum parameter. (cp_parser_init_declarator): Add declares_class_or_enum parameter. (cp_parser_parameter_declaration): Adjust call to cp_parser_decl_specifier_seq. (cp_parser_function_definition): Likewise. (cp_parser_member_declaration): Likewise. (cp_parser_single_declaration): Likewise. * cp-tree.h (lang_type_class): Remove has_call_overloaded, has_array_ref_overloaded, has_arrow_overloaded, and got_semicolon. (TYPE_OVERLOADS_CALL_EXPR): Remove. (TYPE_OVERLOADS_ARRAY_REF): Likewise. (TYPE_OVERLOADS_ARROW): Likewise. (CLASSTYPE_GOT_SEMICOLON): Likewise. * class.c (check_bases): Do not set them. (finish_struct_1): Likewise. * decl.c (cp_finish_decl): Do not set CLASSTYPE_GOT_SEMICOLON. (build_ptrmemfunc_type): Likewise. (grok_op_properties): Do not set TYPE_OVERLOADS_*. (start_function): Do not check CLASSTYPE_GOT_SEMICOLON. * decl2.c (grokfield): Do not set CLASSTYPE_GOT_SEMICOLON. * lex.c (note_got_semicolon): Remove. (note_list_got_semicolon): Likewise. * parser.c (cp_parser_simple_declaration): Do not call note_list_got_semicolon. * pt.c (list_eq): Remove. (lookup_template_class): Do not set CLASSTYPE_GOT_SEMICOLON. (instantiate_class_template): Do not set TYPE_OVERLOADS*. (instantiate_class_template): Do not set CLASSTYPE_GOT_SEMICOLON. * ptree.c (cxx_print_type): Do not print them. * semantics.c (finish_member_class_template): Do not call note_list_got_semicolon. 2003-08-11 Aldy Hernandez * call.c (standard_conversion): Opaque pointers interconvert. * testsuite/g++.dg/other/opaque-3.C: New. 2003-08-11 Mark Mitchell * typeck.c (merge_types): Handle cv-qualified pointer-to-member types correctly. 2003-08-10 Mark Mitchell PR c++/11789 * cp-tree.h (get_vbase): Remove. (get_vbase_types): Remove. * init.c (expand_member_init): Correct logic for looking up base classes. 2003-08-10 Gabriel Dos Reis * error.c (dump_expr): Tidy. * cxx-pretty-print.c (pp_cxx_nonconsecutive_character): New. (pp_cxx_begin_template_argument_list): Likewise. (pp_cxx_end_template_argument_list): Likewise. (is_destructor_name): Likewise. (pp_cxx_unqualified_id): Likewise. (pp_cxx_qualified_id): Likewise. (pp_cxx_id_expression): Likewise. (pp_cxx_new_expression): Likewise. (pp_cxx_delete_expression): Likewise. (pp_cxx_pm_expression): Likewise. (pp_cxx_type_specifier): Rework. (pp_cxx_type_id): Likewise. (pp_cxx_primary_expression): Likewise. (pp_cxx_postfix_expression): Likewise. (pp_cxx_unary_expression): Likewise. (pp_cxx_multiplicative_expression): Likewise. (pp_cxx_conditional_expression): Likewise. (pp_cxx_assignment_expression): Likewise. (pp_cxx_pretty_printer_init): Tidy. 2003-08-10 Nathan Sidwell * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): non-NULL NODE is always a TREE_VEC of nonzero size. (NUM_TMPL_ARGS): NODE is always a TREE_VEC. * decl2.c (arg_assoc): Template args will be a vec. * error.c (dump_decl) : Call dump_template_argument_list. (dump_template_parms): Args will be a vec. * parser.c (cp_parser_template_argument_list): Produce a vector, not a list. * pt.c (coerce_template_parms): Args are always vectors. (mangle_class_name_for_template): Likewise. (lookup_template_function): Likewise. (lookup_template_class): Likewise. (tsubst_template_args): Likewise. (tsubst_baselink): Use tsubst_template_args. (tsubst_qualified_id): Likewise. (tsubst_copy) : Likewise. (tsubst_copy_and_build) : Likewise. (any_dependent_template_args_p): Args are always vectors. * tree.c (cp_tree_equal): Add TEMPLATE_ID_EXPR case. PR c++/11670 * call.c (convert_like_real): Add rvalue binding error message. * error.c (dump_expr) : Detect when the no expr is really a cast. PR c++/10530 * pt.c (dependent_type_p_r): A dependent template-id is a class type with dependent template arguments, or a bound template template parameter. (type_dependent_expression_p): A template function decl cannot have a dependent context. 2003-08-07 Kriang Lerdsuwanakij PR c++/5767 * parser.c (cp_parser_class_name): Return immediately when scope is error_mark_node. 2003-08-07 Aldy Hernandez * cp/Make-lang.in (cp/call.o): Add dependency for target.h. * cp/call.c (standard_conversion): Support opaque types. Include target.h. (strip_top_quals): Use cp_build_qualified_type instead of TYPE_MAIN_VARIANT. * cp/typeck.c (convert_for_assignment): Support opaque types. * testsuite/g++.dg/other/opaque-1.C: New. * testsuite/g++.dg/other/opaque-2.C: New. 2003-08-06 Aldy Hernandez * decl.c (grokparms): Use cp_build_qualified_type instead TYPE_MAIN_VARIANT. 2003-08-05 Gabriel Dos Reis * cxx-pretty-print.h: New file. * cxx-pretty-print.c: Likewise. * error.c (scratch_pretty_printer): Change type. (init_error): Tidy. (dump_aggr_type): Likewise. (dump_global_iord): Likewise. (dump_expr): Likewise. (dump_char): Remove. * cp-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTITCS): Define. (cxx_initialize_diagnostics): New function. * Make-lang.in (CXX_OBJS): Add cp/cxx-pretty-print.o (CXX_PRETTY_PRINT_H): New variable. (cp/cxx-pretty-print.o): New rule. (cp/cp-lang.o): Update dependence. (cp/error.o): Likewise. 2003-08-05 Steven Bosscher * cp-tree.h (struct lang_decl): Don't include c_lang_decl. (DECL_DECLARED_INLINE_P): Remove. * decl2.c (import_export_decl): Only look at DECL_DECLARED_INLINE_P if decl is a FUNCTION_DECL. This never made sense, but now it is required to avoid a tree check failure. * decl.c (grokfndecl): Don't touch DID_INLINE_FUNC. * optimize.c (maybe_clone_body): Likewise. 2003-08-04 Roger Sayle * decl.c (cxx_insert_default_attributes): Delete. * cp-tree.h (cxx_insert_default_attributes): Don't prototype. * cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define. 2003-08-03 Nathan Sidwell PR c++/11704 * pt.c (type_dependent_expression_p): Cope with COMPONENT_REF with unknown type. PR c++/11766 * typeck.c (comp_ptr_ttypes_real): Don't loop on pointers to member functions. 2003-08-02 Nathan Sidwell PR c++/9447 * cp-tree.def (USING_DECL): Document its type. * class.c (pushclass): If we're entering a template, push any dependent using decls it has. * decl2.c (do_class_using_decl): Refactor. Type is NULL iff it is a dependent scope. * pt.c (tsubst_decl) : Set type. (tsubst): Remove USING_DECL checks. (type_dependent_expression_p): Remove USING_DECL case. * semantics.c (finish_member_declaration): A USING_DECL's type indicates whether it is dependent. 2003-08-02 Nathan Sidwell * cp-tree.h (pushclass): Remove unneeded parameter. * class.c (pushclass): Remove unneeded MODIFY parm. Adjust. (push_nested_class): Adjust pushclass call. * pt.c (instantiate_class_template): Likewise. * semantics.c (begin_class_definition): Likewise. 2003-08-01 Nathanael Nerode * typeck2.c (add_exception_specifier): Use 'bool' where appropriate. 2003-08-01 Mark Mitchell PR c++/11697 * decl.c (decls_match): Don't ignore the types of template classes. PR c++/11744 * pt.c (tsubst_copy_and_build): Refine Koenig lookup logic. 2003-08-01 Kriang Lerdsuwanakij PR c++/8442, c++/8806 * decl.c (qualify_lookup): Accept TEMPLATE_DECL if types are preferred. (check_elaborated_type_specifier): Add allow_template_p parameter. Check tag mismatch and class template. (xref_tag): Add template_header_p parameter. Add assertion that name is an IDENTIFIER_NODE. Remove implicit typename warning. Simplify lookup process if globalize is true. (cxx_init_decl_processing): Adjust call to xref_tag. (xref_tag_from_type): Likewise. * decl2.c (handle_class_head): Likewise. * parser.c (cp_parser_elaborated_type_specifier, cp_parser_class_head): Likewise. * rtti.c (init_rtti_processing, build_dynamic_cast1, tinfo_base_init, emit_support_tinfos): Likewise. * class.c (is_base_of_enclosing_class): Remove. * pt.c (convert_template_argument): Don't accept RECORD_TYPE as template template argument. * cp-tree.h (xref_tag): Adjust declaration. (is_base_of_enclosing_class): Remove. * NEWS: Document template template argument change. 2003-08-01 Nathan Sidwell * parser.c (cp_parser_init_declarator, cp_paser_member_declaration): Reformat. * pt.c (lookup_template_class, type_unification_real, unify, type_dependent_expression_p): Reformat. PR c++/11295 * cp-tree.h (tubst_flags_t): Add tf_stmt_expr_cmpd, tf_stmt_expr_body. (finish_stmt_expr_expr): Declare. * parser.c (cp_parser_primary_expression): Tell cp_parser_compount_statement that it is a statement expression. (cp_parser_statement, cp_parser_labeled_statement, cp_parser_compound_statement, cp_parser_statement_seq_opt): Add in_statement_expr_p parameter. (cp_parser_expression_statement): Likewise. Call finish_stmt_expr_expr for final expression of a statement expression. (cp_parser_for_init_statement, cp_parser_implicitly_scoped_statement, cp_parser_already_scoped_statement, cp_parser_function_definition, cp_parser_try_block, cp_parser_handled): Adjust. * pt.c (tsubst_copy) : Pass tf_stmt_expr. (tsubst_expr): Process tf_stmt_expr and tf_stmt_exprs flags. (tsubst_expr) : Check tf_stmt_exprs flag. * semantics.c (finish_expr_stmt): Do not deal with statement expressions. (begin_stmt_expr): Clear last_expr_type. (finish_stmt_expr_expr): New. (finish_stmt_expr): Process the value expression. * typeck.c (build_compound_expr): If RHS is a TARGET_EXPR, put the compound expr inside the target's initializer. PR c++/11525 * parser.c (cp_parser_primary_expression): Do not set non-constant-p merely because it is a dependent scope. PR c++/9447 * decl2.c (do_class_using_decl): Set type to NULL_TREE. * semantics.c (finish_expr_stmt): Do not convert to void in a template. 2003-07-31 Nathan Sidwell * pt.c (coerce_template_parms): Refactor. (fn_type_unification): Increment processing_template_decl when tsubsting an incomplete set of explicit args. PR c++/11347 * pt.c (instantiate_class_template): Increment processing_template_decl around the tsubst of a template member class. (tsubst_qualified_id): Assert we do not have a dependent scope. * pt.c (coerce_template_template_parms, lookup_template_class, can_complete_type_without_circularity, instantiate_class_template, tsubst_decl, unify): Reformat. 2003-07-31 Jan Hubicka * decl2.c (maybe_make_one_only): Use mark_referenced. * method.c (use_thunk): Likewsie. 2003-07-30 Jan Hubicka * class.c (build_vtable_entry_ref): Kill. (build_vtbl_ref_1): Do not call build_vtable_entry_ref. (build_vfn_ref): Do not call build_vtable_entry_ref. * cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill. * cp-tree.h (prepare_assemble_variable): Kill. * cp-decl.c (prepare_assemble_variable): Kill. 2003-07-29 Geoffrey Keating * parser.c (cp_lexer_new_main): Use c_common_no_more_pch instead of setting valid_pch by hand. 2003-07-29 Rainer Orth * decl.c (finish_enum): Initialize underlying_type. 2003-07-29 Nathan Sidwell PR c++/9447 * decl.c (add_binding): Add bval local variable. (push_class_level_binding): Likewise. Allow a USING_DECL to be pushed. * decl2.c (do_class_using_decl): The type of a using decl is unknown. * parser.c (cp_parser_postfix_expression): Refactor unqualified-id function call lookup code. * pt.c (tsubst): A USING_DECL will have unknown type. (tsubst_copy_and_build): Allow a using decl. (type_dependent_expression_p): A USING_DECL will make it dependent. * semantics.c (finish_member_declaration): Push a dependent using declaration. 2003-07-28 Mark Mitchell PR c++/11530 * parser.c (cp_parser_postfix_expression): Do not call mark_used. * semantics.c (finish_id_expression): Call mark_used for all declarations. 2003-07-28 Mark Mitchell PR c++/11667 * call.c (standard_conversion): Allow all integral->enumeral conversions, after marking them as bad. * decl.c (finish_enum): Make sure that all enumerators are properly converted to the underlying type. (build_enumerator): Set DECL_CONTEXT for namespace-scope enumeration types. * pt.c (tsubst_copy): Adjust handling of CONST_DECLs accordingly. (tsubst_enum): Tidy. * Make-lang.in (typeck.o): Depend on convert.h. (class.o): Likewise. (rtti.o): Likewise. * call.c: Include convert.h. (convert_arg_to_ellipsis): Use convert_to_real. * class.c: Include convert.h. (build_base_path): Use convert_to_integer. * rtti.c: Include convert.h. (build_headof): Use convert_to_integer. * typeck.c: Include convert.h. (decay_conversion): Use convert_to_integer. (build_unary_op): Use build_nop. (get_delta_difference): Use convert_to_integer. (build_ptrmemfunc): Avoid unnecessary conversions. 2003-07-28 Jan Hubicka * decl2.c (mark_member_pointers): Verify that member pointer points to the function. 2003-07-28 Nathan Sidwell * cp-tree.h (begin_compound_stmt): No scope arg is a bool. (finish_compound_stmt): Remove no scope arg. * decl.c (register_dtor_fn): Adjust begin_compound_stmt and end_compound_stmt calls. (expand_static_init, begin_destructor_body, begin_function_body, finish_function_body): Likewise. * decl2.c (start_objects, finish_objects, start_static_storage_duration_function, finish_static_storage_duration_function): Likewise. * init.c (begin_init_stmts, finish_init_stmts, construct_virtual_base, build_vec_init): Likewise. * method.c (do_build_assign_ref, synthesize_method): Likewise. * parser.c (cp_parser_compound_statement, cp_parser_implicitly_scoped_statement, cp_parser_already_scoped_statement): Likewise. * pt.c (tsubst_expr): Likewise. * semantics.c (begin_compound_stmt): No scope arg is a bool. (finish_compound_stmt): Remove no scope arg. * error.c (dump_expr) : A compound expr is always dyadic. 2003-07-27 Mark Mitchell * call.c (standard_conversion): Tweak handling of pointer-to-member types. * pt.c (tsubst): Correctly qualify pointers-to-data member types. * typeck.c (comp_ptr_ttypes_real): Check qualifiers on pointer-to-data member types. 2003-07-27 Nathan Sidwell * parser.c (cp_parser_type_parameter): Reformat. (cp_parser_parameter_declaration): Deprecate default args where not allowed. 2003-07-26 Nathan Sidwell * cfns.h: Rebuilt. * cp-tree.h (begin_init_stmts, finish_init_stmts): Remove. (begin_global_stmt_expr, finish_global_stmt_expr): Remove. * init.c (begin_init_stmts): Make static. Return is_global value. Always call begin_stmt_expr. (finish_init_stmts): Make static. Add is_global parm. Always building a stmt tree. (build_aggr_init): Adjust begin_init_stmts, finish_init_stmts calls. (build_vec_init): Likewise. Always building a stmt tree. (expand_default_init): Always building a stmt tree. (get_temp_regvar): Likewise. * semantics.c (begin_global_stmt_expr, finish_global_stmt_expr): Remove. 2003-07-25 Nathan Sidwell * cp-tree.h (build_compound_expr): Take LHS & RHS args. (build_x_compound_expr_from_list): Declare. * typeck.c (build_x_compound_expr_from_list): New. (build_x_compound_expr): Adjust. (build_compound_expr): Remove unreachable code. Take two parameters, adjust. * decl.c (grok_reference_init): Use build_x_compound_expr_from_list. (expand_static_init): Adjust build_compound_expr call. (cxx_maybe_build_cleanup): Likewise. * init.c (perform_member_init): Use build_x_compound_expr_from_list. (build_new_1): Likewise. (build_vec_delete): Adjust build_compound_expr calls. (build_vbase_delete): Likewise. * typeck2.c (store_init_value): Use build_x_compound_expr_from_list. (build_functional_cast): Likewise. 2003-07-25 Nathan Sidwell * cp-tree.h (enum tsubst_flags_t): Add tf_user. * decl.c (make_typename_type): Pass it. * pt.c (lookup_template_class): Use it. (resolve_typename_type): Pass it. * semantics.c (finish_template_type): Pass it. 2003-07-25 Nathan Sidwell PR c++/11617 * cp-tree.h (qualified_name_lookup_error): Declare. * pt.c (tsubst_qualified_id): Use qualified_name_lookup_error for errors. (tsubst_expr) : Likewise. (tsubst_copy_and_build) : Likewise. * semantics.c (qualified_name_lookup_error): New, broken out of ... (finish_id_expression): ... here. Use it. 2003-07-25 Falk Hueffner * cfns.gperf: Add '%%' delimiter to placate gperf 3.0. 2003-07-25 Nathan Sidwell PR c++/11596 * pt.c (maybe_fold_nontype_arg, maybe_fold_nontype_args): Remove. (tsubst_template_arg): New. (tsubst_template_arg_vector): Rename to ... (tsubst_template_args): ... this. Accept a TREE_LIST form. Use tsubst_template_arg. (coerce_template_parms): Use tsubst_template_arg for default value. (tsubst_template_parms): Likewise. (tsubst_aggr_type): Adjust. (tsubst_decl): Likewise. (tsubst): Use tsubst_template_arg for a DOMAIN. Adjust. (tsubst_copy) : Use tsubst_template_args. 2003-07-25 Gabriel Dos Reis * Make-lang.in (cp/error.o): Depend on DIAGNOSTIC_H. * error.c: Use the new pretty-printer framework. 2003-07-24 Per Bothner * decl.c (pushdecl_class_level): Don't use push_srcloc/pop_srcloc which causes errors messages to incorrectly mention included files. 2003-07-24 Mark Mitchell * cp-tree.h (convert_to_base_statically): Declare. * call.c (build_special_member_call): Convert INSTANCE to the base type. * class.c (convert_to_base_statically): New method. * init.c (construct_virtual_base): Use it. * method.c (do_build_assign_ref): Fix typo in comment. 2003-07-24 Jason Merrill * decl.c: Just set truthvalue_* to boolean_*. 2003-07-24 Nathan Sidwell * decl.c (reshape_init): Remove unreachable code. 2003-07-24 Kriang Lerdsuwanakij PR c++/11513 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): Use current_scope. 2003-07-23 Mark Mitchell PR c++/11645 * cp-tree.h (accessible_base_p): Declare. * call.c (build_over_call): Use it. * search.c (accessible_base_p): New function, split out from ... (lookup_base): ... here. PR c++/11517 * call.c (build_conditional_expr): Use perform_implicit_conversion and error_operand_p. Robustify. * typeck.c (build_unary_op): Use perform_implicit_conversion. 2003-07-23 Nathan Sidwell PR c++/10953 * parser.c (cp_parser_nested_name_specifier): Reset scope on failure. (cp_parser_elaborated_type_specifier): Likewise. 2003-07-22 Mark Mitchell Eliminate use of POINTER_TYPE for pointers-to-members. * call.c (standard_conversion): Rework pointer-to-member handling. Add comments. (add_builtin_candidate): Likewise. (resolve_scoped_fn_name): Remove. (build_conditional_expr): Rework pointer-to-member handling. (compare_ics): Likewise. * class.c (check_field_decls): Use TYPE_PTR_P. * cp-lang.c (cp_var_mod_type_p): Rework pointer-to-member handling. * cp-tree.h (SCALAR_TYPE_P): Use TYPE_PTR_TO_MEMBER_P. (TYPE_PTRMEM_P): Add comment. (TYPE_PTR_P): Simplify. (TYPE_PTROB_P): Correct definition. (TYPE_PTR_TO_MEMBER_P): New macro. (TYPE_PTRMEM_CLASS_TYPE): Adjust. (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise. (resolved_scoped_fn_name): Remove declaration. (build_offset_ref): Change prototype. (resolve_offset_ref): Remove. (comp_target_types): Remove. * cvt.c (cp_convert_to_pointer): Rework pointer-to-member handling. (convert_to_reference): Use can_convert. (ocp_convert): Improve error handling. Rework pointer-to-member handling. (perform_qualification_conversions): Rework pointer-to-member handling. * decl.c (build_ptrmem_type): Handle functions too. (create_array_type_for_decl): Remove OFFSET_TYPE error message. (grokdeclarator): Use OFFSET_TYPE for pointers to data members. (grokparms): Remove OFFSET_TYPE error message. * dump.c (cp_dump_tree): Rework pointer-to-member handling. * error.c (dump_type_prefix): Likewise. * expr.c (cplus_expand_constant): Use build_nop. * init.c (build_offset_ref): Add address_p parameter. Fold in necessary bits from resolve_offset_ref. (resolve_offset_ref): Remove. * parser.c (cp_parser_postfix_expression): Remove special case code for OFFSET_TYPE. * pt.c (convert_nontype_argument): Rework pointer-to-member handling. (convert_template_argument): Likewise. (unify): Likewise. (invalid_nontype_parm_type_p): Likewise. (dependent_type_p_r): Likewise. * rtti.c (get_tinfo_decl): Remove OFFSET_TYPE special case. (target_incomplete_p_): Rework pointer-to-member handling. (get_pseudo_ti_init): Likewise. (get_pseudo_ti_desc): Likewise. * semantics.c (finish_qualified_id_expr): Adjust call to build_offset_ref. Remove use of resolve_offset_ref. * tree.c (pod_type_p): Use TYPE_PTR_TO_MEMBER_P. * typeck.c (target_type): Use TYPE_PTRMEM_P. (type_unknown_p): Remove obsolete code about the time before non-dependent expressions were handled correctly. (qualify_type_recursive): Remove. (composite_pointer_type_r): New function. (composite_pointer_type): Use it. (merge_types): Remove dead comments. (comp_cv_target_types): Remove. (comp_target_types): Likewise. (comp_target_parms): Likewise. (cxx_sizeof_or_alignof_type): Remove OFFSET_TYPE error. (build_indirect_ref): Use TYPE_PTR_TO_MEMBER_P. (build_binary_op): Do not use of comp_target_types. (pointer_diff): Remove OFFSET_TYPE case. (build_unary_op): Adjust pointer-to-member handling. (unary_complex_lvalue): Likewise. (check_for_casting_away_constness): Add description parameter. (build_static_cast): Pass it. (build_reinterpret_cast): Use check_for_casting_away_constness. (build_const_cast): Adjust pointer-to-member handling. (build_c_cast): Likewise. (convert_for_assignment): Remove OFFSET_TYPE error message. (comp_ptr_ttypes_real): Adjust pointer-to-member handling. (comp_ptr_ttypes_reinterpret): Remove. (casts_away_constness_r): Adjust pointer-to-member handling. (casts_away_constness): Liekwise. (strip_all_pointer_quals): Remove. * typeck2.c (digest_init): Adjust pointer-to-member handling. (build_m_component_ref): Likewise. 2003-07-22 Wolfgang Bangerth * lex.c (unqualified_fn_lookup_error): Mention that the error message needs to be kept in synch with the manual. 2003-07-22 Nathan Sidwell PR c++/11614 * decl.c (grokdeclarator): An array member is only a flexible array member if the field itself is the array. 2003-07-22 Kriang Lerdsuwanakij PR c++/10793 * decl.c (xref_basetypes): Handle error_mark_node. 2003-07-22 Nathan Sidwell * cp-tree.h (enum cp_lvalue_kind): Add clk_packed. * tree.c (lvalue_p_1): Set it. * class.c (check_field): Don't allow non-packed non-POD fields to be packed. * call.c (reference_binding): Need a temporary for all bitfield and packed fields. (convert_like_real): Check it is ok to make a temporary here. 2003-07-21 Nathan Sidwell * cp-tree.h (hack_identifier): Remove. * method.c (hack_identifier): Remove. * semantics.c (finish_id_expression): Expand hack_identifier here. Simplify. 2003-07-19 Kaveh R. Ghazi * call.c class.c decl.c decl2.c g++spec.c lex.c parser.c pt.c rtti.c semantics.c typeck.c: Remove unnecessary casts. 2003-07-18 Nathan Sidwell * cp-tree.h (hack_identifier): Remove. * method.c (hack_identifier): Remove. * semantics.c (finish_id_expression): Expand hack_identifier here. Simplify. 2003-07-18 Nathan Sidwell * cp-tree.h (finish_non_static_data_member): Add object param. * method.c (hack_identifier): Adjust. * pt.c (tsubst_copy_and_build) : Don't search again for a FIELD_DECL. * semantics.c (finish_non_static_data_member): Add object parameter. Always save the DECL in the COMPONENT_REF. * call.c (resolve_scoped_fn_name): Adjust. 2003-07-17 Zack Weinberg * pt.c (get_bindings): Make definition consistent with forward declaration. 2003-07-17 Kriang Lerdsuwanakij PR c++/7809 * friend.c (add_friend): Check access for member functions and templates. 2003-07-17 Gabriel Dos Reis PR c++/10668 * typeck.c (build_class_member_access_expr): Improve diagnostic. 2003-07-16 Mark Mitchell PR c++/11547 * cp-tree.h (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P): New macro. (DECL_PRETTY_FUNCTION_P): Use VAR_DECL_CHECK. * decl.c (duplicate_decls): Merge DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. * parser.c (cp_parser_postfix_expression): Adjust call to cp_parser_initializer_list and cp_parser_parenthesized_expression_list. (cp_parser_parenthesized_expression_list): Add non_constant_p. (cp_parser_new_placement): Adjust call to cp_parser_parenthesized_expression_list. (cp_parser_direct_new_declarator): Likewise. (cp_parser_conditional_expression): Remove. (cp_parser_constant_expression): Parse an assignment-expression, not a conditional-expression. (cp_parser_simple_declaration): Resolve expression/declaration ambiguity more quickly. (cp_parser_mem_initializer): Adjust call to cp_parser_parenthesized_expression_list. (cp_parser_init_declarator): Keep track of whether or not the initializer is a constant-expression. (cp_parser_initializer): Add non_constant_p parameter. (cp_parser_initializer_clause): Likewise. (cp_parser_initializer_list): Likewise. (cp_parser_attribute_list): Adjust call to cp_parser_parenthesized_expression_list. (cp_parser_functional_cast): Likewise. * pt.c (tsubst_decl): Copy DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. (tsubst_expr): Tweak use of DECL_PRETTY_FUNCTION_P. * semantics.c (finish_id_expression): Use DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. 2003-07-16 Neil Booth * lang-options.h: Remove. 2003-07-16 Andrew Pinski PR c/10962 * class.c (field_decl_cmp): Remove. (resort_field_decl_cmp): Remove. (resort_sorted_fields): Remove. (add_fields_to_vec): Rename to ... (add_fields_to_record_type): this. (finish_struct_1): Change to be using sorted_fields_type's fields. * cp-tree.h (lang_decl): In lang_decl_u3 change sorted_fields to be a pointer to sorted_fields_type. (resort_sorted_fields): Remove prototype. * search.c (lookup_field_1): Change to be using sorted_fields_type's fields. 2003-07-16 Kriang Lerdsuwanakij PR c++/5421 * decl.c (grokdeclarator): Handle TEMPLATE_ID_EXPR if friend is a member of other class. * friend.c (do_friend): Don't build TEMPLATE_DECL if friend is a specialization of function template. 2003-07-16 Gabriel Dos Reis PR c++/10903 * pt.c (convert_nontype_argument): Fix thinko in diagnostic. Improve. 2003-07-15 Mark Mitchell * cp-tree.def (LOOKUP_EXPR): Remove. * cp-tree.h (cp_id_kind): Add CP_ID_KIND_UNQUALIFIED_DEPENDENT. (LOOKUP_EXPR_GLOBAL): Remove. (get_bindings): Remove. (is_aggr_type_2): Remove. * call.c (resolved_scoped_fn_name): Remove support for LOOKUP_EXPR. * decl.c (grokfndecl): Likewise. (grokdeclarator): Likewise. * error.c (dump_decl): Likewise. (dump_expr): Likewise. * friend.c (do_friend): Likewise. * init.c (build_offset_ref): Likewise. * lex.c (unqualified_fn_lookup_error): Use pedwarn. Do not create LOOKUP_EXPRs * mangle.c (write_expression): Remove support for LOOKUP_EXPR. * parser.c (cp_parser_postfix_expression): Modify Koenig lookup test. * pt.c (get_bindings): Give it internal linkage. (check_explicit_specialization): Remove support for LOOKUP_EXPR. (lookup_template_function): Likewise. (for_each_tempalte_parm_r): Likewise. (tsubst_decl): Likewise. (tsubst_qualified_id): Handle template template parameters. (tsubst_copy): Remove support for LOOKUP_EXPR. (tsubst_copy_and_build): Likewise. (most_general_template): Likewise. (value_dependent_expression_p): Likewise. (type_dependent_expression_p): Note that IDENTIFIER_NODEs are always dependent. * semantics.c (perform_koenig_lookup): Do not create IDENTIFIER_NODEs. (finish_fname): Likewise. (finish_id_expression): Likewise. * tree.c (is_aggr_type_2): Remove. 2003-07-16 Gabriel Dos Reis PR c++/11531 * typeck.c (check_return_expr): Fix thinko in diagnostic. 2003-07-15 Kriang Lerdsuwanakij PR c++/10108 * pt.c (tsubst_decl) : Add a check for error_mark_node. 2003-07-14 Mark Mitchell PR c++/11509 * pt.c (dependent_scope_ref_p): New function. (value_dependent_expression_p): Use it. (type_dependent_expression_p): Likewise. * pt.c (tsubst_friend_function): Use reregister_specialization. PR c++/7019 * cp-tree.h (lookup_qualified_name): Adjust prototype. * decl.c (lookup_qualified_name): Add complain parameter. Adjust call to is_aggr_type. * parser.c (cp_parser_lookup_name): Adjust call to lookup_qualified_name. * pt.c (tsubst_qualified_id): Likewise. (tsubst_copy_and_build): Likewise. * semantics.c (finish_qualified_id_expr): Deal with erroneous expressions. 2003-07-14 Gabriel Dos Reis PR c++/11510 * call.c (op_error): Properly format REALPART_EXPR and IMAGPART_EXPR. * error.c (dump_expr): Likewise. 2003-07-14 Gabriel Dos Reis * error.c (dump_expr): Handle EMPTY_CLASS_EXPR. 2003-07-14 Gabriel Dos Reis PR c++/5293 * call.c (initialize_reference): Improve diagnostic. 2003-07-14 Kriang Lerdsuwanakij PR c++/11154 * pt.c (more_specialized_class): Add full_args parameter. (most_specialized_class): Adjust calls to more_specialized_class. * cp-tree.h (more_specialized_class): Adjust declaration. 2003-07-14 Dan Nicolaescu * lex.c (enum tree_node_kind): Delete. 2003-07-13 Mark Mitchell PR c++/11503 * cp-tree.h (DECL_SELF_REFERENCE_P): New macro. (SET_DECL_SELF_REFERENCE_P): Likewise. * class.c (build_self_reference): Use SET_DECL_SELF_REFERENCE_P. * pt.c (tsubst_decl): Copy it. * search.c (lookup_base): Use DECL_SELF_REFERENCE_P. * pt.c (reregister_specialization): Fix thinko in previous change. * cp-tree.h (cp_id_kind): New type. (unqualified_name_lookup_error): Change prototype. (unqualified_fn_lookup_error): New function. (do_identifier): Remove. (do_scoped_id): Likewise. (tsubst_copy_and_build): Change prototype. (reregister_specialization): New function. (perform_koenig_lookup): Likewise. (finish_id_expression): Likewise. * call.c (build_method_call): Adjust call to unqualified_name_lookup_error. * decl.c (duplicate_decls): Use reregister_specialization. * lex.c (is_global): Remove. (unqualified_name_lookup_error): Return a value. (do_identifier): Remove. (do_scoped_id): Likewise. (identifier_typedecl_value): Remove. (unqualified_fn_lookup_error): New function. * parser.c (cp_parser_id_kind): Remove. (cp_parser_non_constant_id_expression): Remove. (cp_parser_primary_expression): Use finish_id_expression. (cp_parser_class_or_namespace_name): Use cp_id_kind, not cp_parser_id_kind. (cp_parser_postfix_expression): Use perform_koenig_lookup. (cp_parser_template_argument): Use cp_id_kind. (cp_parser_fold_non_dependent_expr): Adjust call to tsubst_copy_and_build. * pt.c (unregister_specialization): Rename to ... (reregister_specialization): This. (tsubst_friend_function): Use it. (maybe_fold_nontype_arg): Adjust call to tsubst_copy_and_build. (tsubst_qualified_id): Likewise. (tsubst_expr): Likewise. (tsubst_copy_and_build): Add function_p parameter. Use finish_id_expression. Introduce RECUR macro. (tsubst_non_call_postfix_expression): New function. (regenerate_decl_from_template): Use reregister_specialization. * semantics.c (perform_koenig_lookup): New function. (finish_id_expression): Likewise. 2003-07-13 Kriang Lerdsuwanakij * pt.c (push_access_scope_real): Remove. (push_access_scope): Move code from push_access_scope_real. (pop_access_scope): Don't check for TEMPLATE_DECL. (instantiate_template): Defer access checking during template substitution. (regenerate_decl_from_template): Tidy. 2003-07-11 Nathanael Nerode PR c++/11437 * operators.def: Add definitions for __imag__, __real__. 2003-07-11 Nathan Sidwell PR c++/11050 * parser.c (cp_parser_expression_list): Rename to ... (cp_parser_parenthesized_expression_list): ... here. Add attribute parameter, parse the surounding parentheses. (cp_parser_skip_to_closing_parenthesis): Add recover and or_comma parameters. Return int. (cp_parser_skip_to_closing_parenthesis or comma): Remove. (cp_parser_postfix_expression): Adjust function call parsing. (cp_parser_new_placement): Adjust. (cp_parser_new_initializer): Likewise. (cp_parser_cast_expression): Likewise. (cp_parser_selection_statement): Likewise. (cp_parser_mem_initializer): Likewise. (cp_parser_asm_definition): Likewise. (cp_parser_init_declarator): Likewise. (cp_parser_declarator): Make cdtor_or_conv_p an int ptr. (cp_parser_direct_declarator): Likewise. Check for a parameter list on cdtors & conv functions. (cp_parser_initializer): Adjust. (cp_parser_member_declaration): Adjust. (cp_parser_attribute_list): Move code into cp_parser_parens_expression_list. (cp_parser_functional_cast): Adjust. * pt.c (type_dependent_expression_p): Erroneous expressions are non-dependent. 2003-07-11 Geoffrey Keating * decl.c (cp_finish_decl): Handle 'used' attribute. * cp-lang.c (c_reset_state): New dummy routine. * cp-tree.h (finish_file): Move prototype to c-common.h. * parser.c (c_parse_file): Rename from yyparse; don't call finish_file. 2003-07-11 Mark Mitchell PR c++/8327 * pt.c (tsubst_qualified_id): Implement suggested resolution for Core Issue 2. (type_dependent_expression_p): Likewise. 2003-07-10 Mark Mitchell * typeck.c (build_binary_op): Do not warn about signed vs. unsigned comparisons in the bodies of templates. PR c++/9411 * parser.c (cp_parser_postfix_expression): Check dependency of functions. 2003-07-09 Mark Mitchell PR c++/10032 * decl.c (cxx_init_decl_processing): With -pedantic, pedwarns are still errors. PR c++/10527 * error.c (decl_to_string): Do not print default argument expressions. * cp-tree.h (break_out_calls): Remove declaration. * tree.c (break_out_calls): Remove. * typeck.c (build_modify_expr): Avoid invalid sharing of trees. 2003-07-09 Nathan Sidwell PR c++ 9483 * class.c (check_field_decls): Pass DECL_NAME to constructor_name_p. * decl2.c (constructor_name_p): Avoid repeated constructor_name calls. * decl.c (grokdeclarator): Refactor ctor/dtor detection. 2003-07-09 Mark Mitchell * typeck.c (build_x_unary_op): Take note of the fact that PREINCREMENT_EXPR and POSTINCREMENT_EXPR are binary operations on trees. * parser.c (cp_parser_primary_expression): Preserve the form of qualified expressions in templates, even if they are not dependent. * pt.c (convert_nontype_argument): Handle non-dependent SCOPE_REFs. (tsubst_qualified_id): Likewise. * search.c (accessible_p): Treat everything in the body of a template as accessible. 2003-07-08 Mark Mitchell * cp-tree.def (NON_DEPENDENT_EXPR): New node. * cp-tree.h (build_call_from_tree): Remove. (build_member_call): Likewise. (dependent_template_arg_p): Remove. (any_dependent_template_arguments_p): New function. (dependent_template_id_p): Likewise. (any_type_dependent_arguments_p): Likewise. (build_non_dependent_expr): Likewise. (build_non_dependent_args): Likewise. (build_x_compound_expr): Adjust prototype. * call.c (build_new_method_call): Handle non-dependent expressions correctly. * decl2.c (grok_array_decl): Likewise. (build_offset_ref_call_from_tree): Likewise. (build_call_from_tree): Remove. * error.c (dump_decl): Handle NON_DEPENDENT_EXPR. (dump_expr): Likewise. * init.c (build_member_call): Remove. * mangle.c (write_expression): Update handling for template-ids. * parser.c (cp_parser_primary_expression): Use any_dependent_template_arguments_p. Update constant-expression handling. (cp_parser_postfix_expression): Use any_type_dependent_arguments_p. Simplify call processing. (cp_parser_unary_expression): Simplify. (cp_parser_expression): Adjust for changes to build_x_compound_expr. (cp_parser_template_argument): Implement standard-conforming parsing of non-type template arguments. (cp_parser_direct_declarator): Use cp_parser_fold_non_dependent_expr. (cp_parser_fold_non_dependent_expr): New function. (cp_parser_next_token_ends_template_argument_p): Likewise. * pt.c (convert_template_argument): Do not call maybe_fold_nontype_arg. (tsubst_baselink): Likewise. (tsubst_copy_and_build): Share common code. Make sizeof/alignof processing work correctly for non-dependent expressions. Adjust handling of COMPOUND_EXPR. Simplify call processing. (value_dependent_expression_p): Deal with functional casts and sizeof/alignof correctly. (type_dependent_expression_p): Handle overloaded functions. (any_type_dependent_arguments_p): New function. (any_dependent_template_arguments_p): Likewise. (dependent_template_p): Treat SCOPE_REFs as dependent. (dependent_template_id_p): Simplify. (build_non_dependent_expr): New function. (build_non_dependent_args): Likewise. * semantics.c (finish_stmt_expr): Don't make dependent statement-expresions have void type. (finish_call_expr): Handle non-dependent expressions correctly. * tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues. * typeck.c (cxx_sizeof_or_alignof_type): Give the expression type size_t, even in templates. (expr_sizeof): Likewise. (finish_class_member_access_expr): Handle non-dependent expressions correctly. (build_x_indirect_ref): Likewise. (build_x_binary_op): Likewise. (build_x_unary_op): Likewise. (build_x_conditional_expr): Likewise. (build_x_compound_expr): Likewise. * typeck2.c (build_x_arrow): Likewise. 2003-07-09 Jan Hubicka * cp-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New. * decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS. (start_function): Use DECL_ESTIMATED_INSNS. * optimize.c (maybe_clone_body): Use DECL_ESTIMATED_INSNS. * decl2.c (maybe_emit_vtables): Fix marking vtables as needed in unit-at-a-time 2003-07-08 Kriang Lerdsuwanakij PR c++/11030 * pt.c (instantiate_class_template): Don't call xref_tag to inject name when the friend class is a specialization. 2003-07-07 Mark Mitchell * cp-tree.h (build_scoped_method_call): Remove. (lookup_qualified_name): Remove parameter. (tsubst_copy_and_build): Declare. (finish_qualified_object_call_expr): Remove. (check_accessibility_of_qualified_id): New function. (finish_qualified_id_expr): Likewise. (non_reference): Likewise. (build_expr_from-tree): Remove. * call.c (non_reference): Remove. (build_scoped_method_call): Likewise. (build_method_call): Use error_operand_p. Assert that we are not processing a template. (standard_conversion): Use non_reference. * class.c (build_vtbl_entry_ref): Likewise. (build_vtbl_ref_1): Likewise. * cvt.c (build_expr_type_conversion): Use non_reference. * decl.c (lookup_qualified_name): Remove flags parameter. (grok_op_properties): Use non_reference. * decl2.c (grok_array_decl): Likewise. (build_expr_from_tree): Remove. (build_offset_ref_call_from_tree): Update comment. * error.c (parm_to_string): Call reinit_global_formatting_buffer. * except.c (prepare_eh_types): Use non_reference. (can_convert_eh): Likewise. * init.c (build_dtor_call): Avoid using build_method_call. * mangle.c (write_template_param): Remove misleading comment. * method.c (locate_copy): Use non_reference. * parser.c (cp_parser_scope_through_which_access_occurs): Remove. (cp_parser_primary_expression): Do not create SCOPE_REFs is non-dependent contexts. (cp_parser_postfix_expression): Use finish_qualified_id_expr. (cp_parser_direct_declarator): Use tsubst_copy_and_build, not build_expr_from_tree. (cp_parser_lookup_name): Adjust call to lookup_qualified_name. Use check_accessibility_of_qualified_id. * pt.c (maybe_fold_nontype_arg): Use tsubst_copy_and_build, not build_expr_from_tree. (tsubst_baselink): New function. (tsubst_qualified_id): Likewise. (tsubst_copy): Use them. Remove support for METHOD_CALL_EXPR. (tsubst_expr): Adjust call to lookup_qualified_name. (tsubst_copy_and_build): Handle SCOPE_REFs specially. Adjust handling of CALL_EXPRs. (value_dependent_expression_p): Use INTEGRAL_OR_ENUMERATION_TYPE_P. * rtti.c (get_tinfo_decl_dynamic): Use non_reference. * search.c (check_final_overrider): Likewise. * semantics.c (check_accessibility_of_qualified_id): New function. (finish_qualified_object_call_expr): Remove. * typeck.c (target_type): Use non_reference. (cxx_sizeof_or_alignof_type): Likewise. (dubious_conversion_warnings): Likewise. (convert_for_initialization): Likewise. (non_reference): New function. 2003-07-07 Kaveh R. Ghazi * decl.c (print_binding_level, print_other_binding_stack, print_binding_stack): Merge uses of HOST_PTR_PRINTF with adjacent stdio calls. * ptree.c (cxx_print_decl, cxx_print_binding): Likewise. 2003-07-07 Andreas Jaeger * friend.c: Convert to ISO C90 prototypes. * Make-lang.in ($(srcdir)/cp/cfns.h): Use ANSI-C as output language. * cfns.h: Regenerate. * typeck.c: Convert remaining prototypes to ISO C90. * search.c: Likewise. * decl2.c (build_expr_from_tree): Convert prototype to ISO C90. * semantics.c (expand_or_defer_fn): Likewise * mangle.c (discriminator_for_string_literal): Likewise. * g++spec.c (lang_specific_driver): Likewise. * search.c (lookup_base_r): Remove unused variable. 2003-07-07 Nathan Sidwell * semantics.c: (genrtl_try_block) Adjust emit_line_note calls. 2003-07-07 Andreas Jaeger * search.c (lookup_base_r): Remove unused variable. 2003-07-06 Michael Chastain PR debug/10055 * lex.c (cxx_init): Call push_srcloc and pop_srcloc rather than assigning to input_filename directly. 2003-07-06 Kazu Hirata * call.c: Fix comment formatting. * class.c: Likewise. * cp-tree.h: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * error.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * typeck.c: Likewise. 2003-07-06 Mark Mitchell PR c++/11345 * search.c (lookup_base_r): Remove is_non_public and within_current_scope parameters. Remove other dead code. (lookup_base): Adjust call to lookup_base_r. (adjust_result_of_qualified_name_lookup): Improve comment. * semantics.c (finish_call_expr): Use maybe_dummy_object. 2003-07-06 Neil Booth * cp-lang.c (LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT): Override. 2003-07-05 Mark Mitchell PR c++/11431 * typeck.c (build_static_cast): Check for reference conversions earlier. 2003-07-04 Mark Mitchell * cp-tree.h (perform_integral_promotions): Declare. * call.c (build_addr_func): Use decay_conversion. (convert_arg_to_ellipsis): Likewise. Remove misleading comment. (convert_for_arg_passing): Use perform_integral_promotions. * cvt.c (build_expr_type_conversion): Use decay_conversion. (type_promotes_to): Do not return a cv-qualified type. * decl.c (grok_reference_init): Fix formatting. (get_atexit_node): Use decay_conversion. (build_enumerator): Use perform_integral_promotions. * init.c (build_vec_init): Use decay_conversion. * semantics.c (finish_expr_stmt): Likewise. (finish_switch_cond): Use perform_integral_promotions. * typeck.c (default_conversion): Likewise. (perform_integral_promotions): New function. (build_indirect_ref): Use decay_conversion. (build_array_ref): Use perform_integral_promotions. (convert_arguments): Use decay_conversion. (build_unary_op): Use perform_integral_promotions. (build_c_cast): Use decay_conversion. (build_modify_expr): Likewise. (convert_for_initialization): Likewise. * typeck2.c (build_x_arrow): Likewise. 2003-07-04 Kazu Hirata * call.c: Fix comment typos. * class.c: Likewise. * cp-tree.h: Likewise. * cvt.c: Likewise. * decl2.c: Likewise. * decl.c: Likewise. * init.c: Likewise. * mangle.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. 2003-07-04 Zack Weinberg * parser.c (cp_lexer_read_token): No need to handle string constant concatenation. 2003-07-03 Kaveh R. Ghazi * cp-tree.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_CXXDIAG): Define. (cp_error_at, cp_warning_at, cp_pedwarn_at): Mark with ATTRIBUTE_GCC_CXXDIAG. 2003-07-03 Mark Mitchell * call.c (build_addr_func): Handle bound pointers-to-members. (build_method_call): Do not call resolve_offset_ref. (implicit_conversion): Likewise. (resolve_scoped_fn_name): Use finish_non_static_data_member, not resolve_offset_ref. (resolve_args): Do not call resolve_offset_ref. (build_conditional_expr): Likewise. (build_new_method_call): Likewise. * cp-tree.def (OFFSET_REF): Update documentation. * cvt.c (cp_convert_to_pointer): Update handling of conversions from pointers to members to pointers. (ocp_convert): Do not call resolve_offset_ref. (convert_to_void): Likewise. (build_expr_type_conversion): Likewise. * decl2.c (delete_sanity): Likewise. * init.c (resolve_offset_ref): Simplify greatly. (build_vec_delete): Do not call resolve_offset_ref. * parser.c (cp_parser_postfix_expression): Call resolve_offset_ref if appropriate. (cp_parser_unary_expression): Use cp_parser_simple_cast_expression. (cp_parser_delete_expression): Likewise. (cp_parser_cast_expression): Likewise. (cp_parser_pm_expression): Use cp_parser_binary_op. (cp_parser_simple_cast_expression): New function. * rtti.c (build_dynamic_cast_1): Do not call resolve_offset_ref. * semantics.c (finish_increment_expr): Likewise. (finish_typeof): Likewise. * tree.c (lvalue_p_1): Do not handle OFFSET_REF. * typeck.c (require_complete_type): Do not handle OFFSET_REFs. (decay_conversion): Do not call resolve_offset_ref. (finish_class_member_access_expr): Likewise. (convert_arguments): Likewise. (build_x_binary_op): Handle DOTSTAR_EXPR. (condition_conversion): Do not call resolve_offset_ref. (unary_complex_lvalue): Likewise. (build_static_cast): Likewise. (build_reinterpret_cast): Likewise. (build_const_cast): Likewise. (build_c_cast): Likewise. (build_modify_expr): Likewise. (convert_for_assignment): Likewise. (convert_for_initialization): Likewise. * typeck2.c (build_x_arrow): Likewise. (build_m_component_ref): Simplify. * call.c (build_scoped_method_call): Use convert_to_void. (build_method_call): Likewise. * class.c (check_field_decls): Remove dead code. * cvt.c (convert_from_reference): Remove OFFSET_TYPE handling. * decl2.c (grok_array_decl): Remove dead code. (arg_assoc_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE as pointer-to-member representation. * init.c (build_offset_ref): Tidy. (build_vec_delete_1): Use convert_to_void. * mangle.c (write_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE as pointer-to-member representation. 2003-07-03 Nathan Sidwell PR c++/9162 * decl.c (grokdeclarator): Return friend decls, not void_type_node. * decl2.c (grokfield): Alter friend decl check. * parser.c (struct cp_parser): Document default_arg chain on unparsed_functions_queue. (cp_parser_save_default_args): New. (cp_parser_init_declarator, cp_parser_function_definition, cp_parser_member_declaration): Call it. (cp_parser_class_specifier): Remove unused variable. Alter processing of unparsed_functions_queue. 2003-07-03 Kaveh R. Ghazi * class.c (add_method, check_field_decl): Fix format specifier. * decl.c (duplicate_decls, pushdecl, check_goto, fixup_anonymous_aggr, maybe_commonize_var, grokdeclarator, start_enum): Likewise. * decl2.c (ambiguous_decl): Likewise. * pt.c (redeclare_class_template): Likewise. 2003-07-02 Nathan Sidwell PR c++/10219 * pt.c (type_unification_real): Don't unify exprs of error type. * tree.c (error_type): Don't die on error_type. PR c++/9779 * decl2.c (arg_assoc_class): Don't die on NULL type. * typeck.c (type_unknown_p): Don't die on untyped expressions. 2003-07-01 Mark Mitchell PR c++/6949 * decl2.c (grokfield): Create TEMPLATE_DECLs for methods in local classes. 2003-07-01 Kaveh R. Ghazi * error.c (locate_error): %P takes an `int', not a `tree'. 2003-07-02 Jan Hubicka * decl2.c (defer_fn): Set DECL_DEFER_OUTPUT. (finish-file): Do not process function with DECL_DEFER_OUTPUT clear; clear DECL_DEFER_OUTPUT once function is processed; avoid flags massaging. * cp-tree.h (DECL_NEEDED_P): Support unit-at-a-time (expand_or_defer_fn): Declare. (lower_function): Declare. * decl.c (start_cleanup_fn): Use expand_or_defer_fn. * decl2.c: Include cgraph.h and varpool.h (maybe_emit_vtables): Make explicit instantations as needed. (mark_member_pointers, lower_function): New functions. (finish_file): Do unit-at-a-time. * method.c (synthesize_method): Use expand_or_defer_fn. * optimize.c (maybe_clone_body): Use expand_or_defer_fn. * parser.c (cp_parser_function_definition_after_decl): Use expand_or_defer_fn. * pt.c (instantiate_decl): Likewise. * semantics.c: Include cgraph.h (expand_or_defer_fn): Break out from ... (expand_body): ... here; deal with unit-at-a-time. * cp-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Define. 2003-07-01 Mark Mitchell * call.c (resolve_scoped_fn_name): Return error_mark_node for erroneous cases. 2003-07-01 Mark Mitchell PR c++/11149 * call.c (resolve_scoped_fn_name): Check that the qualifying scope is a class type. 2003-07-01 Giovanni Bajo PR c++/8046 * error.c (dump_decl): Handle BIT_NOT_EXPR as pseudo destructor calls. 2003-07-01 Nathan Sidwell * cp-tree.h (define_label): Replace filename and lineno arguments with a location_t. * decl.c (pop_label): Adjust define_label call. (define_label): Replace filename and lineno arguments with a location_t. * semantics.c (finish_label): Adjust define_label call. 2003-07-01 Mark Mitchell PR c++/9559 * decl2.c (grokfield): Do not build NOP_EXPRs around the error_mark_node. 2003-06-30 Neil Booth * Make-lang.in: Update. * cp-lang.c (c_language): Define. (LANG_HOOKS_INIT_OPTIONS): Use common hook. * cp-tree.h (cxx_init_options): Remove. * lex.c: Don't include diagnostic.h. (cxx_init_options): Remove. 2003-06-30 Giovanni Bajo PR c++/4933 * error.c (dump_expr): Support correctly the COMPOUND_EXPR tree generated within a template. Use dump_expr to dump an expression sizeof. 2003-06-30 Giovanni Bajo * mangle.c (write_expression): Exit gracefully when trying to mangle a CALL_EXPR. 2003-06-30 Giovanni Bajo PR c++/10750 * parser.c (cp_parser_primary_expression): A VAR_DECL with a (value- or type-) dependent expression as DECL_INITIAL is a valid constant-expression (at parser time). 2003-06-30 Giovanni Bajo PR c++/11106 * error.c (dump_decl): Call dump_decl to dump the DECL_NAME for a USING_DECL, instead of print_tree_identifier. 2003-06-29 Gabriel Dos Reis * cp-tree.h (language_to_string): Adjust declaration. * dump.c (cp_dump_tree): Adjust usage. * error.c (dump_char): Use output_formatted_scalar. Tidy. (parm_to_string): Lose unused parameter. Tidy. (expr_to_string): Likewise. (code_to_string): Likewise. (language_to_string): Likewise. (op_to_string): Likewise. (assop_to_string): Likewise. (digit_buffer): Remove. (dump_type): Format builtin vector type as __vector__. 2003-06-29 Gabriel Dos Reis * error.c (print_integer): Remove. (dump_type_suffix): Adjust. (dump_expr): Likewise. 2003-06-28 Nathan Sidwell * error.c (print_instantiation_partial_context): Take a location_t. (print_instantiation_full_context): Adjust. (print_instantiation_context): Adjust. * cp-tree.h (cp_line_of, cp_file_of): Remove. * error.c (cp_line_of, cp_file_of): Merge into ... (location_of): ... here. Make static, return a location_t. (cp_error_at, cp_warning_at, cp_pedwarn_at): Adjust. 2003-06-28 Nathan Sidwell PR c++/10784 * call.c (joust): Move warn_conversion check outwards. 2003-06-27 Zack Weinberg * decl.c (build_typename_type) * mangle.c (write_template_template_arg) * parser.c (cp_parser_scope_through_which_access_occurs) * pt.c (push_access_scope_real, push_access_scope, pop_access_scope) * repo.c (get_base_filename) * semantics.c (maybe_convert_cond): Mark the definition static, matching the forward declaration. 2003-06-27 Mark Mitchell PR c++/10468 * pt.c (tsubst): Handle qualified TYPEOF_TYPEs correctly. 2003-06-27 Mark Mitchell PR c++/10796 * decl.c (finish_enum): Implement DR377. * decl.c (cp_finish_decl): Don't make variables with reference type readonly while they are being initialized. 2003-06-26 Mark Mitchell PR c++/11332 * typeck.c (build_static_cast): Avoid returning expressions with reference type. 2003-06-26 Nathan Sidwell * call.c (build_op_delete_call): Use strip_array_call. Correct error message to say 'delete' or 'delete[]'. 2003-06-26 Giovanni Bajo PR c++/8266 * pt.c (check_explicit_specialization): When looking up a template function from an identifier outside class-scope, bind it to CP_DECL_CONTEXT. 2003-06-25 Mark Mitchell PR c++/10990 * search.c (lookup_base_r): Rely on accessible_p, rather than trying to emulate that logic here. PR c++/10931 * call.c (convert_like): Pass issue_conversion_warnings. (convert_like_with_context): Likewise. (convert_like_real): Add issue_conversion_warnings parameter. (perform_direct_initialization_if_possible): New function. * cp-tree.h (perform_direct_initialization_if_possible): Declare it. * typeck.c (check_for_casting_away_constness): New function. (build_static_cast): Rewrite. 2003-06-24 Nathan Sidwell * call.c (enforce_access): Assert we get a binfo. (build_op_delete_call): Pass a binfo to perform_or_defer_access_check. * class.c (alter_access): Likewise. * decl.c (make_typename_type): Likewise. (make_unbound_class_template): Likewise. * lex.c (do_identifier): Likewise. * method.c (hack_identifier): Likewise. * parser.c (cp_parser_lookup_name): Likewise. * search.c (lookup_member): Likewise. Move IDENTIFIER_CLASS_VALUE test. * semantics.c (finish_non_static_data_member): Likewise. (perform_or_defer_access_check): Expect a binfo. * typeck.c (comptypes): Expect types. * mangle.c (find_substitution): Don't pass a non-type to same_type_p * friend.c (make_friend_class): Likewise. * pt.c (check_default_tmpl_args): Likewise. (lookup_template_class): Likewise. 2003-06-24 Jan Hubicka * method.c (thunk_labelno): Move outside ifdef block to make garbage collector happy. 2003-06-24 Jan Hubicka * class.c (build_vtable): Make vtables. * cp-tree.h (DECL_VTABLE_OR_VTT_P): New macro. * decl2.c (output_vtable_inherit): Rename to ... (prepare_assemble_variable): ... this one; change interface. (maybe_emit_vtables): Do not call output_vtable_inherit. * cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Define. * cp-tree.h (prepare_assemble_variable): New. 2003-06-23 Andrew Pinski * method.c: add prototype for make_alias_for_thunk. (thunk_labelno, make_alias_for_thunk): only define if ASM_OUTPUT_DEF is defined. 2003-06-23 Jakub Jelinek * method.c (thunk_labelno): New variable. (make_alias_for_thunk): New function. (use_thunk): Use it if defined ASM_OUTPUT_DEF. Put the thunk into the same section as the function it is calling. Include gt-cp-method.h. * Make-lang.in (gt-cp-method.h): Depend on s-gtype. (cp/method.o): Depend on gt-cp-method.h. * config-lang.in (gtfiles): Add $(srcdir)/cp/method.c. 2003-06-23 Jan Hubicka * decl.c (register_dtor_fn): Mark cleanup as used. * decl2.c (mark_vtable_entries): Skip nops. * rtti.c (get_tinfo_ptr): Mark tinfo as used. (build_dynamic_cast_1): Likewise. (tinfo_base_init): Likewise. (emit_tinfo_decl): Likewise. 2003-06-23 Jakub Jelinek * mangle.c (hash_type): Val is the TREE_LIST itself, not a pointer to it. 2003-06-21 Gabriel Dos Reis PR c++/10784 * call.c (joust): Warn about choosing conversion sequence only if -Wconversion. 2003-06-21 Gabriel Dos Reis PR c++/10864 * call.c (op_error): Tidy. * error.c (dump_expr): Properly format 'T()' when T is an aggregate type. 2003-06-21 Gabriel Dos Reis PR c++/10915 * decl.c (grok_op_properties): Warn possible confusing conversion only if -Wconversion. 2003-06-20 Mark Mitchell PR c++/10749 * parser.c (cp_parser_class_head): See through dependent names when parsing a class-head. PR c++/10845 * pt.c (try_class_unification): Correct handling of member class templates. 2003-06-20 Nathan Sidwell * semantics.c (genrtl_finish_function): Adjust expand_function_end call. 2003-06-19 Mark Mitchell PR c++/10939 * pt.c (tsubst_decl): Do not try to substitute into non-dependent functions. (value_dependent_expression_p): Correct logic for FUNCTION_DECLs. PR c++/9649 * cp-tree.h (pushdecl_class_level): Change prototype. (push_class_level_binding): Likewise. * decl.c (add_binding): Reject duplicate static data members. (pushdecl_class_level): Return a value indicating whether or not the binding was valid. (push_class_level_binding): Likewise. * semantics.c (finish_member_declaration): Don't keep invalid declarations. PR c++/11041 * call.c (initialize_reference): Do not use cp_finish_decl to emit temporary variables. * cp-tree.h (static_aggregates): Declare. (pushdecl_top_level_and_finish): Likewise. * decl.c (pushdecl_top_level_1): New function. (pushdecl_top_level): Use it. (pushdecl_top_level_and_finish): New function. (initialize_local_var): Remove redundant code. (cp_finish_decl): Remove support for RESULT_DECLs. Don't check building_stmt_tree. * decl.h (static_aggregates): Remove. * decl2.c (get_guard): Use pushdecl_top_level_and_finish. * rtti.c (get_tinfo_decl): Use pushdecl_top_level_and_finish. (tinfo_base_init): Likewise. 2003-06-19 Matt Austern PR c++/11228 * init.c (build_zero_init): Assert that number of array elements is an integer constant. (build_default_init) Don't use build_zero_init for arrays with variable number of elements. 2003-06-19 Andreas Jaeger * cp-tree.h: Remove duplicated declarations. 2003-06-18 Nathanael Nerode * pt.c: Convert to ISO C. * semantics.c: Convert to ISO C. 2003-06-18 Nathan Sidwell * cp-tree.h (comp_except_specs, compparms, cp_has_mutable_p, at_least_as_qualified_p, more_qualified_p): Return bool. * typeck.c: ANSIFY function definitions. (comp_array_types): Take redeclaration bool parameter. (comptypes): Rearrange STRICT handling. (at_least_as_qualified_p, more_qualified_p, comp_cv_qualification): Cache cv quals. (compparms): Rearrange loop. 2003-06-18 Nathan Sidwell * cp-tree.h (COMPARE_RELAXED): Rename to ... (COMPARE_DERIVED): ... here. Adjust comment. (resolve_typename_type_in_current_instantiation): Remove. (cp_tree_equal, comptypes): Return a bool. * cvt.c (convert_to_reference): Adjust comptypes call. * pt.c (template_args_equal, unify,): Adjust cp_tree_equal call. (resolve_typename_type_in_current_instantiation): Remove. * tree.c (cp_tree_equal): Return bool. Cope with TEMPLATE_DECLs and IDENTIFIER_NODEs. Abort if undeciderable. Adjust recursive calls. Refactor code. * typeck.c (comp_array_types): Return bool. Lose callback. parameter. Adjust cp_tree_equal calls. (comptypes): Return bool. Adjust strict handling. Remove relaxed enumeration and java type handling. Deal with typename types here. Adjust recursive and cp_tree_equals calls. Adjust base and derived checking. (comp_target_types): Remove unreachable code. Adjust same_or_base_type_p calls. (ptr_reasonably_similar): Adjust base and derived check. * typeck.c (maybe_warn_about_returning_address_of_local): Remove unused calculation. (check_return_expr): Adjust error messages. * cp-tree.def (SCOPE_REF): Correct comment. 2003-06-17 Mark Mitchell * mangle.c (mangle_conv_op_name_for_type): Correct sprintf format string again. 2003-06-17 Robert Abeles * optimize.c (dump_function): Form complete flag name by prefixing 'fdump-' to string returned by dump_flag_name(). 2003-06-17 Mark Mitchell * mangle.c (mangle_conv_op_name_for_type): Correct sprintf format string. 2003-06-17 Jason Merrill PR c++/10929 * decl.c (grokfndecl): Don't mark a function inline for -finline-functions if it isn't defined. 2003-06-17 Mark Mitchell PR c++/10712 * class.c (handle_using_decl): Robustify. PR c++/11105 * cp-tree.h (DECL_CONV_FN_TYPE): New method. * mangle.c (struct globals): Remove internal_mangling_p. (write_unqualified_name): Use DECL_CONV_FN_TYPE. (write_template_parm): Don't write out the level number. (conv_type_names): New variable. (hash_type): New function. (compare_type): Likewise. (mangle_conv_op_name_for_type): Don't try to mangle conversion operator names. * search.c (lookup_conversion_operator): New function. (lookup_fnfields_1): Use it. 2003-06-17 Andreas Jaeger * except.c: Remove duplicate declaration of push_eh_cleanup. * call.c: Remove extra declaration of inhibit_warnings. 2003-06-16 Nathanael Nerode 2003-06-16 Jens-Michael Hoffmann * mangle.c: Convert to ISO C. 2003-06-16 Kaveh R. Ghazi * cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR macro. 2003-06-16 Nathanael Nerode * tree.c: Convert to ISO C. 2003-06-16 Kazu Hirata * cp-tree.h: Follow spelling conventions. * mangle.c: Likewise. * method.c: Likewise. * parser.c: Likewise. 2003-06-14 Nathan Sidwell * decl.c (start_function): Adjust init_function_start call. * method.c (use_thunk): Likewise. * semantics.c (genrtl_start_function): Likewise. 2003-06-14 Neil Booth * Make-lang.in: Remove c-options.o. 2003-06-13 Nathanael Nerode * lex.c: Convert to ISO C. 2003-05-19 Jens-Michael Hoffmann * init.c: removes use of PARAMS macro. Use ISO style function declarations. (Not copyright-significant change.) * rtti.c: Remove PARAMS. * typeck2.c: Convert to ISO C. 2003-06-12 Mark Mitchell PR c++/10635 * typeck.c (build_c_cast): Check that the destination type is complete. 2003-06-11 Mark Mitchell PR c++/10432 * cp-tree.h (finish_declarator): Remove. * decl.c (cp_finish_decl): Make sure to pop_nested_class even for erroneous declarations. * semantics.c (finish_declarator): Remove. 2003-06-11 Roger Sayle * decl2.c (generate_ctor_or_dtor_function): Avoid expanding a global static constructor/destructor if it will be empty, i.e. either doesn't call any ctors/dtors or only calls pure or const ctors/dtors. 2003-06-11 Mark Mitchell * mangle.c (tm_p.h): Include it. * Make-lang.in (cp/mangle.o): Depend on $(TM_P_H). PR c++/11131 * tree.c (cp_cannot_inline_fn): Check for "inline" before instantiation. 2003-06-10 Jason Merrill PR c++/10968 * pt.c (mark_decl_instantiated): Clear DECL_COMDAT. 2003-06-10 Andrew Pinski * decl.c (start_cleanup_fn): Move static 'counter' out, mark with GTY. (start_cleanup_cnt): New. 2003-06-10 Mark Mitchell PR c++/11131 * cp-tree.h (template_for_substitution): Declare. * decl2.c (mark_used): Use it when figuring out whether or not a function is inline. * pt.c (template_for_substitution): Give it external linkage. * tree.c (cp_cannot_inline_tree_fn): Instantiate as early as possible. 2003-06-09 Zack Weinberg PR 8861 * mangle.c (write_real_cst): New function. Implement ABI-compliant mangling of floating-point literals when -fabi-version>=2; provide backward compatibility with 3.3 when -fabi-version=1 (with warning). Clarify commentary. (write_template_arg_literal): Use write_real_cst. 2003-06-07 Andreas Jaeger * cp/decl.c (xref_tag): Remove undefined macro NONNESTED_CLASSES. 2003-06-07 Neil Booth * cp-lang.c (LANG_HOOKS_DECODE_OPTON): Drop. (LANG_HOOKS_HANDLE_OPTION): Override. * cp-tree.h (cxx_init_options): Update. * lex.c (cxx_init_options): Update. 2003-06-05 Jan Hubicka * Make-lang.in: Add support for stageprofile and stagefeedback 2003-06-04 J"orn Rennecke * decl.c (grokdeclarator): Error_mark_node in, error_mark_node out. 2003-06-04 Andreas Jaeger * g++spec.c (lang_specific_driver): Remove ALT_LIBM usage. 2003-06-03 Jason Merrill * cp/cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors. * cp/decl.c (reshape_init): Handle vectors. * testsuite/g++.dg/init/array10.C: New. 2003-06-03 Kriang Lerdsuwanakij PR c++/10940 * pt.c (check_explicit_specialization): Check for 'static' earlier. 2003-05-31 Diego Novillo * class.c (dump_array): Call CONSTRUCTOR_ELTS to access the operand of a CONSTRUCTOR node. 2003-05-31 Gabriel Dos Reis * decl.c (cp_binding_level::this_entity): Rename from this_class. (cxx_scope_descriptor): New function. (cxx_scope_debug): Likewise. (push_binding_level): Use it. (pop_binding_level): Likewise. (suspend_binding_level): Likewise. (resume_binding_level): Likewise. (pushlevel_class): Adjust use of this_class. (pushtag): Likewise. (lookup_name_real): Likewise. (global_scope_name): New variable. (initialize_predefined_identifiers): Initialize it. (push_namespace): Use it. (make_cxx_scope): New function. (pushlevel): Use it. (pushlevel_class): Likewise. (push_binding_level): Simplify. Loose the last two arguments. (make_binding_level): Remove. (initial_push__namespace_scope): New function. (push_namespace): Use it. Simplify. (cxx_init_decl_processing): Likewise. (declare_namespace_level): Remove. 2003-05-31 Kriang Lerdsuwanakij PR c++/10956 * pt.c (instantiate_decl): Don't use full template arguments if we are dealing with specializations. 2003-05-29 Gabriel Dos Reis * decl.c (ENABLE_SCOPE_CHECKING): Rename from DEBUG_BINDING_LEVELS. (binding_depth): Unconditionally define. (is_class_level): Likewise. (indent): Likewise. Take an indenting parameter. (push_binding_level): Remove conditional definittion. (pop_binding_level): Likewise. (suspend_binding_level): Likewise. (resume_binding_level): Likewise. (pushlevel): Likewise. (pushlevel_class): Likewise. (poplevel_class): Likewise. (pop_everything): Likewise. 2003-05-27 Gabriel Dos Reis * name-lookup.h (global_scope_p): New macro. * decl.c (pop_binding_level): Use it. Don't refer directly to global_binding_level. (suspend_binding_level): Likewise. (global_bindings_p): Likewise. (print_other_binding_stack): Likewise. (print_binding_stack): Likewise. (maybe_push_to_top_level): Likewise. (pushdecl_namespace_level): Likewise. (cxx_init_decl_processing): Likewise. (start_decl): Likewise. (cp_finish_decl): Likewise. (start_function): Likewise. (global_binding_level): Remove. 2003-05-25 Kriang Lerdsuwanakij * parser.c (cp_parser_explicit_instantiation): Restore old access before template instantiation. 2003-05-23 Geoffrey Keating * lang-specs.h: Use -o to specify preprocessor's output file. Make -no-integrated-cpp work when building PCH files. 2003-05-23 Kriang Lerdsuwanakij PR c++/10682 * pt.c (instantiate_class_template): Use DECL_ARTIFICIAL to check for implicitly created typedef to an enum. 2003-05-21 Jason Merrill * init.c (build_vec_delete): Copy the address into a temporary variable before calling build_vec_delete_1. * decl2.c (delete_sanity): Don't call stabilize_reference. 2003-05-21 Nathan Sidwell * pt.c (register_specialization): Update the decl's location, if necessary. (check_explicit_specialization): Likewise. 2003-05-20 Kaveh R. Ghazi * error.c (dump_expr): Use HOST_WIDE_INT_PRINT_DOUBLE_HEX. 2003-05-21 Danny Smith PR c++/9738 * decl.c (duplicate_decls): Re-invoke make_decl_rtl if the old decl had instantiated DECL_RTL. (Base on Richard Henderson 2003-05-13 patch to c-decl.c). 2003-05-19 Matt Austern * lang-options.h: Document -Wno-invalid-offsetof * typeck.c (build_class_member_access_expr): Don't complain about (Foo *)p->x for non-POD Foo if warn_invalid_offset is zero. 2003-05-18 Andrew Pinski * name-lookup.c (free_binding_entry): fix where the GTY markers are. (binding_entry_make): Make entry->chain NULL after getting an entry. fix the spelling of chain in a comment. (binding_table_free): speed up by having temporary variable. (binding_table_new): set table->chain to be NULL after allocating a table. (cxx_binding_make): use gcc_alloc instead of ggc_alloc_cleared and set binding->previous to NULL after getting an binding for speed. 2003-05-18 Gabriel Dos Reis * cp-tree.h (struct lang_type_class): Replace data member tags with hash-table nested_udts. (CLASSTYPE_NESTED_UTDS): Rename from CLASSTYPE_TAGS. * class.c (unreverse_member_declarations): Don't touch CLASSTYPE_TAGS. (pushclass): Use cxx_remember_type_decls. * decl.c (struct cp_binding_level): Replace data member tags with hash-table type_decls. (pop_binding_level): Handle level->type_decls. (kept_level_p): Adjust. (poplevel): Remove unused local variable. (bt_print_entry): New function. (print_binding_level): Use it. (push_namespace): Build current_binding_level->type_decls. (maybe_process_template_type_declaration): Adjust. (pushtag): Likewise. (clear_anon_tags): Use binding_table_remove_anonymous_types. (gettags): Remove. (cxx_remember_type_decls): Rename from storetags. Adjust. (lookup_tag): Use binding_table_find_anon_type. Tidy. (lookup_tag_reverse): Use binding_table_reverse_maybe_remap. (cxx_init_decl_processing): Build global_binding_level->type_decls. (store_parm_decls): Remove pointless code. * name-lookup.c (free_binding_entry): New variable. (ENTRY_INDEX): New macro. (struct binding_table_s): New datatype. (binding_entry_make): New function. (binding_entry_free): Likewise. (binding_table_construct): Likewise. (binding_table_free): Likewise. (binding_table_new): Likewise. (binding_table_expand): Likewise. (binding_table_insert): Likewise. (binding_table_find): Likewise. (binding_table_find_anon_type): Likewise. (binding_table_reverse_maybe_remap): Likewise. (binding_table_remove_anonymous_types): Likewise. (binding_table_foreach): Likewise. * name-lookup.h (binding_table): New type. (binding_entry): Likewise. (bt_foreach_proc): Likewise. (struct binding_entry_s): New datatype. (SCOPE_DEFAULT_HT_SIZE): New macro. (CLASS_SCOPE_HT_SIZE): Likewise. (NAMESPACE_ORDINARY_HT_SIZE): Likewise. (NAMESPACE_STD_HT_SIZE): Likewise. (GLOBAL_SCOPE_HT_SIZE): Likewise. (binding_table_new): Declare. (binding_table_free): Likewise. (binding_table_insert): Likewise. (binding_table_find_anon_type): Likewise. (binding_table_reverse_maybe_remap): Likewise. (binding_table_remove_anonymous_types): Likewise. (binding_table_foreach): Likewise. (binding_table_find): Likewise. (cxx_remember_type_decls): Likewise. * pt.c (bt_instantiate_type_proc): New function. (do_type_instantiation): Use it. * search.c (lookup_field_r): Use binding_table_find. 2003-05-18 Kriang Lerdsuwanakij * semantics.c (perform_deferred_access_checks): Don't discard checked access. 2003-05-17 Kaveh R. Ghazi * error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate libiberty VA_ macros, always use stdarg. * rtti.c (create_pseudo_type_info): Likewise. * tree.c (build_min_nt, build_min): Likewise. 2003-05-16 Kaveh R. Ghazi * ptree.c (cxx_print_type, cxx_print_xnode): Use string concatentation on HOST_WIDE_INT_PRINT_* format specifier to collapse multiple function calls into one. * tree.c (debug_binfo): Likewise. 2003-05-15 Jason Merrill PR c++/5388 * call.c (conditional_conversion): Don't consider implicit conversions if T2 is a base of T1. * cp-tree.h (DERIVED_FROM_P, UNIQUELY_DERIVED_FROM_P): Make boolean. (ACCESSIBLY_UNIQUELY_DERIVED_P, PUBLICLY_UNIQUELY_DERIVED_P): Likewise. * parser.c (cp_parser_primary_expression): Convert a static data member from reference. 2003-05-15 Mark Mitchell * call.c (build_op_delete_call): Avoid creating unnecessary types. * class.c (instantiate_type): Remove tests for tf_no_attributes. * cp-tree.h (tsubst_flags_t): Remove tf_no_attributes. (COMPARE_NO_ATTRIBUTES): Remove. * typeck.c (comptypes): Do not check COMPARE_NO_ATTRIBUTES. PR c++/8385 * semantics.c (finish_typeof): Refine type-dependency check. 2003-05-13 Jason Merrill * typeck.c (build_modify_expr): Don't always stabilize the lhs and rhs. Do stabilize the lhs of a MODIFY_EXPR used on the lhs. 2003-05-11 Kriang Lerdsuwanakij * method.c (synthesize_method): Call push/pop_deferring_access_checks. 2003-05-11 Kriang Lerdsuwanakij PR c++/10230, c++/10481 * semantics.c (finish_non_static_data_member): Handle when the non-static member is not from a base of the current class type. 2003-05-11 Kriang Lerdsuwanakij PR c++/10552 * pt.c (tsubst_copy): Handle TEMPLATE_DECL that is a member class template and has dependent context. 2003-05-10 Kriang Lerdsuwanakij * pt.c (instantiate_decl): Call push/pop_deferring_access_checks. 2003-05-10 Kriang Lerdsuwanakij PR c++/9252 * cp-tree.h (saved_scope): Remove check_access field. (tsubst_flags_t): Remove tf_parsing. * decl.c (maybe_push_to_top_level): Don't initialize scope_chain->check_access. (make_typename_type, make_unbound_class_template): Don't use tf_parsing. (register_dtor_fn): Use push/pop_deferring_access_checks instead of scope_chain->check_access. * method.c (use_thunk): Likewise. * parser.c (cp_parser_explicit_instantiation (cp_parser_constructor_declarator_p): Don't call push/pop_deferring_access_checks here. (cp_parser_template_argument, cp_parser_class_name): Don't use tf_parsing. (yyparse): Check flag_access_control. * pt.c (instantiate_class_template): Call push/pop_deferring_access_checks. * semantics.c (push_deferring_access_checks): Propagate dk_no_check. (perform_or_defer_access_check): Make sure basetype_path is a type before comparison. * call.c (build_op_delete_call, build_over_call): Use perform_or_defer_access_check. * class.c (alter_access): Likewise. * init.c (build_offset_ref): Likewise. * lex.c (do_identifier): Likewise. * method.c (hack_identifier): Likewise. * search.c (lookup_member): Likewise. * semantics.c (finish_non_static_data_member): Likewise. (simplify_aggr_init_exprs_r): Use push/pop_deferring_access_checks instead of flag_access_control. 2003-05-10 Kriang Lerdsuwanakij PR c++/9554 * parser.c (cp_parser_class_name): Remove check_access parameter. All caller adjusted. Update declaration. (cp_parser_lookup_name): Likewise. * semantics.c (push_deferring_access_checks): Change parameter type to enum deferring_kind. All caller adjusted. (resume_deferring_access_checks): Adjust to use new enum. (stop_deferring_access_checks): Likewise. (perform_or_defer_access_check): Likewise. * cp-tree.h (deferring_kind): New enum. (deferred_access): Adjust field type. (push_deferring_access_checks): Update declaration. 2003-05-09 Kriang Lerdsuwanakij PR c++/10555, c++/10576 * pt.c (lookup_template_class): Handle class template with multiple levels of parameters when one of the levels contain errors. 2003-05-08 Jason Merrill * init.c (build_new_1): Don't reuse a TARGET_EXPR in an expression. Undo some of the recent reorg. 2003-05-07 Richard Henderson PR c++/10570 * cfns.gperf: Comment out POSIX thread cancellation points, plus abort and raise. * cfns.h: Regenerate. 2003-05-07 Jason Merrill * call.c (build_conditional_expr): Don't assume that the folded expression has result_type. 2003-05-06 Kriang Lerdsuwanakij * typeck.c (build_unary_op): Deal with const qualifier in invalid pointer-to-member earlier. 2003-05-05 Jason Merrill PR c++/9537 * call.c (conditional_conversion): Build an RVALUE_CONV if we're just changing the cv-quals. (build_conditional_expr): Don't call convert to change cv-quals. 2003-05-05 Kriang Lerdsuwanakij PR c++/10496 * typeck.c (build_unary_op): Don't output const qualifier when output invalid pointer-to-member diagnostics. 2003-05-05 Kriang Lerdsuwanakij * decl.c: Fix typos. 2003-05-05 Kriang Lerdsuwanakij PR c++/4494 * decl.c (start_function): Use same_type_p to check return type of main. 2003-05-03 Zack Weinberg PR c/10604 * cp/typeck.c (build_x_compound_expr): No need to check extra_warnings as well as warn_unused_value. 2003-05-03 Kriang Lerdsuwanakij PR c++/9364, c++/10553, c++/10586 * decl.c (make_typename_type): Don't crash on illegal code. 2003-05-03 Nathan Sidwell * class.c (finish_struct): Use location_t and input_location directly. * decl.c (make_label_decl): Likewise. (use_label): Likewise. * decl2.c (warn_if_unknown_interface): Likewise. (start_static_initialization_or_destruction): Likewise. (generate_ctor_or_dtor_function): Likewise. (finish_file): Likewise. * error.c (print_instantiation_full_context): Likewise. * init.c (create_temporary_var): Likewise. * method.c (synthesize_method): Likewise. * parser.c (cp_token): Likewise. (cp_lexer_set_source_position_from_token): Likewise. (cp_lexer_get_preprocessor_token): Likewise. (cp_parser_statement): Likewise. * pt.c (tsubst_friend_function): Likewise. (instantiate_class_template): Likewise. (tsubst_decl): Likewise. (tsubst): Likewise. (instantiate_decl): Likewise. * semantics.c (begin_class_definition): Likewise. (expand_body): Likewise. 2003-05-01 Nathan Sidwell * class.c (finish_struct): Rename lineno to input_line. * decl.c (push_binding_level, pop_binding_level, suspend_binding_level, resume_binding_level, make_label_decl, use_label, start_function): Likewise. * decl2.c (warn_if_unknown_interface, start_static_initialization_or_destruction, generate_ctor_or_dtor_function, finish_file): Likewise. * error.c (cp_line_of, print_instantiation_full_context, print_instantiation_context): Likewise. * except.c (check_handlers_1, check_handlers): Likewise. * init.c (create_temporary_var): Likewise. * method.c (use_thunk, synthesize_method): Likewise. * parser.c (cp_lexer_set_source_position_from_token, cp_lexer_get_preprocessor_token): Likewise. * pt.c (push_tinst_level, pop_tinst_level, tsubst_friend_function, instantiate_class_template, tsubst_decl, tsubst, tsubst_expr, instantiate_decl): Likewise. * semantics.c (genrtl_try_block, finish_label_stmt, begin_class_definition, expand_body, genrtl_finish_function): Likewise. * tree.c (build_min_nt, build_min): Likewise. 2003-05-01 Mark Mitchell * decl2.c (comdat_linkage): Don't externalize explicit instantiations. 2003-05-01 Kriang Lerdsuwanakij PR c++/10554 * decl2.c (do_class_using_decl): Check if operand 0 of SCOPE_REF is not NULL. 2003-05-01 Steven Bosscher * cp-tree.h (struct lang_id2): Remove. Move fields from here... (struct lang_identifier): ... to here. (LANG_ID_FIELD): Remove. (SET_LANG_ID): Remove. (IDENTIFIER_LABEL_VALUE): Adjust for new lang_identifier. (SET_IDENTIFIER_LABEL_VALUE): Likewise. (IDENTIFIER_IMPLICIT_DECL): Likewise. (SET_IDENTIFIERL_IMPLICIT_DECL): Likewise. (IDENTIFIER_ERROR_LOCUS): Likewise. (SET_IDENTIFIER_ERROR_LOCUS): Likewise. 2003-05-01 Kriang Lerdsuwanakij PR c++/8772 * pt.c (convert_template_argument): Correct diagnostic. 2003-04-30 Kriang Lerdsuwanakij PR c++/9432, c++/9528 * decl2.c (validate_nonmember_using_decl): Handle SCOPE_REF. 2003-04-30 Garbiel Dos Reis * decl.c (check_previous_goto_1): Adjust prototype. (check_previous_goto): Adjust use. (check_switch_goto): Likewise. (use_label): Adjust. (check_previous_goto_1): Don't use pedwarn_with_file_and_line. (struct named_label_use_list): Use location_t datatype. 2003-04-29 Mark Mitchell PR c++/10551 * pt.c (mark_decl_instantiated): Defer all explicit instantiations that have not yet been written out. 2003-04-29 Mark Mitchell PR c++/10549 * class.c (layout_class_type): Mark overlong bitfields as having the maximum size permitted by their type, after layout. PR c++/10527 * error.c (dump_expr): Correctly handling of NEW_EXPR.4 2003-04-29 Kriang Lerdsuwanakij * call.c (build_operator_new_call): Fix typo. * lang-options.h: Likewise. 2003-04-29 Mark Mitchell PR c++/10515 * cp-tree.h (lookup_field_1): Declare it. * search.c (lookup_field_1): Make it public. * decl.c (reshape_init): Handle designated initializers. * decl.c (maybe_commonize_var): Further tweak support for systems without weak symbols. 2003-04-27 Mark Mitchell * decl.c (maybe_commonize_var): Fix thinko in last patch. 2003-04-27 Mark Mitchell PR c++/10506 * method.c (use_thunk): Decrement immediate_size_expand. PR c++/10503 * cp-tree.h (DECL_VAR_MARKED_P): New macro. (DECL_MAYBE_TEMPLATE): Remove. * class.c (fixed_type_or_null): Avoid infinite recursion. * decl.c (maybe_commonize_var): Make the code match the comments. * pt.c (instantiate_decl): Move call to import_export_decl. 2003-04-26 Mark Mitchell * decl2.c (finish_file): Fix merge botch. 2003-04-25 Mark Mitchell * decl2.c (finish_file): Don't call import_export_decl for functions that are not defined. (handle_class_head): Robustify. * pt.c (instantiate_decl): Do not call cp_finish_decl for variables that are not defined. 2003-04-24 Sylvain Pion * call.c (print_z_candidates): Fix off by one error. 2003-04-24 Nathan Sidwell PR c++/10337 * call.c (joust): Don't warn about conversion ops that are exact or cv-conversions. Rearrange to avoid multiple type comparisons. 2003-04-23 Mark Mitchell PR c++/10471 * call.c (build_cxx_call): Robustify. 2003-04-23 Neil Booth * Make-lang.in (lex.o): Remove mbchar.h. * lex.c (MULTIBYTE_CHARS): Lose. * parser.c (cp_lexer_get_preprocessor_token): CPP_OTHER handled in c-lex.c. 2003-04-23 Mark Mitchell PR c++/9847 * cp-tree.h (duplicate_tag_error): Remove. * class.c (duplicate_tag_error): Remove. * semantics.c (begin_class_definition): Return immediately for a duplicate class definition. PR c++/10451 * decl.c (grokdeclarator): Correct logic for "mutable" errors. 2003-04-22 Mark Mitchell PR c++/10446 * search.c (lookup_fnfields_1): Handle empty slots in the method vector. PR c++/10428 * decl.c (check_elaborated_type_specifier): New function, split out from ... (xref_tag): ... here. Use the new function in more places. * rtti.c (throw_bad_typeid): Use build_cxx_call. 2003-04-21 Mark Mitchell * call.c (build_over_call): Use build_cxx_call. (build_cxx_call): New method, split out of build_over_call. * cp-tree.h (language_function): Add can_throw. (build_cxx_call): Declare it. * decl.c (finish_function): If a function does not contain any calls to functions that can throw an exception, indicate that fact. * decl2.c (mark_used): Do not defer the instantiation of functions, if the current function does not throw. * optimize.c (maybe_clone_body): Copy TREE_NOTHROW to the clones. * pt.c (instantiate_decl): Make sure import_export_decl is called before emitting things. * rtti.c (throw_bad_cast): Use build_cxx_call. (build_dynamic_cast_1): Likewise. * typeck.c (build_function_call): Likewise. 2003-04-21 Nathan Sidwell PR c++/9881 * typeck.c (build_unary_op): Fold all COMPONENT_REF addr expressions. Reverts my 2002-08-08 patch. * typeck.c (comp_ptr_ttypes_real): Swap final && operands for cheaper early exit. 2003-04-20 Nathan Sidwell * cp/decl2.c (start_static_storage_duration_function): Take count arg, don't check if it wraps round. (generate_ctor_or_dtor_function): Add locus arg, use it. (generate_ctor_and_dtor_functions_for_priority): Data arg is a locus. (finish_file): Set line numbers to past EOF for synthesized functions. 2003-04-20 Nathan Sidwell PR c++/10405 * search.c (lookup_field_1): Final scan goes backwards for types, forwards for non-types. 2003-04-17 Roger Sayle PR c/10375 * decl.c (duplicate_decls): Preserve "const", "noreturn" and "nothrow" function attributes. 2003-04-17 Kriang Lerdsuwanakij PR c++/10347 * pt.c (type_dependent_expression_p): Handle array new. 2003-04-15 Mark Mitchell PR c++/10381 * parser.c (cp_parser_primary_expression): Reorganize logic for dealing with name lookup failures. 2003-04-15 Jason Merrill * decl2.c (mark_used): Don't instantiate anything if skip_evaluation. 2003-04-14 Ziemowit Laski * tree.c (build_cplus_array_type_1): Do not call uses_template_parms() on a NULL index_type. 2003-04-13 Roger Sayle * decl.c (duplicate_decls): Preserve pure and malloc attributes. 2003-04-12 Mark Mitchell PR c++/10300 * init.c (build_new_1): Reorganize. 2003-04-12 Zack Weinberg * class.c (initialize_array) * decl.c (reshape_init) * decl2.c (build_expr_from_tree) * init.c (build_zero_init) * pt.c (tsubst_copy, tsubst_copy_and_build) * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer) (ptm_initializer, class_initializer, get_pseudo_ti_init) * semantics.c (finish_compound_literal) * typeck.c (build_ptrmemfunc1) * typeck2.c (store_init_value, process_init_constructor) (build_functional_cast): Use build_constructor. 2003-04-12 Zack Weinberg * call.c (print_z_candidates): Use gcc_gettext_width, not strlen, to determine how much padding to use. 2003-04-10 Zack Weinberg * decl.c: Update all calls to shadow_warning. 2003-04-10 Mark Mitchell * class.c (layout_class_type): Correct handling for overlong bit-fields whose width is the same as an integer type. 2003-04-06 Zack Weinberg * cp-tree.def: Make fourth element for all 'c' and 'x' nodes zero. * cp-lang.c (cp_tree_size): New function. (LANG_HOOKS_TREE_SIZE): Override. * cp-tree.h (SOURCE_LOCUS, SRCLOC_FILE, SRCLOC_LINE, struct tree_srcloc, TS_CP_COMMON, TS_CP_SRCLOC): Kill. (union lang_tree_node): Remove common and srcloc members. (build_srcloc_here): Don't prototype. * decl.c (cp_tree_node_structure): Kill SRCLOC case. * pt.c (pending_templates): Correct comment. * tree.c (build_srcloc, build_srcloc_here): Kill. 2003-04-06 Zack Weinberg * call.c: Include intl.h. (print_z_candidate): Always use inform; get rid of errfn argument. Reorganize so that all the strings get picked up by xgettext. Note obligation of caller to pass first argument through gettext. (print_z_candidates): Update to match. Indent second and successive candidates by strlen() of translated message. (joust): Restructure ambiguous-conversion pedwarn so that translators see a complete sentence. Update calls to print_z_candidate. * Make-lang.in (cp/call.o): Update dependencies. 2003-04-05 Kaveh R. Ghazi * decl.c (set_current_binding_level): Delete, revert last change. (current_binding_level): Modify to allow it as as lvalue. 2003-04-04 Kaveh R. Ghazi * name-lookup.c (find_binding): Pass appropriate pointer type to POP_TIMEVAR_AND_RETURN. 2003-04-03 Kaveh R. Ghazi * Make-lang.in (cp-warn): Add $(STRICT_WARN). * cp-tree.h: Don't insist on having GNUC. 2003-04-03 Jason Merrill * cvt.c (ocp_convert): Only abort if we try to convert an object of TREE_ADDRESSABLE type. * class.c (build_vtable): Set DECL_ALIGN here. (get_vtable_decl): Not here. (layout_vtable_decl): Or here. (create_vtable_ptr): Or here. (layout_class_type): Or here. (check_bitfield_decl): Don't mess with field alignment. 2003-04-03 Kaveh R. Ghazi * operators.def (DEF_SIMPLE_OPERATOR, DEF_ASSN_OPERATOR, DEF_ASSN_OPERATOR): Delete spurious semi-colon. * rtti.c (dfs_class_hint_mark): Likewise. * decl.c (push_local_name, push_class_level_binding, maybe_inject_for_scope_var): Don't use POP_TIMEVAR_AND_RETURN in functions returning void. * decl2.c (add_using_namespace): Likewise. * decl.c (print_binding_level, print_other_binding_stack, print_binding_stack): Cast argument of %p specifier to void*. * ptree.c (cxx_print_decl): Likewise. * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK, VAR_FUNCTION_OR_PARM_DECL_CHECK, VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK, BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK, LANG_TYPE_CLASS_CHECK, LANG_TYPE_PTRMEM_CHECK, LANG_DECL_U2_CHECK): Add __extension__. * decl.c (set_current_binding_level): New macro. Use throughout when setting the current binding level. * cp-tree.h (cp_lvalue_kind, base_access): Delete trailing comma in enum. * method.c (mangling_flags): Likewise. * cp-tree.h (lang_type_header): Add __extension__ and use CHAR_BITFIELD for members. 2003-04-02 Geoffrey Keating PR other/9274 * mangle.c: Include gt-cp-mangle.h. (subst_identifiers): Mark with GTY. * config-lang.in (gtfiles): Add cp/mangle.c. * Make-lang.in: (gt-cp-mangle.h): New rule. (cp/mangle.o): Depends on gt-cp-mangle.h. 2003-04-01 Andrew Pinski * config-lang.in (gtfiles): Add \$(srcdir)/cp/name-lookup.c after \$(srcdir)/cp/name-lookup.h. * name-lookup.c: (cxx_binding_make): Use ggc_alloc_clearedinstead of ggc_alloc. Include gt-cp-name-lookup.h at the end of the file. * Make-lang.in: (gt-cp-name-lookup.h): Is generated by gengtype. (cp/name-lookup.o): Depends on gt-cp-name-lookup.h. 2003-03-31 Jason Merrill PR java/10145 * class.c (check_field_decl): Don't set DECL_ALIGN. 2003-03-30 Mark Mitchell PR c++/7647 * decl.c (grokdeclarator): Tidy, slightly. * search.c (lookup_field_1): Add want_type parameter. (lookup_field_r): Adjust call to lookup_field_1. 2003-03-30 Gabriel Dos Reis * Make-lang.in (cp/name-lookup.o): Add more dependencies. 2003-03-30 Gabriel Dos Reis * cp-tree.h (binding_for_name: Move to name-lookup.h Adjust prototype. (cxx_scope_find_binding_for_name): Likewise. * decl.c (find_binding: Move to name-lookup.c. (binding_for_name): Likewise. (cxx_scope_find_binding_for_name): Likewise. (BINDING_LEVEL): Remove. (push_binding): Tidy. (push_class_binding): Likewise. (pop_binding): Likewise. (poplevel): Likewise. (poplevel_class): Likewise. (set_identifier_type_value_with_scope): Likewise. (push_overloaded_decl): Likewise. (lookup_tag): Likewise. (unqualified_namespace_lookup): Likewise. (lookup_name_current_level): Likewise. (maybe_inject_for_scope_var): Likewise. (namespace_binding): Move to name-lookup.c. (set_namespace_binding): Likewise. * decl2.c (lookup_using_namespace): Tidy. (qualified_lookup_using_namespace): Likewise. (do_toplevel_using_decl): Likewise. * name-lookup.c: Include "timevar.h" * name-lookup.h (cxx_scope): Declare. (struct cxx_binding): Lose member "has_level". Adjust "scope" member declaration. (BINDING_SCOPE): Adjust definition. (BINDING_HAS_LEVEL_P): Remove. 2003-03-30 Gabriel Dos Reis * name-lookup.c: New file. * name-lookup.h: Likewise.. * decl.c (push_binding): Adjust use cxx_binding_make. (free_bindings): Move to name-lookup.c (pop_binding): Use cxx_binding_free. (binding_for_name): Tidy. * cp-tree.h: Include "name-lookup.h" (cxx_binding_make): Move to name-lookup.h (cxx_binding_clear): Likewise. (struct cxx_binding): Likewise. (LOCAL_BINDING_P): Likewise. (INHERITED_VALUE_BINDING_P): Likewise. (BINDING_SCOPE): Likewise. (BINDING_HAS_LEVEL_P): Likewise. (BINDING_VALUE): Likewise. (BINDING_TYPE): Likewise. * config-lang.in (gtfiles): Add cp/name-lookup.h * Make-lang.in (cp/name-lookup.o): New rule. (CXX_OBJS): Add cp/name-lookup.o (CXX_TREE_H): Add cp/name-lookup.h 2003-03-28 Jason Merrill PR c++/10245 * cvt.c (force_rvalue): New fn. * call.c (build_conditional_expr): Use it. * cp-tree.h: Declare it. 2003-03-28 Mike Stump * error.c (dump_expr): Add 0x to printed hex numbers to make output match source code better. 2003-03-28 Mark Mitchell PR c++/10218 * decl.c (grokfndecl): Return NULL_TREE for bogus out-of-class definitions. * decl2.c (generate_ctor_or_dtor_function): Tolerate a non-existant ssdf_decls array. (finish_file): Call generator_ctor_or_dtor_function when there are static constructors or destructors and no other static initializations. 2003-03-28 Nathan Sidwell PR c++/10047 * decl2.c (finish_file): Don't warn about explicitly instantiated inline decls. 2003-03-27 Nathan Sidwell PR c++/10224 * pt.c (lookup_template_class): Only check instantiated args if they do not contain template parameters. 2003-03-27 Nathan Sidwell PR c++/10158 * parser.c (cp_parser_function_definition): Set DECL_INITIALIZED_IN_CLASS for members. * pt.c (instantiate_decl): Only reduce the template args for friends that are not defined in class. 2003-03-25 Jason Merrill * call.c (print_z_candidate): Change name of first arg to msgid. (joust): Add comment for translators. 2003-03-24 Nathan Sidwell PR c++/9898, PR c++/383, DR 322 * pt.c (maybe_adjust_types_for_deduction) : Look through reference types on both PARM and ARG. 2003-03-24 Nathan Sidwell PR c++/10119 * error.c (dump_expr) : Use dump_expr. * pt.c (maybe_fold_nontype_args): New function. (tsubst_copy) : Subst any template_id args. : Break out folding code, call it. (tsubst_copy_and_build) : Call maybe_fold_nontype_args. 2003-03-24 Nathan Sidwell PR c++/10026 * decl2.c (arg_assoc_type) : Don't die. 2003-03-23 Mark Mitchell PR c++/7086 * typeck.c (cxx_mark_addressable): Adjust call to gen_mem_addressof or put_var_into_stack. 2003-03-22 Nathan Sidwell PR c++/9978, c++/9708 * cp-tree.h (instantiate_template): Add tsubst_flags parameter. * call.c (add_template_candidate_real): Adjust instantiate_template call. * class.c (resolve_address_of_overloaded_function): Likewise. * decl.c (build_enumerator): Set TREE_CONSTANT. * pt.c (check_instantiated_args): New. (push_inline_template_parms_recursive): Set TREE_CONSTANT, TREE_READONLY. (build_template_parm_index): Copy TREE_CONSTANT, TREE_READONLY. (reduce_template_parm_level): Likewise. (process_template_parm): Likewise. (check_explicit_specialization): Adjust instantiate_template call. (convert_template_argument): Don't check non-type argument here. (lookup_template_class): Check them here. (tsubst_friend_function): Adjust instantiate_template call. (instantiate_template): Add tsubst_flags parameter, use it. Check instantiated args. 2003-03-21 Zack Weinberg * decl.c: Update calls to shadow_warning. 2003-03-21 Nathan Sidwell PR c++/9898 * error.c (dump_decl) [CONST_DECL]: Print ''. (dump_expr) [CONSTRUCTOR]: Print default ctor as a function call. 2003-03-20 Mark Mitchell * cp/decl2.c (arg_assoc_class): Correct check for namespace-scope friends. * cp/pt.c (instantiate_class_template): Fix formatting. 2003-03-14 Matt Austern * cp-tree.h (unemitted_tinfo_decls): Declaration of a new varray. (unemitted_tinfo_decl_p): Remove. (emit_tinfo_decl): Change declaration to remove unused parameter. * decl2.c (finish_file): Change tinfo emission to loop through unemitted_tinfo_decls array instead of looping through all decls. * rtti.c (unemitted_tinfo_decl_p): Declare as static, remove unused second parameter. (init_rtti_processing): initialize unemitted_tinfo_decls varray. (get_tinfo_decls): push new tinfo decl on unemitted_tinfo_decls. (emit_tinfo_decl): remove unused second parameter, add assertion that decl hasn't already been emitted. 2003-03-19 Nathanael Nerode * dump.c (cp_dump_tree), cp-tree.h (cp_dump_tree): Change return type from 'int' to 'bool'. Replace 0 and 1 with true and false in return statements. 2003-03-19 Jason Merrill PR c++/8316, c++/9315, c++/10136 * call.c (print_z_candidate): Split out from... (print_z_candidiates): ...here. (joust): Use it. 2003-03-17 Roger Sayle PR c++/10031 * decl.c (duplicate_decls): Use the new type when prototyping anticipated decls, even when the types match. This defines the exception list for the built-in function. 2003-03-17 Jason Merrill PR c++/10091 * typeck.c (build_class_member_access_expr): Compare TYPE_MAIN_VARIANTs. 2003-03-17 Mark Mitchell PR c++/9639 * parser.c (cp_parser_declarator_id): Clear parser->scope. 2003-03-16 Jason Merrill PR c++/9993 * decl.c (finish_function): Only allow the NRVO to use variables declared at function scope. 2003-03-17 Andreas Jaeger * Make-lang.in (cp/TAGS): Remove. 2003-03-16 Nathan Sidwell PR c++/9629 * cp-tree.h (struct language_function): Add in_base_initializer. (in_base_initializer): define it. (expand_member_init): Remove INIT param. * init.c (expand_member_init): Remove INIT param, return the member. (emit_mem_initializers): Set in_base_initializer. * class.c (build_base_path): Check in_base_initializer. * parser.c (cp_parser_mem_initializer): Set in_base_initializer. * pt.c (tsubst_initializer_list): Likewise. 2003-03-16 Gabriel Dos Reis * decl.c (binding_for_name): Fix initialization thinko. 2003-03-15 Gabriel Dos Reis Compile-time improvement: 2/n. * cp-tree.h (struct cxx_binding): New datatype; (struct lang_identifier): Use it. (LOCAL_BINDING_P): Adjust definition. (INHERITED_VALUE_BINDING_P): Likewise. (BINDING_SCOPE): Likewise. (BINDING_HAS_LEVEL_P): Likewise. (BINDING_VALUE): Likewise. (BINDING_TYPE): Likewise. (IDENTIFIER_VALUE): Likewise. (struct tree_binding): Remove. (TS_CP_BINDING): Likewise. ((union lang_tree_node): Remove field "binding". (cxx_binding_clear): New macro. (binding_for_name): Adjust return type. (qualified_lookup_using_namespace): Adjust prototype. (lookup_using_namespace): Adjust prototype. (cxx_scope_find_binding_for_name): Declare. * cp-tree.def: Remove CPLUS_BINDING definition. * decl.c (push_binding): Adjust local variable type. (add_binding): Likewise. (push_class_binding): Likewise. (pop_binding): Likewise. (poplevel): Likewise. (poplevel_class): Likewise. (free_bindings): Adjust type. (find_binding): Adjust return type, add a third parameter. Remove non-useful assertion now that we use static typing. (cxx_scope_find_binding_for_name): New function. (binding_for_name): Use it. Adjust local variable type. Simplify. (namespace_binding): Simplify. (set_namespace_binding): Likewise. (set_identifier_type_value_with_scope): Adjust local variable type. (lookup_tag): Don't type-abuse of local variable 'old'. (lookup_namespace_name): Likewise. Allocate binding on stack. (select_decl): Adjust prototype. (unqualified_namespace_lookup): Allocate binding on stack. Don't type-abuse of local variable 'val'. (lookup_name_real): Likewise. (maybe_inject_for_scope_var): Adjust local variable type. (cp_tree_node_structure): Remove CPLUS_BINDING case label. (namespace_binding): Adjust logic, simplify. (BINDING_LEVEL): Adjust definition. (push_class_level_binding): Adjust local variable type. (struct cxx_saved_binding): Adjust field 'binding' type. * decl2.c (ambiguous_decl): Adjust prototype. (lookup_using_namespace): Adjust local variable type. (qualified_lookup_using_namespace): Catch type error and correct ensueing logic error. (do_nonmember_using_decl): Adjust local variable type. Allocate temporary cxx_binding on stack. (do_toplevel_using_decl): Adjust local variable type. * ptree.c (cxx_print_cxx_binding): New function. (cxx_print_identifier): Use it. (cxx_print_xnode): Delete CPLUS_BINDING case label. 2003-03-15 Roger Sayle * tree.c (count_functions): Fix whitespace. 2003-03-15 Neil Booth * Make-lang.in: Update. 2003-03-15 Kriang Lerdsuwanakij PR c++/6440 * pt.c (maybe_process_partial_specialization): Handle member class template when enclosing class template is explicit specialized. (most_general_template): Stop looking when DECL is already specialized. 2003-03-13 Jason Merrill PR c++/9420 * search.c (lookup_conversions): Call complete_type here. * call.c (implicit_conversion): Not here. 2003-03-13 Mark Mitchell * decl2.c (do_nonmember_using_decl): Correct handling of simultaneous type/non-type bindings. * call.c (initialize_reference): Remove bogus assertion. * decl.c (build_ptrmemfunc_type): Revert change of 2003-03-09. 2003-03-12 Andrew Lewycky PR c++/7050 * expr.c (cxx_expand_expr): Return const0_rtx for throw expressions. 2003-03-11 Mark Mitchell PR c++/9474 * decl2.c (do_nonmember_using_decl): Do not call duplicate decls to merge old and new declarations. 2003-03-12 Alexandre Oliva * g++.1: Remove. * Make-lang.in (c++.generated-manpages): Build cp/g++.1. (cp/g++.1): Build it from scratch in the build tree. (c++.install-man): Depend on it. Install it from the build tree. (c++.mostlyclean): Clean it. 2003-03-11 Mark Mitchell PR c++/9474 * decl2.c (do_nonmember_using_decl): Do not call duplicate decls to merge old and new declarations. PR c++/9924 * decl2.c (do_nonmember_using_decl): Ignore anticipated builtins. 2003-03-11 Jason Merrill PR c++/9820 * search.c (lookup_member): Fix handling of functions in a class being defined. 2003-03-11 Mark Mitchell PR c++/8700 * call.c (convert_class_to_reference): Adjust usage of splice_viable. (any_viable): Remove. (splice_viable): Combine with any_viable. (print_z_candidates): Avoid printing duplicates. (build_user_type_conversion_1): Adjust usage of splice_viable. (build_new_function_call): Likewise. (build_operator_new_call): Likewise. (build_object_call): Likewise. (build_conditional_expr): Likewise. (build_new_op): Likewise. (build_new_method_call): Likewise. (joust): Remove spurious comment. * cp-tree.h (DECL_FRIENDLIST): Correct documentation. * decl2.c (arg_assoc_class): Simplify. * friend.c (add_friend): Likewise. 2003-03-11 Jason Merrill PR c++/8660 * decl2.c (check_classfn): A member template only matches a member template. 2003-03-11 Neil Booth * Make-lang.in (CXX_C_OBJS): Update. * lang-specs.h: Don't define __GNUG__ here. 2003-03-10 Mark Mitchell * call.c (perform_overload_resolution): New function. (build_new_function_call): Use it. (build_operator_new_call): Likewise. (add_candidates): Add explicit_targs and template_only parameters. (build_new_op): Adjust accordingly. * cp-tree.h (build_operator_new_call): New function. (build_function_call_real): Remove. (build_function_call_maybe): Likewise. * init.c (build_new_1): Use build_operator_new_call. * typeck.c (build_function_call_real): Rename to ... (build_function_call): ... this. 2003-03-10 Devang Patel PR c++/9394 * g++spec.c (lang_specific_driver): Use DEFAULT_WORD_SWTCH_TAKES_ARG. 2003-03-10 Jason Merrill PR c++/9798 * decl.c (push_using_directive): Push before recursing. PR c++/9868, c++/9524 * call.c (resolve_scoped_fn_name): Handle the case of a function pointer member. * decl2.c (build_offset_ref_call_from_tree): Only mess with 'this' argument in the pointer-to-member case. 2003-03-09 Mark Mitchell PR c++/9373 * cp-lang.c (cxx_get_alias_set): Use alias set zero for pointers to member functions. PR c++/8534 * decl.c (build_ptrmemfunc_type): Do not allow default arguments in pointer-to-member-function types. 2003-03-10 Gabriel Dos Reis * expr.c (cplus_expand_constant): Use C90 prototype style. (cxx_expand_expr): Likewise. 2003-03-09 Kriang Lerdsuwanakij PR c++/9970 * decl.c (duplicate_decls): Only copy DECL_THUNKS for virtual functions. 2003-03-08 Geoffrey Keating * lang-specs.h (c++-header): Change .pch to .gch. 2003-03-08 Neil Booth * cp-tree.h (cxx_init): Update prototype. * lex.c (cxx_init): Similarly. 2003-03-08 Mark Mitchell PR c++/9823 * cp-tree.h (begin_mem_initializers): Remove. * parser.c (cp_parser_mem_initializer_list): Inline it here. Do not call finish_mem_initializers if not in a constructor. (cp_parser_class_head): Fix typo in error message. * semantics.c (begin_mem_initializers): Remove. * testsuite/g++.dg/parser/constructor1.C: New test. PR c++/9809 * call.c (add_function_candidate): Skip builtin fuctions that have not yet been declared. PR c++/9982 * init.c (build_new_1): Correct logic for determining whether or not to use an array cookie. PR c++/9524 * parser.c (cp_parser_postfix_expression): Call finish_non_static_data_member, even when processing_template_decl. PR c++/9912 * cp-tree.h (is_ancestor): New function. (handle_class_head): Change prototype. * decl2.c (is_namespace_ancestor): Rename to ... (namespace_anecestor): ... this. (set_decl_namespace): Adjust accordingly. (handle_class_head): Remove unnecessary parameters. * parser.c (cp_parser_class_head): Check that nested-name-specifiers are used appropriately. 2003-03-07 Mark Mitchell * call.c (reference_binding): Remove REF_IS_VAR parameter. (implicit_conversion): Adjust call to reference_binding. (make_temporary_var_for_ref_to_type): Add TYPE parameter. (initialize_reference): Adjust handling for references bound to rvalues. * cp-tree.h (make_temporary_var_for_ref_to_temp): Change prototype. (real_non_cast_lvalue_p): New method. * cvt.c (build_up_reference): Adjust use of make_temporary_var_for_ref_to_temp. * tree.c (real_non_cast_lvalue_p): New method. 2003-03-07 Gabriel Dos Reis * except.c (init_exception_processing): Use C90 prototype style. (cp_protect_cleanup_actions): Likewise. (prepare_eh_type): Likewise. (build_eh_type_type): Likewise. (build_exc_ptr): Likewise. (do_begin_catch): Likewise. (dtor_nothrow): Likewise. (do_end_catch): Likewise. (push_eh_cleanup): Likewise. (decl_is_java_type): Likewise. (choose_personality_routine): Likewise. (initialize_handler_parm): Likewise. (expand_start_catch_block): Likewise. (expand_end_catch_block): Likewise. (begin_eh_spec_block): Likewise. (finish_eh_spec_block): Likewise. (do_allocate_exception): Likewise. (do_free_exception): Likewise. (wrap_cleanups_r): Likewise. (stabilize_throw_expr): Likewise. (build_throw): Likewise. (complete_ptr_ref_or_void_ptr_p): Likewise. (is_admissible_throw_operand): Likewise. (nothrow_libfn_p): Likewise. (can_convert_eh): Likewise. (check_handlers_1): Likewise. (check_handlers): Likewise. 2003-03-06 Mark Mitchell * call.c (merge_conversion_sequences): New function. (build_conv): Set ICS_USER_FLAG for USER_CONVs. (convert_class_to_reference): Correct handling of second standard conversion sequence in a user-defined conversion sequence. (build_user_type_conversion_1): Use merge_conversion_sequences. * cp-tree.def: Add comments for CONV nodes. * rtti.c (get_tinfo_decl): Use build_address/build_nop. 2003-03-07 Gabriel Dos Reis * error.c (init_error): Use C90 prototype style. (dump_scope): Likewise. (dump_qualifiers): Likewise. (dump_template_argument): Likewise. (dump_template_argument_list): Likewise. (dump_template_parameter): Likewise. (dump_template_bindings): Likewise. (dump_type): Likewise. (dump_typename): Likewise. (class_key_or_enum): Likewise. (dump_aggr_type): Likewise. (dump_type_prefix): Likewise. (dump_type_suffix): Likewise. (dump_global_iord): Likewise. (dump_simple_decl): Likewise. (dump_decl): Likewise. (dump_template_decl): Likewise. (dump_function_decl): Likewise. (dump_parameters): Likewise. (dump_exception_spec): Likewise. (dump_function_name): Likewise. (dump_template_parms): Likewise. (dump_char): Likewise. (dump_expr_list): Likewise. (dump_expr): Likewise. (dump_binary_op): Likewise. (dump_unary_op): Likewise. (type_as_string): Likewise. (expr_as_string): Likewise. (decl_as_string): Likewise. (context_as_string): Likewise. (lang_decl_name): Likewise. (cp_file_of): Likewise. (cp_line_of): Likewise. (decl_to_string): Likewise. (expr_to_string): Likewise. (fndecl_to_string): Likewise. (code_to_string): Likewise. (language_to_string): Likewise. (parm_to_string): Likewise. (op_to_string): Likewise. (type_to_string): Likewise. (assop_to_string): Likewise. (args_to_string): Likewise. (cv_to_string): Likewise. (cxx_print_error_function): Likewise. (cp_diagnostic_starter): Likewise. (cp_diagnostic_finalizer): Likewise. (cp_print_error_function): Likewise. (function_category): Likewise. (print_instantiation_full_context): Likewise. (print_instantiation_partial_context): Likewise. (maybe_print_instantiation_context): Likewise. (print_instantiation_context): Likewise. (cp_printer): Likewise. (print_integer): Likewise. (print_non_consecutive_character): Likewise. (locate_error): Likewise. 2003-03-06 Mark Mitchell PR c++/9965 * call.c (reference_binding): Add ref_is_var parameter. (implicit_conversion): Adjust call to reference_binding. (initialize_reference): Likewise. PR c++/9400 * decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL PARM_DECLs. PR c++/9791 * class.c (get_basefndecls): Use lookup_fnfields_1. 2003-03-06 Kriang Lerdsuwanakij PR c++/9188 * parser.c (cp_parser_type_parameter): Remove redundant `expect' in error message. (cp_parser_single_declaration): Likewise. 2003-03-05 Jason Merrill PR c++/9440 * call.c (build_conditional_expr): Use convert rather than an explicit NOP_EXPR. 2003-03-02 Matt Austern * decl.c (cp_binding_level): Add static_decls varray member. (add_decl_to_level): Add static/inline namespace scope declarations to static_decls array. (wrapup_global_for_namespace): Pass static_decls only, instead of all decls, to wrapup_global_declarations/check_global_declarations. (push_namespace): Initialize static_decls for ordinary namespaces. (cxx_init_decl_processing): Initialize static_decls for global namespace. 2003-03-05 Mark Mitchell * class.c (end_of_class): Correct thinko. 2003-03-04 Nathanael Nerode * config-lang.in: Replace ${libstdcxx_version} by its value. 2003-03-04 Gabriel Dos Reis * cp-tree.h (cxx_saved_binding): Declare. (struct saved_scope): Adjust type of field 'old_binding'. * decl.c (cxx_saved_binding_make): New macro. (struct cxx_saved_binding): Define. (store_bindings): Adjust prototype. Use cxx_saved_binding to save C++ bindings. (maybe_push_to_top_level): Adjust local variable type. (pop_from_top_level): Likewise. 2003-03-04 Tom Tromey * Make-lang.in (c++.tags): New target. 2003-03-04 Neil Booth * Make-lang.in: Update. 2003-03-03 Jason Merrill * decl.c (finish_enum): Do set the type in a template. Simplify. * pt.c (tsubst_enum, tsubst_copy): Revert last patch. 2003-03-03 Mark Mitchell PR c++/9878 * call.c (convert_class_to_reference): Correct conversion sequences. (reference_binding): Add ref_bound_directly_to_rvalue_p parameter. (implicit_conversion): Adjust call to reference_binding. (add_candidate): Change type of candidates parameter. (add_function_candidate): Likewise. (add_conv_candidate): Likewise. (build_builtin_candidate): Likewise. (add_builtin_candidate): Likewise. (add_builtin_candidates): Likewise. (add_template_candidate_real): Likewise. (add_template_candidate): Likewise. (add_template_conv_candidate): Likewise. (build_user_type_conversion_1): Adjust accordingly. (build_object_call): Likewise. (build_conditional_expr): Likewise. (add_candidates): Likewise. (build_new_op): Likewise. (convert_like_real): Use USER_CONV_CAND. Use build_nop. (build_new_method_call): Adjust calls to add_function_candidate. (make_temporary_var_for_ref_to_temp): New function. (initialize_reference): Add decl parameter. * class.c (build_rtti_vtbl_entries): Use build_address and build_nop. * cp-tree.h (initialize_reference): Change prototype. (make_temporary_var_for_ref_to_temp): New function. (build_type_conversion): Change prototype. (build_address): New function. (build_nop): Likewise. * cvt.c (cp_convert_to_pointer): Adjust call to build_type_conversion. Avoid indicating redundant NOP_EXPRs. Use build_nop. (convert_to_pointer_force): Use build_nop. (build_up_reference): Use make_temporary_var_for_ref_to_temp. (convert_to_reference): Adjust call to build_type_conversion. (ocp_convert): Likewise. (build_type_conversion): Remove for_sure parameter. * decl.c (grok_reference_init): Use initialize_reference. * typeck.c (build_address): New function. (build_nop): Likewise. (build_unary_op): Use them. (build_ptrmemfunc): Tidy slightly. (convert_for_initialization): Adjust call to initialize_reference. * typeck2.c (store_init_value): Remove #if 0'd code. 2003-03-03 Jason Merrill * decl.c (start_function): Clear DECL_NUM_STMTS. * class.c (get_vtable_decl): Use vtbl_type_node. (build_primary_vtable): Check for it. 2003-03-02 Aldy Hernandez * decl.c (check_initializer): Check for vector_opaque_p. 2003-03-02 Ashif Harji * lang-specs.h (default_compilers): Add -no-integrated-cpp flag to invoke an external cpp during compilation. 2003-03-01 Gabriel Dos Reis * decl.c (duplicate_decls): Convert use of warning_with_decl() to that of warning(). (start_decl): Likewise. (start_function): Likewise. 2003-03-01 Neil Booth * Make-lang.in (CXX_C_OBJS): Update. 2003-02-28 Mark Mitchell PR c++/9892 * pt.c (instantiate_decl): Clear DECL_RTL for a VAR_DECL when instantiating it. 2003-02-28 Aldy Hernandez * parser.c (cp_parser_init_declarator): Revert opaque vector_opaque_p change. Do not include target.h. 2003-02-28 Mark Mitchell PR c++/9879 * cp-tree.h (build_zero_init): Add parameter. * decl.c (cp_finish_decl): Adjust call. * init.c (build_zero_init): Add nelts parameter. Adjust recursive calls. (build_default_init): Add nelts parameter. Adjust calls to build_zero_init. (build_new_1): Adjust call to build_default_init. * typeck2.c (process_init_constructor): Adjust call to build_zero_init. 2003-02-26 Devang Patel * decl.c (finish_enum): Merge two 'for' loops. Copy value node if required. Postpone enum setting for template decls. (build_enumerator): Delay copying value node until finish_enum (). Remove #if 0'ed code. * pt.c (tsubst_enum): Set TREE_TYPE and copy value node. (tsubst_copy): Add check for enum type. 2003-02-25 Mark Mitchell PR c++/9683 * decl2.c (prune_vars_needing_no_initialization): Do not throw away initializations for DECL_EXTERNAL VAR_DECLs. (finish_file): Adjust accordingly. * pt.c (instantiate_decl): Do not defer VAR_DECLs. 2003-02-24 Gabriel Dos Reis * decl.c (add_binding): Time TV_NAME_LOOKUP. (push_class_binding): Likewise. (set_namespace_binding): Likewise. 2003-02-24 Mark Mitchell PR c++/9836 * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): Do not skip from specializations back to the main template. * parser.c (cp_parser_diagnose_invalid_type_name):Adjust use. * pt.c (resolve_typename_type): Likewise. 2003-02-24 Jeffrey D. Oldham PR c++/9778 * pt.c (tsubst_copy_and_build): For a templated function inside a scope, process template arguments. 2003-02-24 Kriang Lerdsuwanakij PR c++/9602 * typeck2.c (abstract_virtuals_error): Don't check when TYPE is still template parameter dependent. 2003-02-23 Mark Mitchell PR c++/5333 * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): New macro. * parser.c (cp_parser_diagnose_invalid_type_name): Use it. * pt.c (instantiate_class_template): Don't try to instantiate dependent types. (resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE. 2003-02-21 Mark Mitchell PR c++/9749 * decl.c (grokdeclarator): Do not allow parameters with variably modified types. 2003-02-21 Nathan Sidwell * search.c (grow_bfs_bases): Remove. Fold into ... (bfs_walk): ... here, fix fencepost error. Fix merge lossage in previous patch. 2003-02-20 Mark Mitchell PR c++/9729 * mangle.c (mangle_conv_op_name_for_type): Issue an error message when the G++ 3.2 ABI prevents correct compilation. 2003-02-20 Nathan Sidwell Change base class access representation. Share virtual base binfos. * cp/call.c (build_special_member_call): Remove binfo_for_vbase call. * cp/class.c (build_base_path): Likewise. (build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use. (build_secondary_vtable): Remove FOR_TYPE arg. Adjust. (make_new_vtable): Adjust. (force_canonical_binfo_r): Delete. (force_canonical_binfo): Delete. (mark_primary_virtual_base): Delete. (dfs_unshared_virtual_bases): Delete. (mark_primary_bases): Adjust. (maybe_warn_about_overly_private_class): Adjust. (dfs_base_derived_from): Delete. (base_derived_from): Follow the inheritance chain. (struct find_final_overrider_data): Add vpath member. (dfs_find_final_overrider): Adjust. (dfs_find_final_overrider_q, dfs_find_final_overrider_post): New. (find_final_overrider): Adjust. (update_vtable_entry_for_fn): Adjust. (modify_all_vtables): Adjust. (walk_subobject_offsets): Adjust. (layout_nonempty_base_or_field): Adjust. (layout_empty_base): Remove last parameter. Adjust. (build_base_field): Adjust. (build_base_fields): Adjust. (propagate_binfo_offsets): Remove last parameter. Adjust. (dfs_set_offset_for_unshared_vbases): Delete. (layout_virtual_bases): Adjust. (finish_struct_1): Adjust. (init_class_processing): Don't init access nodes. (dfs_get_primary_binfo): Delete. (get_primary_binfo): Adjust. (dump_class_hierarchy_r): Remove most derived arg, add IGO parameter. Adjust. (dump_class_hierarchy): Adjust. (finish_vtbls): Adjust. (get_original_base): Delete. (build_vtt_inits): Adjust. (dfs_build_secondary_vptr_vtt_inits): Adjust. (dfs_ctor_vtable_bases_queue_p): Adjust. (build_ctor_vtbl_group): Adjust. (dfs_accumulate_vtbl_inits): Adjust. (build_vtbl_initializer): Adjust. (build_vbase_offset_vtbl_entries): Adjust. (add_vcall_offset_vtbl_entries_1): Adjust. * cp/cp-tree.h (CPTI_ACCESS_*): Remove. (access_*_node): Remove. (CANONICAL_BINFO): Delete. (BINFO_UNSHARED_MARKED): Remove. (BINFO_MARKED): Set LANG_FLAG_0 directly. (SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete. (BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly. (SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED): Delete. (BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly. (SET_BINFO_NEW_VTABLE_MARKED): Adjust. (SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED): Delete. (BINFO_DEPENDENT_BASE_P): New. (dfs_walk, dfs_walk_real): Queue function takes derived binfo and index. (markedp, unmarkedp): Adjust. (dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p, dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp, find_vbase_instance, binfo_for_vbase): Delete. (copied_binfo, original_binfo): Declare. (finish_base_specifier): Add virtual_p arg. (unshare_base_binfos): Delete. (copy_base_binfos): Declare. (reverse_path): Delete. * cp/decl.c (xref_basetypes): Access and virtuality passed differently. Don't copy direct base binfos here. Call copy_base_binfos. * cp/init.c (dfs_initialize_vtbl_ptrs): Adjust. (initialize_vtbl_ptrs): Adjust. (expand_member_init): Adjust. * cp/parser.c (cp_parser_base_specifier): Adjust. * cp/pt.c (instantiate_class_template): Adjust. (get_template_base_recursive): Adjust. * cp/rtti.c (get_pseudo_ti_init): Adjust. (get_pseudo_ti_desc): Adjust. * cp/tree.c (unshare_base_binfos): Rename to ... (copy_base_binfos): ... here, reimplement. (make_binfo): Set BINFO_DEPENDENT_BASE_P. (reverse_path): Remove. * cp/typeck.c (get_delta_difference): Adjust error messages. * cp/semantics.c (finish_base_specifier): Add virtual arg, adjust. * cp/search.c (lookup_base_r): Adjust. (dynamic_cast_base_recurse): Adjust. (canonical_binfo): Remove. (dfs_canonical_queue): Remove. (dfs_assert_unmarked_p): Remove. (assert_canonical_unmarked): Remove. (shared_marked_p, shared_unmarked_p): Remove. (BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE. (dfs_access_in_type): Adjust. (access_in_type): Adjust. (dfs_accessible_queue_p): Adjust. (dfs_accessible_p): Adjust. (is_subobject_of_p_1, is_subobject_of_p): Remove. (struct lookup_field_info): Remove from_dep_base_p field. (lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P. (lookup_field_r): Remove dependent base code. (lookup_member): Likewise. (dfs_walk, dfs_walk_real): Add access arg to queue fn. (dfs_unmarked_real_bases_queue_p): Remove. (dfs_marked_real_bases_queue_p): Remove. (dfs_skip_vbases): Remove. (dfs_get_pure_virtuals): Adjust. (markedp, unmarkedp): Adjust. (marked_vtable_pathp, unmarked_vtable_pathp): Remove. (marked_pushdecls_p, unmarked_pushdecls_p): Adjust. (dfs_unmark): Adjust. (dfs_get_vbase_types):Remove. (dfs_build_inheritance_graph_order): Remove. (get_vbase_types): Remove (dfs_find_vbase_instance): Remove. (find_vbase_instance): Remove. (dfs_debug_unmarkedp): Adjust. (dependent_base_p): Remove. (dfs_push_type_decls): Adjust. (dfs_push_decls): Adjust. (dfs_no_overlap_yet): Adjust. (copied_binfo): New function. (original_binfo): New function. (binfo_for_vbase): Remove. 2003-02-18 Zack Weinberg * cp/search.c (grow_bfs_bases): New subroutine of bfs_walk. (bfs_walk): Rewritten using circular queue of BINFO_BASETYPES vectors, for speed. 2003-02-18 Mark Mitchell PR c++/9704 * class.c (layout_class_type): In the 3.2 ABI, take into account trailing bit fields when computing CLASSTYPE_SIZE_UNIT. 2003-02-18 Matt Austern * cp/cp-lang.c: Change lang hooks so that final_write_globals does nothing for C++. * cp/decl.c (wrapup_globals_for_namespace): Remove special handling of global namespace. 2003-02-18 Geoffrey Keating * cp-tree.h (rid_to_yy): Delete. (C_RID_YYCODE): Delete. (finish_file): Delete redundant declaration. 2003-02-18 Jason Merrill PR c++/9623 * decl.c (reshape_init): Don't mess with initializer labels. PR c++/9485 * parser.c (cp_parser_postfix_expression): Set idk properly for object->scope::member. 2003-02-18 Ben Elliston PR other/7350 * decl.c (duplicate_decls): Fix typo in comment. 2003-02-17 Michael Elizabeth Chastain PR debug/9717 * class.c (build_base_field): Mark fields for base classes with DECL_IGNORED_P. 2003-02-17 Kriang Lerdsuwanakij PR c++/9457 * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute CONSTRUCTOR_ELTS only once. 2003-02-16 Kriang Lerdsuwanakij PR c++/9459 * error.c (dump_type_prefix): Handle TYPEOF_TYPE. (dump_type_suffix): Likewise. 2003-02-14 Nathan Sidwell * search.c: ANSIfy function declarations and definitions. * cp-tree.h (lookup_field, lookup_member): Last parameter is a bool. * call.c (build_method_call, resolve_scoped_fn_name, build_java_interface_fn_ref): Adjust lookup_field, lookup_member calls. * class.c (handle_using_decl): Likewise. * decl.c (make_typename_type, make_unmound_class_template, start_decl, compute_array_index_type): Likewise. * decl2.c (build_expr_from_tree, build_call_from_tree): Likewise. * init.c (expand_member_init, build_member_call): Likewise. * pt.c (tsubst_copy, tsubst_copy_and_build, do_decl_instantiation, resolve_typename_type): Likewise. * typeck.c (lookup_destructor, finish_class_member_access_exprm build_prememfunc_access_expr): Likewise. 2003-02-13 Gabriel Dos Reis * decl2.c: Include "timevar.h". (namespace_ancestor): Time name lookup. (add_using_namespace): Likewise. (lookup_using_namespace): Likewise. (qualified_lookup_using_namespace): Likewise. (decl_namespace): Likewise. (lookup_arg_dependent): Likewise. * lex.c (do_identifier): Likewise. (do_scoped_id): Likewise. * pt.c (lookup_template_class): Likewise. 2003-02-14 Andrew Pinski * decl.c: (define_label): Fix warning for return 0 instead of NULL. 2003-02-13 Gabriel Dos Reis * decl.c: Include "timevar.h". (poplevel): Time name lookup. (find_binding): Likewise. (push_namespace): Likewise. (pop_nested_namespace): Likewise. (store_bindings): Likewise. (maybe_push_to_top_level): Likewise. (pop_from_top_level): Likewise. (push_local_name): Likewise. (pushtag): Likewise. (pushdecl): Likewise. (pushdecl_with_scope): Likewise. (pushdecl_namespace_level): Likewise. (pushdecl_top_level): Likewise. (pushdecl_class_level): Likewise. (push_class_level_binding): Likewise. (push_using_decl): Likewise. (push_using_directive): Likewise. (push_overloaded_decl): Likewise. (lookup_label): Likewise. (define_label): Likewise. (lookup_tag): Likewise. (lookup_tag_reverse): Likewise. (lookup_namespace_name): Likewise. (select_decl): Likewise. (unqualified_namespace_lookup): Likewise. (lookup_name_real): Likewise. (lookup_name_current_level): Likewise. (lookup_type_current_level): Likewise. (maybe_inject_for_scope_var): Likewise. (xref_tag): Likewise. * Make-lang.in (cp/decl.o): Add dependency on timevar.h 2003-02-12 Phil Edwards * decl.c (build_enumerator): Remove unneeded test. 2003-02-09 Dan Nicolaescu * cp-tree.h (struct lang_type_header): Make all fields unsigned char. 2003-02-03 Mark Mitchell PR c++/7129 * call.c (z_candidate): Add args. (convert_class_to_reference): Set it. (implicit_conversion): Tidy. (add_candidate): Add args parameter. (add_function_candidate): Adjust call to add_candidate. (add_conv_candidate): Likewise. (build_builtin_candidate): Likewise. (build_user_type_conversion_1): Eliminate wasteful tree_cons usage. (build_new_function_call): Likewise. (build_object_call): Likewise. (add_candidates): New function. (build_new_op): Use it. (covert_like_real): Adjust call to build_over_call. (build_over_call): Remove args parameter. * operators.def: Add ?=. 2003-02-01 Richard Sandiford * typeck.c (build_indirect_ref): Don't check flag_volatile. 2003-01-31 Kriang Lerdsuwanakij PR c++/8849 * pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL. 2003-01-31 Nathan Sidwell * cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF): Use BINFO_ELTS. (BINFO_LANG_ELTS): New #define. * tree.c (make_binfo): Use BINFO_LANG_ELTS. 2003-01-30 Geoffrey Keating * cp/Make-lang.in: Remove -Wno-error from cp/decl.o. 2003-01-30 Mark Mitchell * class.c (check_field_decls): Only check C_TYPE_FIELDS_READONLY for class types. * cp-tree.h (C_TYPE_FIELDS_READONLY): Use a lang-specific bit rather than TYPE_LANG_FLAG_0. (TYPE_BUILT_IN): Remove. (TYPE_DEPENDENT_P): New macro. (TYPE_DEPENDENT_P_VALID): Likewise. (lang_type_class): Add fields_readonly. * decl.c (record_builtin_type): Don't set TYPE_BUILT_IN. * pt.c (dependent_type_p_r): New function, split out from ... (dependent_type_p): ... here. Memoize results. * search.c (dependent_base_p): Use dependent_type_p, not uses_template_parms. * typeck.c (build_modify_expr): Only check C_TYPE_FIELDS_READONLY for class types. 2003-01-29 Mark Mitchell * call.c (build_field_call): Use build_new_op, not build_opfncall. (prep_operand): New function. (build_new_op): Use it. Remove dead code. * class.c (pushclass): Change "modify" parameter type from int to bool. (currently_open_class): Use same_type_p, not pointer equality. (push_nested_class): Adjust calls to pushclass, remove modify parameter. * cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro. (pushclass): Change prototype. (push_nested_class): Likewise. (grokoptypename): Remove. (build_opfncall): Remove. (value_dependent_expression_p): Declare. (resolve_typename_type): Likewise. (resolve_typename_type_in_current_instantiation): Likewise. (enter_scope_of): Remove. (tsubst): Remove. (tsubst_expr): Likewise. (tsubst_copy): Likewise. (tsubst_copy_and_build): Likewise. * decl.c (warn_about_implicit_typename_lookup): Remove. (finish_case_label): Return error_mark_node for erroneous labels. (start_decl): Adjust calls to push_nested_class. (grokfndecl): Call push_scope/pop_scope around call to duplicate_decls. (grokdeclarator): Do not call tsubst. (start_function): Adjust calls to push_nested_class. * decl2.c (grok_array_decl): Use build_new_op, not build_opfncall. (check_classfn): Use push_scope/pop_scope around type comparisions. (grokoptypename): Remove. (push_sscope): Adjust call to push_nested_class. * error.c (dump_type): Show cv-qualification of typename types. * init.c (build_member_call): Use build_new_op, not build_opfncall. * method.c (build_opfncall): Remove. * parser.c (cp_parser): Add allow_non_constant_expression_p and non_constant_expression_p. (cp_parser_constant_expression): Adjust prototype. (cp_parser_resolve_typename_type): Remove. (cp_parser_non_constant_expression): New function. (cp_parser_non_constant_id_expression): Likewise. (cp_parser_new): Set allow_non_constant_expression_p and non_constant_expression_p. (cp_parser_primary_expression): Reject `this' and `va_arg' in constant-expressions. Note that dependent names aren't really constant. (cp_parser_postfix_expression): Reject conversions to non-integral types in constant-expressions. Neither are increments or decrements. (cp_parser_unary_expression): Reject increments and decrements in constant-expressions. (cp_parser_direct_new_declarator): Adjust call to cp_parser_constant_expression. (cp_parser_cast_expression): Reject conversions to non-integral types in constant-expressions. (cp_parser_assignment_expression): Rejects assignments in constant-expressions. (cp_parser_expression): Reject commas in constant-expressions. (cp_parser_labeled_statement): Adjust call to cp_parser_constant_expression. (cp_parser_direct_declarator): Simplify array bounds, even in templates, when they are non-dependent. Use resolve_typename_type, not cp_parser_resolve_typename_type. (cp_parser_class_head): Use resolve_typename_type, not cp_parser_resolve_typename_type. (cp_parser_member_declaration): Adjust call to cp_parser_constant_expression. (cp_parser_constant_initializer): Likewise. (cp_parser_constructor_declarator): Use resolve_typename_type, not cp_parser_resolve_typename_type. (cp_parser_late_parsing_default_args): Adjust call to push_nested_class. * pt.c (tsubst): Give it internal linkage. (tsubst_expr): Likewise. (tsubst_copy): Likewise. (tsubst_copy_and_build): Likewise. (push_access_scope_real): Likewise. (tsubst_friend_class): Likewise. (instantiate_class_template): Adjust call to pushclass. (value_dependent_expression_p): Give it external linkage. Robustify. (resolve_typename_type): New function. * semantics.c (finish_call_expr): Use build_new_op, not build_opfncall. (begin_constructor_declarator): Remove. (begin_class_definition): Adjust call to pushclass. (enter_scope_of): Remove. * typeck.c (comptypes): Resolve typename types as appropriate. (build_x_indirect_ref): Use build_new_op, not build_opfncall. (build_x_compound_expr): Likewise. (build_modify_expr): Likewise. (build_x_modify_expr): Likewise. * typeck2.c (build_x_arrow): Likewise. 2003-01-29 Fariborz Jahanian * pt.c (last_pending_template) Declare GTY(). 2003-01-29 Kriang Lerdsuwanakij PR c++/8591 * parser.c (cp_parser_elaborated_type_specifier): Convert TEMPLATE_DECL to TYPE_DECL only when processing template friends. (cp_parser_maybe_treat_template_as_class): Remove redundant tests. 2003-01-28 Nathan Sidwell PR c++/9437 * pt.c (unify): Don't unify '*T' with 'U C::*'. PR c++/3902 * parser.c (cp_parser_decl_specifier_seq): Cannot have constructor inside a declarator. 2003-01-27 Nathan Sidwell * class.c (update_vtable_entry_for_fn): Add index parameter. Generate vcall thunk for covariant overriding from a virtual primary base. (dfs_modify_vtables): Adjust. 2003-01-25 Nathan Sidwell PR c++/9403 * parser.c (cp_parser_class_or_namespace_name): Reject duplicate template keyword. (cp_parser_base_specifier): Look for and consume a TEMPLATE keyword. Replace switch with array index. PR c++/795 * semantics.c (finish_non_static_data_member): Remember the field's type even in a template. PR c++/9415 * pt.c (tsubst_copy_and_build, CALL_EXPR): BASELINK exprs are already scoped. PR c++/8545 * parser.c (cp_parser_cast_expression): Be more tentative. 2003-01-25 Kriang Lerdsuwanakij * cp-tree.h (flagged_type_tree_s): Remove. (check_for_new_type): Likewise. * typeck2.c (check_for_new_type): Likewise. 2003-01-23 Nathanael Nerode * dump.c: ANSIfy function declarations and definitions. * cp-tree.h, decl.h: Get rid of PARAMS. Again. 2003-01-22 Mark Mitchell PR c++/9354 * init.c (build_new): Set the type of the new-expression, even when processing_templte_decl. PR c++/9216 * parser.c (cp_parser_primary_expression): Improve error message for templates used in an expression context. PR c++/8696 * parser.c (cp_parser_decl_specifier_seq): Commit to tentative parse when encountering "typedef". 2003-01-22 Nathanael Nerode * class.c, parser.c: ANSIfy function definitions and declarations. 2003-01-22 Mark Mitchell PR c++/9328 * error.c (dump_decl): For an OVERLOAD, just print the name of the function; it doesn't make sense to try to print its type. * semantics.c (finish_typeof): Issue errors about invalid uses. PR c++/9298 * parser.c (cp_parser_consume_semicolon_at_end_of_statement): New function. (cp_parser_expression_statement): Use it. (cp_parser_explicit_instantiation): Likewise. * pt.c (do_decl_instantiation): Improve error handling logic. 2003-01-22 Mark Mitchell PR c++/9384 * parser.c (cp_parser_using_declaration): Issue error messages about name resolution failures here. PR c++/9388 * class.c (currently_open_derived_class): Use dependent_type_p. * cp-tree.h (dependent_type_p): New function. (dependent_template_arg_p): Likewise. (dependent_template_p): Likewise. (type_dependent_expression_p): Likewise. * parser.c (cp_parser_dependent_type_p): Remove. (cp_parser_value_dependent_type_p): Likewise. (cp_parser_type_dependent_expression_p): Likewise. (cp_parser_dependent_template_arg_p): Likewise. (cp_parser_dependent_template_id_p): Likewise. (cp_parser_dependent_template_p): Likewise. (cp_parser_diagnose_invalid_type_name): Replace cp_parser_dependent_type_p with dependent_type_p, etc. (cp_parser_primary_expresion): Likewise. (cp_parser_nested_name_specifier_opt): Likewise. (cp_parser_postfix_expression): Likewise. (cp_parser_unary_expression): Likewise. (cp_parser_template_name): Likewise. (cp_parser_class_name): Likewise. (cp_parser_lookup_name): Likewise. * pt.c (dependent_type_p): New function. (value_dependent_expression_p): Likewise. (type_dependent_expression_p): Likewise. (dependent_template_arg_p): Likewise. (dependent_template_id_p): Likewise. (dependent_template_p): Likewise. PR c++/9285 PR c++/9294 * parser.c (cp_parser_simple_declaration): Return quickly when encountering errors. 2003-01-21 Kaveh R. Ghazi Make-lang.in (cp/decl.o-warn): Add -Wno-error. 2003-01-17 Jason Merrill PR c++/9167, c++/9358 * decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE. 2003-01-17 Jason Merrill PR c++/9342 * call.c (build_conditional_expr): Always do lvalue-rvalue conversion. 2003-01-17 Mark Mitchell PR c++/9294 * cp-tree.def (BASELINK): Make it class 'x', not class 'e'. * cp-tree.h (BASELINK_BINFO): Adjust. (BASELINK_FUNCTIONS): Likewise. (BASELINK_ACCESS_BINFO): Likewise. (tree_baselink): New structure. (cp_tree_node_structure_enum): Add TS_CP_BASELINK. (lang_tree_node): Add baselink. * decl.c (cp_tree_node_structure): Add BASELINK case. * search.c (build_baselink): Adjust. * tree.c (cp_walk_subtrees): Add BASELINK case. Remove BASELINK_P test from TREE_LIST case. PR c++/9272 * parser.c (cp_parser_constructor_declarator_p): Do not assume that a constructor cannot be declared outside of its own class. * parser.c (cp_parser_resolve_typename_type): If the scope cannot be resolved, neither can the qualified name. * rtti.c (get_pseudo_ti_desc): Fix thinko. 2003-01-16 Jason Merrill PR c++/8564 * init.c (build_vec_init): Re-add maxindex parm. (perform_member_init, build_aggr_init): Pass it. (build_new_1): Pass it. Use an incomplete array type for full_type. * typeck.c (build_modify_expr): Pass it. * cp-tree.h: Adjust. 2003-01-16 Jeffrey D. Oldham * cp-tree.h (tsubst_copy_and_build): New declaration. * pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment. (tsubst_expr): Use 'tsubst_copy_and_build'. Update initial comment. (tsubst_copy_and_build): New function. 2003-01-16 Mark Mitchell * cp-tree.h (lang_type_class): Remove is_partial_instantiation. (PARTIAL_INSTANTIATION_P): Remove. (IMPLICIT_TYPENAME_P): Likewise. (IMPLICIT_TYPENAME_TYPE_DECL_P): Likewise. (build_typename_type): Remove declaration. (parmlist_is_exprlist): Likewise. * decl.c (build_typename_type): Make it static, remove third parameter. (push_class_binding): Don't do implicit typename stuff. (make_typename_type): Likewise. (lookup_name_real): Likewise. (grokdeclarator): Don't try to convert declarations into initializations. Don't do implicit typename stuff. (parmlist_is_exprlist): Remove. (xref_basetypes): Simplify. * decl2.c (grokfield): Don't try to convert declarations into initializations. (build_anon_union_vars): Do this while processing templates, too. (finish_anon_union): Likewise. * error.c (dump_type): Remove implicit typename handling. * parser.c (cp_parser_diagnose_invalid_type_name): New method. (cp_parser_primary_expression): Correct handling of names not found by unqualified name lookup in templates. (cp_parser_nested_name_specifier_opt): Avoid checking dependency of types when possible. (cp_parser_simple_declaration): Complain intelligently about some invalid declarations. (cp_parser_member_declaration): Likewise. (cp_parser_constructor_declarator_p): Don't check when we're in a function scope. * pt.c (instantiate_class_template): Remove PARTIAL_INSTANTIATION_P gunk. * search.c (lookup_field_r): Don't build implicit typenames. (marked_pushdecls_p): Don't enter dependent base types. (unmarked_pushdecls_p): Likewise. * semantics.c (begin_class_definition): Remove implicit typename stuff. 2003-01-16 Nathan Sidwell PR c++/9212 * parser.c (cp_parser_direct_declarator): If accepting either abstract or named, the name must be an unqualified-id. 2003-01-16 Kaveh R. Ghazi * class.c (layout_virtual_bases): Avoid signed/unsigned warning. 2003-01-14 Kaveh R. Ghazi * decl2.c (check_classfn): Fix uninitialized warning. (build_anon_union_vars): Likewise. * pt.c (tsubst_copy): Likewise. 2003-01-14 Jeffrey D. Oldham Further conform g++'s __vmi_class_type_info to the C++ ABI specification. * rtti.c (dfs_class_hint_mark): Do not set hints not specified by the specification. (class_hint_flags): Likewise. 2003-01-14 Kriang Lerdsuwanakij * config-lang.in: Add semantics.c to gtfiles. * cp-tree.h (flagged_type_tree_s): Remove lookups field. (saved_scope): Likewise. (type_lookups): Remove. (deferred_access): New structure. (type_access_control): Remove. (save_type_access_control): Likewise. (reset_type_access_control): Likewise. (decl_type_access_control): Likewise. (push_deferring_access_checks): Declare. (resume_deferring_access_checks): Likewise. (stop_deferring_access_checks): Likewise. (pop_deferring_access_checks): Likewise. (get_deferred_access_checks): Likewise. (pop_to_parent_deferring_access_checks): Likewise. (perform_deferred_access_checks): Likewise. (perform_or_defer_access_check): Likewise. * decl.c (make_typename_type): Use perform_or_defer_access_check. (make_unbound_class_template): Likewise. (grokdeclarator): Don't call decl_type_access_control. * parser.c (cp_parser_context): Remove deferred_access_checks and deferring_access_checks_p fields. (cp_parser_context_new): Adjust. (cp_parser): Remove access_checks_lists. (cp_parser_defer_access_check): Remove. (cp_parser_start_deferring_access_checks): Remove. (cp_parser_stop_deferring_access_checks): Remove. (cp_parser_perform_deferred_access_checks): Remove. (cp_parser_nested_name_specifier_opt): Use new deferred access functions. (cp_parser_simple_declaration): Likewise. (cp_parser_template_id): Likewise. (cp_parser_function_definition): Likewise. (cp_parser_class_specifier): Likewise. (cp_parser_lookup_name): Likewise. (cp_parser_single_declaration): Likewise. (cp_parser_pre_parsed_nested_name_specifier): Likewise. (cp_parser_parse_tentatively): Likewise. (cp_parser_parse_definitely): Likewise. (yyparse): Likewise. (cp_parser_init_declarator): Remove access_checks parameter. Use new deferred access functions. (cp_parser_function_definition_from_specifiers_and_declarator): Likewise. (cp_parser_class_head): Remove deferring_access_checks_p and saved_access_checks parameters. Use new deferred access functions. (cp_parser_member_specification_opt): Don't call reset_type_access_control. * search.c (type_access_control): Remove. * semantics.c: Include "gt-cp-semantics.h". (deferred_type_access_control): Remove. (deferred_access_stack): New variable. (deferred_access_free_list): Likewise. (push_deferring_access_checks): New function. (resume_deferring_access_checks): Likewise. (stop_deferring_access_checks): Likewise. (pop_deferring_access_checks): Likewise. (get_deferred_access_checks): Likewise. (pop_to_parent_deferring_access_checks): Likewise. (perform_deferred_access_checks): New function, adapted from cp_parser_perform_deferred_access_checks. (perform_or_defer_access_check): New function, adapted from cp_parser_defer_access_check. (current_type_lookups): Remove. (deferred_type_access_control): Likewise. (decl_type_access_control): Likewise. (save_type_access_control): Likewise. (reset_type_access_control): Likewise. (begin_function_definition): Adjust. (begin_class_definiton): Likewise. 2003-01-13 Jason Merrill PR c++/8748 * class.c (build_base_path): Take the address before calling save_expr. * call.c (build_user_type_conversion_1): Do set ICS_BAD_FLAG if all the ambiguous conversions are bad. * class.c (maybe_warn_about_overly_private_class): Don't stop searching when we find a nonprivate method. * typeck.c (build_class_member_access_expr): Use unary_complex_lvalue. 2003-01-12 Mark Mitchell * cp-tree.h (get_arglist_len_in_bytes): Remove. PR c++/9264 * parser.c (cp_parser_elaborated_type_specifier): Handle erroneous typeame types more robustly. 2003-01-11 Phil Edwards * parser.c: Fix comment typos. 2003-01-10 Mark Mitchell PR c++/9099 * parser.c (cp_parser_scope_through_which_access_occurs): Handle an object_type which is not a class type. 2003-01-10 Geoffrey Keating * parser.c (cp_parser_late_parsing_for_member): Don't cast to void. (cp_parser_late_parsing_default_args): Likewise. 2003-01-10 Nathanael Nerode * cfns.gperf: ANSIfy function declarations. * cfns.h: Regenerate. * cp-tree.h: ANSIfy function declarations. 2003-01-10 Mark Mitchell * cp-tree.h (reparse_absdcl_as_expr): Remove. (reparse_absdcl_as_casts): Likewise. (reparse_decl_as_expr): Likewise. (finish_decl_parsing): Likewise. * decl2.c (reparse_absdcl_as_expr): Remove. (reparse_absdcl_as_casts): Likewise. (repase_decl_as_expr): Likewise. (finish_decl_parsing): Likewise. PR c++/9128 PR c++/9153 PR c++/9171 * parser.c (cp_parser_pre_parsed_nested_name_specifier): New function. (cp_parser_nested_name_specifier_opt): Correct the check_dependency_p false. (cp_parser_postfix_expression): Fix formatting. (cp_parser_decl_specifier_seq): Avoid looking for constructor declarators when possible. (cp_parser_template_id): Avoid performing name-lookup when possible. (cp_parser_class_head): Do not count specializations when counting levels of templates. (cp_parser_constructor_declarator_p): Return immediately if there's no chance that the tokens form a constructor declarator. * rtti.c (throw_bad_typeid): Add comment. Do not return an expression with reference type. (get_tinfo_decl_dynamic): Do not return an expression with reference type. (build_typeid): Add comment. Do not return an expression with reference type. * typeck.c (build_class_member_access_expr): Improve handling of conditionals and comma-expressions as objects. 2003-01-09 Nathanael Nerode * cfns.gperf: ANSIfy function declarations. * cfns.h: Regenerate. * cp-tree.h: ANSIfy function declarations. * parser.c: ANSIfy function declarations & definitions. * decl.c (bad_specifiers): Fix parameter order error I introduced. 2003-01-09 Geoffrey Keating Merge from pch-branch: 2003-01-09 Geoffrey Keating Merge to tag pch-merge-20030102: * semantics.c (finish_translation_unit): Don't call finish_file. * parser.c: Don't include ggc.h. (cp_lexer_new_main): Rename from cp_lexer_new, only create main lexer, read first token here. Don't allow PCH files after the first token is read. (cp_lexer_new_from_tokens): Duplicate functionality from cp_lexer_new. (cp_lexer_get_preprocessor_token): Allow LEXER to be NULL. (cp_parser_new): Call cp_lexer_new_main before allocating GCed memory. (cp_parser_late_parsing_for_member): Don't duplicate call to cp_lexer_set_source_position_from_token. (cp_parser_late_parsing_default_args): Likewise. (yyparse): Call finish_file after clearing the_parser. 2002-12-11 Geoffrey Keating * Make-lang.in: Remove $(GGC_H) from all dependencies. (CXX_TREE_H): Add $(GGC_H). * class.c: Don't include ggc.h. (field_decl_cmp): Make parameters be 'const void *' to match qsort. (method_name_cmp): Likewise. (resort_data): New variable. (resort_field_decl_cmp): New. (resort_method_name_cmp): New. (resort_sorted_fields): New. (resort_type_method_vec): New. (finish_struct_methods): Delete cast. (finish_struct_1): Delete cast. * cp-tree.h: Include ggc.h. (struct lang_type_class): Add reorder attribute to field `methods'. (union lang_decl_u3): Add reorder attribute to field `sorted_fields'. (resort_sorted_fields): New prototype. (resort_type_method_vec): New prototype. * call.c: Don't include ggc.h. * decl.c: Likewise. * decl2.c: Likewise. * init.c: Likewise. * lex.c: Likewise. * method.c: Likewise. * optimize.c: Likewise. * parse.y: Likewise. * pt.c: Likewise. * repo.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * spew.c: Likewise. * tree.c: Likewise. * lang-specs.h: Remove comment. 2002-12-03 Geoffrey Keating * cp-tree.h (struct operator_name_info_t): Mark for GTY machinery. (operator_name_info): Mark to be saved for PCH, specify size. (assignment_operator_name_info): Likewise. 2002-11-19 Geoffrey Keating * decl.c (anon_cnt): Mark to be saved for PCH. 2002-10-25 Geoffrey Keating * lex.c (init_reswords): Delete now-untrue comment. Allocate ridpointers using GGC. 2002-10-04 Geoffrey Keating * cp-tree.h (union lang_decl_u2): Add tags to all fields. * g++spec.c (lang_specific_driver): Don't include standard libraries in `added'. 2002-08-27 Geoffrey Keating * decl2.c (finish_file): Call c_common_write_pch. * Make-lang.in (CXX_C_OBJS): Add c-pch.o. 2002-08-17 Geoffrey Keating * g++spec.c (lang_specific_driver): Treat .h files as C++ header files when using g++. * lang-specs.h: Handle compiling C++ header files. 2003-01-09 Jakub Jelinek * decl.c (start_decl): Only check DECL_THREAD_LOCAL for VAR_DECLs. 2003-01-09 Kriang Lerdsuwanakij * pt.c (push_access_scope_real): Call push_to_top_level for function in namespace scope. (pop_access_scope): Call pop_from_top_level for function in namespace scope. 2003-01-09 Jakub Jelinek * decl.c (start_decl): Don't set DECL_COMMON for __thread variables. 2003-01-09 Christian Cornelssen * Make-lang.in (c++.install-common, c++.install-man, c++.uninstall): Prepend $(DESTDIR) to destination paths in all (un)installation commands. (c++.install-common): Rewrite $(LN) commands to support DESTDIR with "ln" as well as with "ln -s". 2003-01-08 Jason Merrill * parser.c (cp_parser_primary_expression): See through explicitly scoped ALIAS_DECLs, too. 2003-01-08 Nathanael Nerode * decl.c: Remove some #if 0 code. * decl.c: ANSIfy function declarations. 2003-01-07 Mark Mitchell * parser.c (cp_parser_asm_definition): Correct handling of omitted operands. 2003-01-08 Kriang Lerdsuwanakij PR c++/9030 * decl.c (make_typename_type): Check access only when tf_error. (make_unbound_class_template): Likewise. * pt.c (saved_access_scope): New variable. (push_access_scope_real): New function. (push_access_scope): Likewise. (pop_access_scope): Likewise. (tsubst_default_argument): Use them. (instantiate_template): Likewise. (regenerate_decl_from_template): Likewise. (instantiate_decl): Likewise. (get_mostly_instantiated_function_type): Likewise. 2003-01-07 Nathanael Nerode * tree.c: Delete bogus #if 0 code. 2003-01-07 Andreas Schwab * class.c (layout_class_type): Don't use PCC_BITFIELD_TYPE_MATTERS if not defined. 2003-01-06 Mark Mitchell PR c++/9165 * decl2.c (build_cleanup): Mark the object as used. * pt.c (retrieve_local_specialization): Revert 2003-01-05 change. (hash_local_specialization): New function. (register_local_specialization): Revert 2003-01-05 change. (instantiate_decl): Use hash_local_specialization when creating the local_specializations table. * decl2.c (mark_used): Do not synthesize thunks. * class.c (layout_class_type): Correct handling of unnamed bitfields wider than their types. PR c++/9189 * parser.c (cp_parser): Remove default_arg_types. Update documentation for unparsed_functions_queues. (cp_parser_late_parsing_default_args): Take a FUNCTION_DECL as the parameter. (cp_parser_new): Don't set parser->default_arg_types. (cp_parser_function_definition): Adjust usage of unparsed_funtions_queues. (cp_parser_class_specifier): Don't mess with parser->default_arg_types. Handle default argument processing in a separate phase from function body processing. (cp_parser_template_declaration_after_export): Adjust usage of unparsed_functions_queues. (cp_parser_late_parsing_for_member): Do not handle default arguments. 2003-01-06 Nathan Sidwell PR c++/9109 * parser.c (cp_parser_declarator_kind): New enum. (cp_parser_declarator): Adjust. (cp_parser_direct_declarator): Adjust. Allow for either named or abstract declarator. Prefer abstract, if possible. Allow parenthesized function name. (cp_parser_condition): Adjust cp_parser_declarator call. (cp_parser_explicit_instantiation): Likewise. (cp_parser_init_declarator): Likewise. (cp_parser_type_id): Likewise. (cp_parser_function_definition): Likewise. (cp_parser_member_declaration): Likewise. (cp_parser_parameter_declaration): Use cp_parser_declarator to do the tentative parsing. (cp_parser_exception_declaration): Likewise. 2003-01-05 Mark Mitchell * parser.c (cp_parser_template_parameter): Adjust call to cp_parser_parameter_declaration. (cp_parser_parameter_declaration_list): Likewise. (cp_parser_parameter_declaration): Replace greater_than_is_operator_p with template_parm_p parameter. Do not cache tokens for template default arguments. * pt.c (retrieve_local_specialization): Use htab_find, not htab_find_with_hash. (register_local_specialization): Use htab_find_slot, not htab_find_slot_with_hash. (instantiate_decl): Pass a hash function to htab_create. 2003-01-04 Kaveh R. Ghazi * parser.c (cp_parser_binary_expression, cp_parser_multiplicative_expression, cp_parser_additive_expression, cp_parser_shift_expression, cp_parser_relational_expression, cp_parser_equality_expression, cp_parser_and_expression, cp_parser_exclusive_or_expression, cp_parser_inclusive_or_expression, cp_parser_logical_and_expression, cp_parser_logical_or_expression, cp_parser_binary_expression): Const-ify. 2003-01-04 Mark Mitchell * method.c (use_thunk): Disable access control while building the body of the thunk. 2003-01-03 Nathanael Nerode * cvt.c, decl.c, decl2.c: This is the C++ front end, not the C front end. 2003-01-03 Matt Austern * cp-tree.h (struct lang_type_class): add field for key method (cp_global_trees): rename dynamic_classes to keyed_classes (key_method): add definition * class.c (finish_struct_1): compute class's key method, and add the class to keyed_classes list if there is no key method. * decl.c (finish_function): add class to keyed_classes list if we see a definition of the class's key method. * pt.c (instantiate_class_template): add template specialization of a dynamic class to keyed_classes list. * decl2.c (key_method): remove (finish_file): iterate only through keyed_classes list when deciding whether to emit vtables, remove class from its list after we do the emission. 2003-01-02 Jason Merrill * call.c (build_conditional_expr): Stabilize lvalues properly. * cvt.c (ocp_convert): Don't build NOP_EXPRs of class type. * tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues. Don't allow CALL_EXPR or VA_ARG_EXPR, either. * call.c (convert_like_real): Call decl_constant_value for an IDENTITY_CONV even if there are no more conversions. * cvt.c (build_up_reference): Don't push unnamed temps. * decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL. * dump.c (cp_dump_tree): Don't try to dump class-specific fields for a backend struct. * except.c (wrap_cleanups_r, build_throw): Make MUST_NOT_THROW_EXPRs void. * init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR. * init.c (build_vec_delete_1): Pre-evaluate the base address. * init.c (get_temp_regvar): Simplify logic. * tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if our replacement is a decl. * decl.c (cp_make_fname_decl): Push the decls inside the outermost scope. 2003-01-03 Nathan Sidwell PR c++/45, c++/3784 * tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be the same too. 2003-01-03 Graham Stott * parser.c (struct cp_parser): Add access_checks_lists field (cp_parser_simple_declaration): Use. (cp_parser_init_declarator): Likewise. 2003-01-02 Mark Mitchell * parser.c (cp_parser_declaration): Accept the __extension__ keyword before the declaration. PR c++/2843 * parser.c (cp_parser_parameter_declaration): Allow attributes to appear after the declarator. * call.c (build_new_method_call): Fix typo in message format string. 2003-01-02 Mark Mitchell * parser.c (cp_lexer_next_token_is): Declare it inline. (cp_lexer_set_source_position_from_token): Likewise. (cp_lexer_debugging_p): Likewise. (cp_parser_parsing_tentatively): Likewise. (cp_parser_nested_name_specifier_opt): Reduce the number of calls to the cp_lexer_peek_token. * parser.c (cp_parser_sizeof_operand): Do not evaluate the expression. 2003-01-02 Steven Bosscher * cp/except.c, cp/expr.c, cp/friend.c, cp/g++spec.c, cp/lang-options.h, cp/lang-specs.h, cp/lex.h, cp/ptree.c, cp/repo.c: Fix copyright years. 2003-01-01 Neil Booth * lex.c: Remove superfluous include of cpplib.h. (CONSTRAINT): Define without conditions. (init_cp_pragma): Use c_register_pragma. Copyright (C) 2003 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.