2007-01-29 Manuel Lopez-Ibanez * decl.c (pop_label): Replace warning with call to warn_for_unused_label. 2007-01-28 Andrew Pinski PR C++/28988 * semantics.c (finish_pseudo_destructor_expr): Check the destrutor name by calling check_dtor_name. 2007-01-24 Douglas Gregor * lex.c (D_CPP0X): Rename. (D_CXX0X): To this. (reswords): D_CPP0X -> D_CXX0X. (init_reswords): Ditto. * parser.c (cp_lexer_get_preprocessor_token): Warn about the use of C++0x keywords as identifiers. 2007-01-23 Simon Martin PR c++/27492 * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for function decls. 2007-01-23 Ian Lance Taylor * typeck.c (convert_for_assignment): Only warn about a = b = c when converting to bool. 2007-01-23 Roger Sayle * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW. * typeck.c (ignore_overflows): Remove the remaining uses of TREE_CONSTANT_OVERFLOW. 2007-01-20 Jan Hubicka * decl2.c (start_objects, start_static_storage_duration_function): Do not make the functions uninlinable. 2007-01-17 Ian Lance Taylor * class.c (add_method): Call VEC_reserve_exact rather than passing a negative size to VEC_reserve. 2007-01-11 Simon Martin PR c++/29573 * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees. 2007-01-10 Mark Mitchell PR c++/28999 * decl.c (make_typename_type): If the qualified name is not a type, issue an error. * parser.c (cp_parser_elaborated_type_specifier): Fix comment formatting. 2007-01-08 Geoffrey Keating * rtti.c: Include target.h. (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (), don't emit typeinfo for fundamental types as weak. * Make-lang.in (cp/rtti.o): Update and correct dependencies. 2007-01-08 Richard Guenther * cvt.c (cp_convert_to_pointer): Use build_int_cst_type. 2007-01-08 Mark Shinwell * call.c (standard_conversion): Pass flag to vector_types_convertible_p to disallow emission of note. * typeck.c (convert_for_assignment): Pass flag to vector_types_convertible_p to allow emission of note. (ptr_reasonably_similar): Pass flag to vector_types_convertible_p to disallow emission of note. 2007-01-07 Manuel Lopez-Ibanez PR c++/28986 * typeck.c (build_binary_op): Call overflow_warning if TREE_OVERFLOW_P is true for the result and not for any of the operands. 2007-01-06 Lee Millward PR c++/19439 * class.c (add_method): Don't wait until template instantiation time to complain about duplicate methods. 2007-01-05 Manuel Lopez-Ibanez PR c/19978 * semantics.c (finish_unary_op_expr): Warn only if result overflowed and operands did not. 2007-01-05 Ian Lance Taylor * typeck.c (build_binary_op): Warn about comparing a non-weak address to NULL. 2007-01-05 Douglas Gregor * pt.c (tsubst): Propagate the need for structural equality checks when reducing the level of template parameters. 2007-01-03 Kazu Hirata * pt.c: Fix a comment typo. 2006-01-02 Ian Lance Taylor * semantics.c (maybe_convert_cond): Optionally warn when using an assignment as a condition. * typeck.c (convert_for_assignment): Optionally warn about assigning the result of an assignment to a bool. 2007-01-02 Douglas Gregor * pt.c (canonical_template_parms): Correct typo in comment. 2007-01-02 Douglas Gregor * typeck.c (structural_comptypes): Renamed from "comptypes". (comptypes): Use canonical type information to perform fast type comparison. When VERIFY_CANONICAL_TYPES, verify that the canonical type comparison returns the same results as we would see from the current, structural check. Support COMPARE_STRUCTURAL when we need structural checks. * decl.c (typename_compare): Fix comment. (build_typename_type): TYPENAME_TYPE nodes require structural equality checks, because they resolve different based on the current class type. (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes require structural equality checks (for now). (build_ptrmemfunc_type): Build the canonical pointer to member function type. (compute_array_index_type): Whenever we build a new index type to represent the size of an array in a template, we need to mark this index type as requiring structural equality. This goes for arrays with value-dependent sizes with the current ABI, or all arrays with ABI-1. * tree.c (cplus_array_hash): New. (struct cplus_array_info): New. (cplus_array_compare): New. (cplus_array_htab): New. (build_cplus_array_type_1): Use a hash table to cache the array types we build. Build the canonical array type for each array type. (cp_build_qualified_type_real): When building a cv-qualified array type, use the hash table of array types and build canonical array types as necessary. (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes use structural equality (for now). * cp-tree.h (COMPARE_STRUCTURAL): New. * pt.c (canonical_template_parms): New. (canonical_type_parameter): New. (process_template_parm): Find the canonical type parameter. (lookup_template_class): When we have named the primary template type, set the canonical type for our template class to the primary template type. If any of the template arguments need structural equality checks, the template class needs structural equality checks. (tsubst): When reducing the level of a template template parameter, we require structural equality tests for the resulting parameter because its template parameters have not had their types canonicalized. When reducing a template type parameter, find the canonical reduced type parameter. (any_template_arguments_need_structural_equality_p): New. 2006-12-31 Simon Martin PR c++/29731 * parser.c (cp_parser_primary_expression): Return error_mark_node when a statement-expression is found outside of a function body. 2006-12-28 Kazu Hirata * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P): Remove. * decl2.c: Fix a comment typo. 2006-12-21 Andrew Pinski PR C++/30225 * decl.c (cxx_builtin_function): Only copy the decl if adding it to the std namespace. 2006-12-21 Andrew Pinski PR C++/30168 * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also. 2006-12-22 Kazu Hirata * decl.c: Fix a coment typo. 2006-12-18 Ian Lance Taylor * decl.c (start_preparsed_function): Add support for -Wmissing-declarations. 2006-12-16 Simon Martin PR c++/29475 * cp-tree.h (struct deferred_access_check): New structure to represent a deferred access check. It replaces the previous representation as a tree. (get_deferred_access_checks): Return a vector of struct deferred_access_check instead of a tree list. (perform_access_checks): Take a vector of struct deferred_access_check instead of a tree list. * semantics.c (struct deferred_access): Store the deferred access checks as a vector of struct deferred_access_check instead of a tree list. (push_deferring_access_checks): Handle the change in struct deferred_access. (get_deferred_access_checks): Likewise. (pop_to_parent_deferring_access_checks): Likewise. (perform_or_defer_access_check): Likewise. (perform_access_checks): Take a vector of struct deferred_access_check instead of a tree list. * parser.c (struct tree_check): New structure to store various data associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token. (struct cp_token): Changed the value field to be a union with a pointer to a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID tokens and a tree field for all other tokens. (eof_token): Adjusted due to the change in struct cp_token. (cp_lexer_get_preprocessor_token): Likewise. (cp_lexer_purge_token): Likewise. (cp_lexer_purge_tokens_after): Likewise. (cp_lexer_print_token): Likewise. (cp_parser_error): Likewise. (cp_parser_identifier): Likewise. (cp_parser_string_literal): Likewise. (cp_parser_primary_expression): Likewise. (cp_parser_unqualified_id): Likewise. (cp_parser_parenthesized_expression_list): Likewise. (cp_parser_storage_class_specifier_opt): Likewise. (cp_parser_function_specifier_opt): Likewise. (cp_parser_type_specifier): Likewise. (cp_parser_simple_type_specifier): Likewise. (cp_parser_initializer_list): Likewise. (cp_parser_member_specification_opt): Likewise. (cp_parser_attribute_list): Likewise. (cp_parser_objc_expression): Likewise. (cp_parser_objc_protocol_qualifiers): Likewise. (cp_parser_objc_selector): Likewise. (cp_parser_objc_declaration): Likewise. (cp_parser_objc_statement): Likewise. (cp_parser_omp_clause_name): Likewise. (cp_parser_omp_clause_default): Likewise. (cp_parser_omp_clause_schedule): Likewise. (cp_parser_omp_parallel): Likewise. (cp_parser_initial_pragma): Likewise. (pragma_lex): Likewise. (cp_parser_pre_parsed_nested_name_specifier): Likewise. (cp_parser_nested_name_specifier_opt): Likewise. Use cp_token::u::tree_check_value to save the token's value, the associated deferred checks and its qualifying scope. (cp_parser_template_id): Likewise. (cp_parser_template_declaration_after_export): Adjusted the call to get_deferred_access_checks. (cp_parser_init_declarator): Take the access checks as a vector of struct deferred_access_check instead of a tree list. (cp_parser_single_declaration): Likewise. (cp_parser_perform_template_parameter_access_checks): Likewise. (cp_parser_simple_declaration): Adjusted the call to cp_parser_init_declarator. (cp_parser_explicit_specialization): Adjusted the call to cp_parser_single_declaration. 2006-12-13 Ian Lance Taylor PR c++/19564 PR c++/19756 * parser.c (cp_parser_expression_stack_entry): Add field lhs_type. (cp_parser_binary_expression): Track tree code of left hand side of expression. Use it when calling build_x_binary_op. (cp_parser_selection_statement): Add if_p parameter. Change all callers. Warn about ambiguous else. (cp_parser_statement): Add if_p parameter. Change all callers. (cp_parser_implicitly_scoped_statement): Likewise. * typeck.c (build_x_binary_op): Add parameters arg1_code and arg2_code. Change all callers. Call warn_about_parentheses. * cp-tree.h (build_x_binary_op): Update declaration. 2006-12-12 Manuel Lopez-Ibanez * decl.c (build_enumerator): Update error message to match C front-end. 2006-12-11 Jan Hubicka * decl2.c (var_finalized_p): Update for renamed varpool functions. 2006-12-09 Zack Weinberg * parser.c (yydebug, enum pragma_omp_clause): Delete. 2006-12-07 Mark Mitchell PR c++/29732 * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations. (explicit_class_specialization_p): Declare. * pt.c (explicit_class_specialization_p): New function. * parser.c (cp_parser_init_declarator): Check correct number of template parameters for in-class function definitions. (cp_parser_check_declrator_template_parameters): Stop looking for template classes when we find an explicit specialization. 2006-12-07 Lee Millward PR c++/29980 * cp_parser_elaborated_type_specifier: Check the return value of check_elaborated_type_specifier. 2006-12-06 Mark Mitchell PR c++/29730 * parser.c (cp_parser_init_declarator): Reject initialization of functions. 2006-12-05 Mark Mitchell PR c++/29729 * decl2.c (check_member_template): Move check for member templates in local classes to ... * parser.c (cp_parser_template_declaration_after_export): ... here. PR c++/29728 * decl.c (check_array_designated_initializer): New function. (maybe_deduce_size_from_array_init): Use it. (reshape_init_array): Likewise. 2006-12-05 Aldy Hernandez Merge from gimple-tuples-branch. 2006-10-05 Aldy Hernandez * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT. (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT. (cxx_omp_clause_copy_ctor): Same. (cxx_omp_clause_assign_op): Same. 2006-09-28 Aldy Hernandez * cp-tree.h (union lang_tree_node): Gimple statements do not have a TREE_CHAIN. (TREE_INDIRECT_USING): Look in base. 2006-12-04 Jan Hubicka * cp-objcp-common.c (cp_expr_size): Return NULL in the case size is undefined. 2006-12-04 Mark Mitchell PR c++/29733 * pt.c (tsubst_decl): Disallow variables of function type. PR c++/29632 * call.c (add_builtin_candidate): Do not permit NULL pointer constants to be compared with template parameters. 2006-12-04 Eric Botcazou * pt.c (for_each_template_parm_r) : New case. Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE. 2006-12-03 Richard Henderson Andrew Pinski PR C++/14329 * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR. 2006-12-02 Andrew Pinski PR C++/30033 * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT. 2006-12-02 Kazu Hirata * name-lookup.c: Follow spelling conventions. 2006-12-01 Geoffrey Keating * decl.c (poplevel): Check DECL_INITIAL invariant. (duplicate_decls): Preserve DECL_INITIAL when eliminating a new definition in favour of an old declaration. (start_preparsed_function): Define and document value of DECL_INITIAL before and after routine. (finish_function): Check DECL_INITIAL invariant. * parser.c (cp_parser_function_definition_from_specifiers_and_declarator): Skip duplicate function definitions. 2006-12-01 Volker Reichelt PR c++/30022 * typeck.c (type_after_usual_arithmetic_conversions): Fix assertion for vector types. (build_binary_op): Use temporary for inner type of vector types. 2006-12-01 Ryan Mansfield PR c++/29066 * typeck.c (build_binary_op): Fix pointer to member function comparison for ptrmemfunc_vbit_in_delta targets. 2006-12-01 Dirk Mueller PR c++/18313 * decl.c (grokdeclarator): Warn for type qualifiers on return type for non-dependent types. * pt.c (tsubst_function_type): Warn for type qualifiers on return type for dependent types. 2006-11-30 Geoffrey Keating * rtti.c (get_tinfo_decl): Handle return value from pushdecl_top_level_and_finish. 2006-11-29 Lee Millward PR c++/29022 * parser.c (cp_parser_class_head): Move processing of any base classes to... (cp_parser_class_specifier) ...here. Take an extra tree* parameter for any base classes. Only process them if the opening brace was found. 2006-11-28 Jakub Jelinek PR c++/29735 * decl.c (grokfndecl): Check main's type after applying attributes, not before. 2006-11-27 Mark Mitchell * class.c (build_vcall_offset_vtbl_entries): Do not add vcall entries for a primary construction virtual table. 2006-11-26 Mark Mitchell PR c++/29886 * parser.c (cp_parser): Add in_function_body. (cp_parser_new): Initialize it. (cp_parser_primary_expression): Use parser->in_function_body instead of at_function_scope_p. (cp_parser_asm_definition): Likewise. (cp_parser_direct_declarator): Likewise. (cp_parser_class_specifier): Clear parser->in_function_body. (cp_parser_constructor_declarator_p): Use parser->in_function_body instead of at_function_scope_p. (cp_parser_function_body_after_declarator): Set parser->in_function_body. 2006-11-21 Douglas Gregor * cp-tree.def (STATIC_ASSERT): New. * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT. * error.c (dump_decl): Handle STATIC_ASSERT. * cp-tree.h (STATIC_ASSERT_CONDITION): New. (STATIC_ASSERT_MESSAGE): New. (STATIC_ASSERT_SOURCE_LOCATION): New. (struct tree_static_assert): New. (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT. (union lang_tree_node): Add static_assertion. (finish_static_assert): Declare. * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT. (pp_cxx_declaration): Handle STATIC_ASSERT. * pt.c (instantiate_class_template): Handle STATIC_ASSERT members. (tsubst_expr): Handle STATIC_ASSERT statements. * semantics.c (finish_static_assert): New. * lex.c (D_CPP0X): New. (reswords): Add static_assert keyword. (init_reswords): If not flag_cpp0x, mask out C++0x keywords. * parser.c (cp_parser_block_declaration): Parse static assertions. (cp_parser_static_assert): New. (cp_parser_member_declaration): Parse static assertions. 2006-11-21 Jakub Jelinek PR c++/29570 * decl.c (cp_finish_decl): Check for value dependent brace enclosed scalar initializer. PR c++/29734 * cp-tree.h (WANT_VECTOR): Define. (WANT_ARITH): Add WANT_VECTOR. * cvt.c (build_expr_type_conversion): Handle vector types. * typeck.c (build_unary_op): Add WANT_VECTOR to build_expr_type_conversion flags. 2006-11-20 Simon Martin PR c++/29475 * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an extra argument that represents the declaration to use to print potential error messages. * init.c (build_offset_ref): Adjusted the call to perform_or_defer_access_check. * class.c (alter_access, resolve_address_of_overloaded_function): Likewise. * decl.c (make_typename_type, make_unbound_class_template): Likewise. * search.c (lookup_member): Likewise. * friend.c (add_friend): Likewise. * parser.c (cp_parser_template_id, cp_parser_pre_parsed_nested_name_specifier): Likewise. * semantics.c (finish_non_static_data_member, check_accessibility_of_qualified_id, finish_id_expression): Likewise. (pop_to_parent_deferring_access_checks, perform_access_checks, perform_or_defer_access_check): Adjusted the call to enforce_access. * call.c (enforce_access): Use the new extra argument to build the error message. (build_op_delete_call): Adjusted the call to perform_or_defer_access_check. (build_over_call): Likewise. 2006-11-16 Dirk Mueller * name-lookup.c (begin_scope): Use GGC_CNEW instead of GGC_NEW and memset. 2006-11-13 Roger Sayle * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the base type info initializer has the correct type. 2006-11-13 Mark Mitchell PR c++/29518 * pt.c (coerce_template_parms): Do not skip_evaluation while substituting template arguments. 2006-11-11 Richard Guenther * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR, FIX_FLOOR_EXPR and FIX_ROUND_EXPR. 2006-11-03 Roger Sayle * call.c (build_op_delete_call): Test user-visible type against size_type_node, instead of against the internal type, sizetype. * class.c (type_requires_array_cookie): Likewise. * mangle.c (write_builtin_type) : Remove special handling of TYPE_IS_SIZETYPE. * typeck.c (type_after_usual_arithmetic_conversions): Remove special case handling of TYPE_IS_SIZETYPE. (comptypes): Likewise. 2006-11-01 Danny Smith * decl.c (get_atexit_node): Reference atexit, not __cxa_exit. if targetm.cxx.use_atexit_for cxa_atexit. (start_cleanup_fn): Likewise. (register_dtor_fn): Likewise. 2006-09-25 Geoffrey Keating * decl2.c (cp_write_global_declarations): Rename from cp_finish_file. * cp-lang.c (finish_file): Don't call cp_finish_file. * cp-tree.h (cp_write_global_declarations): Rename from cp_finish_file. * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to cp_write_global_declarations. 2006-10-31 Geoffrey Keating * name-lookup.c (get_anonymous_namespace_name): New. (push_namespace_with_attribs): Use get_anonymous_namespace_name. * decl2.c (start_objects): Update for rename of get_file_function_name_long. 2006-10-30 Dirk Mueller PR c++/28704 * decl.c (grokdeclarator): Duplicate diagnostic message for easier translation. * decl.c (grokdeclarator): Fix line-wrapping. 2006-10-30 Dirk Mueller PR c++/6321 * decl.c (grokfndecl): Use check_main_parameter_types. 2006-10-30 Dirk Mueller PR c++/28669 * decl.c (grokfndecl): Duplicate warning message for easier translation. 2006-10-30 Dirk Mueller * typeck.c (build_unary_op): Fix indenting. Use G_(). 2006-10-29 Dirk Mueller PR c++/29089 * typeck.c (build_unary_op): Duplicate warning message for easier translation. 2006-10-29 Dirk Mueller PR c++/16307 * typeck.c (build_array_ref): Warn for char subscriptions on pointers. 2006-10-29 Kazu Hirata * decl.c: Fix a comment typo. 2006-10-28 Andrew Pinski PR C++/29295 * typeck.c (build_unary_op): Use same_type_p when comparing to boolean type. 2006-10-29 Dirk Mueller PR c++/29033 * typeck.c (build_binary_op): Duplicate warning message for better translation. 2006-10-23 Rafael Avila de Espindola * decl.c (builtin_function_1): Move common code to add_builtin_function. (builtin_function): Rename to cxx_builtin_function. Change the signature. * call.c: Include langhooks.h. (build_java_interface_fn_ref): Replace calls to builtin_function with add_builtin_function. * Make-lang.in (cp/call.o): Depend on langhooks.h. * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as cxx_builtin_function. * cp-tree.h (builtin_function): Rename to cxx_builtin_function. Change the signature. 2006-10-22 Nathan Sidwell PR c++/20647 * rtti.c (tinfo_base_init): The type info string is always global. 2006-10-20 Lee Millward Mark Mitchell PR c++/28053 * decl2.c (grokbitfield): Detect invalid non-integral types earlier when possible. 2006-10-18 Mark Shinwell PR c++/26884 * typeck2.c (digest_init): Raise error upon attempts to initialize arrays with variables. 2006-10-17 Lee Millward PR c++/27952 * cp-tree.h (xref_basetypes): Return bool instead of void. * decl.c (xref_basetypes): Adjust definition. Return false if the class bases are invalid. * parser.c (cp_parser_class_head): Check the return value from xref_basetypes. 2006-10-17 Mark Mitchell PR c++/28261 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add comment. PR c++/28261 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New function. (cp_parser_constructor_declarator_p): Use it. (cp_parser_check_type_definition): Return a value indicating whether or not the definition is valid. (cp_parser_enum_specifier): Skip invalid enum definitions. 2006-10-17 Mark Mitchell PR c++/29039 * typeck2.c (build_functional_cast): Don't zero-initialize non-PODs; instead, call their constructors. * method.c (synthesize_method): Always build mem-initializers, if we're synthesizing the default constructor. 2006-10-17 Mark Mitchell PR c++/27270 * decl.c (reshape_init_class): Move check for designated to ... * parser.c (cp_parser_initializer_list): ... here. * pt.c (tsubst_copy_and_build): Use finish_compound_literal. 2006-10-16 Mark Mitchell PR c++/27270 * typeck2.c (process_init_constructor_array): Reword comment. * pt.c (tsubst_copy_and_built): Call reshape_init before calling digest_init. PR c++/29408 * parser.c (cp_parser_using_declaration): Stop parsing when something goes wrong with an access declaration. PR c++/29435 * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent types when their sizes are required. Refine test for VLAs. PR c++/28211 * parser.c (cp_parser_template_argument): Don't consider "&var" a possible constant-expression. * pt.c (convert_nontype_argument): Refine handling of arguments of pointer type. 2006-10-13 Mark Mitchell PR c++/28506 * parser.c (function_declarator_p): New function. (cp_parser_init_declarator): Use it. (cp_parser_member_declaration): Likewise. 2006-10-12 Mark Mitchell PR c++/29318 * rtti.c (get_tinfo_decl): Refuse to create type info objects for variably modified types. 2006-10-12 Lee Millward PR c++/27961 * decl.c (start_decl): Return error_mark_node if a function is initialized like a variable. (check_var_type): If a variable of field is declared void, set the type to error_mark_node. (grokdeclarator): Check the return type of check_var_type. * class.c (finish_struct_1): Robustify. 2006-10-11 Mark Mitchell PR c++/29175 * decl.c (check_initializer): Issue errors about trying to initialize arrays whose elements have variable size. 2006-10-11 Lee Millward PR c++/29024 * cp-tree (struct cp_decl_specifier_seq): Rename to conflicting_specifiers_p * parser.c (cp_parser_set_storage_class): Set conflicting_specifiers_p for the input decl specifier if a typedef specifier is present. Rename uses of multiple_specifiers_p to conflicting_specifiers_p. (cp_parser_decl_specifier_seq) : If a storage class specifier has already been set for this declaration, set conflicting_specifiers_p to true on the decl_specs. * decl.c (grokdeclarator): Rename uses of multiple_specifiers_p to conflicting_specifiers_p. 2006-10-10 Brooks Moses * Make-lang.in: Added "c++.pdf" target support. 2006-10-10 Richard Guenther PR rtl-optimization/29323 * decl.c (finish_function): Set TREE_NOTHROW only for functions that bind local. 2006-10-09 Richard Henderson Revert emutls patch. 2006-10-04 Richard Henderson Jakub Jelinek * decl.c (grokvardecl): Don't error if !have_tls. (grokdeclarator): Likewise. * parser.c (cp_parser_omp_threadprivate): Likewise. 2006-10-03 Mark Mitchell PR c++/29020 * friend.c (do_friend): Improve comments; add assertion. * parser.c (cp_parser_nested_name_specifier_opt): Resolve typenames for qualified names used in declarations, even when caching qualified name lookup. PR c++/29138 * decl2.c (grokfield): Don't handle access declarations here. * parser.c (cp_parser_using_declaration): Handle access declarations too. (cp_parser_block_declaration): Adjust calls to cp_parser_using_declaration. (cp_parser_member_declaration): Likewise. Use cp_parser_using_declaration to look for access_declarations. 2006-10-03 Volker Reichelt PR c++/29291 * init.c (build_new): Check for invalid init. 2006-10-02 Mark Mitchell PR c++/29226 * typeck.c (cxx_sizeof_or_alignof_type): Tidy. In templates, do not try to actually evaluate sizeof for a VLA type. 2006-10-01 Mark Mitchell PR c++/29105 * pt.c (tsubst_baselink): Substituteinto the qualifying scope. * semantics.c (baselink_for_fns): Build a baselink, even when processing a template. PR c++/29080 * parser.c (cp_parser_postfix_dot_deref_expression): Use BASELINK_ACCESS_BINFO as the qualifying scope when calling adjust_result_of_qualified_name_lookup. 2006-09-25 Lee Millward PR c++/27329 PR c++/26938 * cp-tree.h (redeclare_class_template): Adjust declaration to return bool instead of void. * pt.c (redeclare_class_template): Update definition. Return false on error. * decl.c (xref_tag): Return error_mark_node if redeclare_class_template returned false. PR c++/27667 * cp-tree.h (begin_specialization): Return bool instead of void. * pt.c (check_specialization_scope): Likwise. Adjust comment. Return false if a specialization isn't permitted in the current scope. (begin_specialization): Use the return value of check_specialization_scope. * parser.c (cp_parser_explicit_specialization): If begin_specialization returned false, skip the rest of the specialization. 2006-09-21 Mark Mitchell PR c++/29016 * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a BASELINK. 2006-09-21 Lee Millward PR c++/28861 * decl.c (shadow_tag): Return error_mark_node if maybe_process_partial_specialization failed. PR c++/28303 * decl.c (grokdeclarator): Return error_mark_node on declaration with two or more data types. 2006-09-20 Danny Smith PR target/27650 * class.c (check_for_override): Remove dllimport from virtual methods. 2006-09-18 Steven Bosscher PR c++/29087 * parser.c (cp_parser_labeled_statement): Return nothing. Do not take in_statement_expr and in_compound as arguments. Rename to cp_parser_label_for_labeled_statement. Parse only the label, not the statement. (cp_parser_statement): Parse the statement of a labeled-statement from here, using tail recursion. 2006-09-14 Andrew Pinski PR C++/29002 * init.c (build_zero_init): If we have an error mark node for the array size, return. 2006-09-10 Mark Mitchell PR c++/28991 * cp-objcp-common.c (cxx_staticp): New function. * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it. * cp-tree.h (cxx_staticp): New function. 2006-09-09 Jason Merrill PR c++/28996 * cvt.c (convert_to_void): Strip COMPONENT_REF to functions. 2006-09-08 Volker Reichelt PR c++/28858 * parser.c (cp_parser_skip_until_found): Rename to cp_parser_skip_to_end_of_template_parameter_list. Remove last two parameters. Track levels of '< ... >'. Stop at '{', '}', or ';'. Reorganize. Adjust comment. (cp_parser_template_declaration_after_export): Adjust call. (cp_parser_enclosed_template_argument_list): Likewise. 2006-09-07 Andrew Pinski PR C++/28906 * init.c (build_new_1): Build a distinct type copy for the array type that was returned from build_cplus_array_type. 2006-09-07 Jason Merrill PR c++/27371 * cvt.c (convert_to_void): Enable previous change. PR c++/26957 * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied parms. 2006-09-07 Simon Martin PR c++/28284 * pt.c (fold_non_dependent_expr): Make sure expr is not dereferenced if it is NULL. 2006-09-06 Zak Kipling PR c++/26195 * decl.c (make_rtl_for_nonlocal_decl), (start_preparsed_function): Don't use lbasename on input_filename when calling get_fileinfo. * semantics.c (begin_class_definition): Likewise. * lex.c (cxx_make_type): Likewise. (handle_pragma_interface): Call get_fileinfo on input_filename, not on the parameter to the directive. 2006-09-06 Mark Mitchell PR c++/28903 * pt.c (tsubst): Use fold_non_dependent_expr to fold array dimensions. PR c++/28886 * pt.c (unify): Avoid unnecessary calls to fold_build2 for array dimensions. 2006-09-06 Jason Merrill PR c++/27371 * cvt.c (convert_to_void): Strip useless TARGET_EXPR. * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro. * tree.c (build_cplus_new): Set it. PR c++/26696 * cvt.c (convert_to_void): Replace a subexpression with no side effects with void_zero_node. * tree.c (is_overloaded_fn): Look through COMPONENT_REF. (get_first_fn): Ditto. * decl.c (grokdeclarator): No need to look through COMPONENT_REF. 2006-09-05 Jason Merrill PR c++/26571 * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case where the name is a type used incorrectly. PR c++/26671 * typeck.c (maybe_warn_about_returning_address_of_local): Look through COMPONENT_REF and ARRAY_REF. PR c++/26102 * name-lookup.c (do_class_using_decl): Try to find the base even if bases_dependent_p. * pt.c (type_dependent_expression_p): A USING_DECL is dependent. PR c++/19809 * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl. 2006-09-04 Nathan Sidwell PR 23287 Revert my 2006-09-01 patch. * parser.c: Reverted. * pt.c: Reverted. 2006-09-02 Lee Millward PR c++/27670 PR c++/27493 PR c++/27494 PR c++/27397 * parser.c (cp_parser_template_parameter_list): Add invalid template parameters to the parameter list as error_mark_node. 2006-09-02 Jakub Jelinek PR c++/28878 * except.c (build_throw): Only set current_function_returns_abnormally if cfun is not NULL. PR c++/26917 * repo.c (repo_file): Remove. (open_repo_file, reopen_repo_file_for_write): Return fopened FILE * instead of setting global repo_file variable. (init_repo): Adjust caller. (finish_repo): Likewise. Return instead of goto out before reopen_repo_file_for_write has been called. 2006-09-01 Nathan Sidwell PR c++/28705 * semantics.c (finish_call_expr): Add assert. * name-lookup.c (lookup_arg_dependent): Check we found an overload or an object. PR c++/23287 * parser.c (cp_parser_id_expression): Add member_p argument. Update all callers. (cp_parser_unqualified_id): Likewise. Lookup a destructor name in the object's scope, if valid. (cp_parser_global_scope_opt): Add object_scope_valid_p. Update callers. (cp_parser_postfix_dot_deref_expression): Set object_scope. * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here. 2006-08-30 Jason Merrill PR c++/26670 * class.c (check_field_decls): Don't unset TYPE_PACKED until all the fields have been processed. 2006-08-29 Andrew Pinski PR C++/28349 * call.c (build_x_va_arg): Remove the reference type from the type before creating the pointer type. 2006-08-29 J"orn Rennecke PR c++/28139 * except.c (expand_start_catch_block): Use correct types for bitwise copy. 2006-08-28 Jason Merrill PR c++/26670 * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the fields can't be packed. PR c++/26577 * cvt.c (convert_to_void): Don't automatically load from volatiles of TREE_ADDRESSABLE type. 2006-08-28 Volker Reichelt PR c++/28860 * cp-tree.h (maybe_process_partial_specialization): Return tree instead of void. * parser.c (cp_parser_class_head): Use return value of maybe_process_partial_specialization. * pt.c (maybe_process_partial_specialization): Return error_mark_node for broken specializations, TYPE otherwise. Check for template template parameters. 2006-08-27 Mark Mitchell PR c++/28058 * pt.c (register_specialization): Return error_mark_node for specialization-after-instantiation. * decl2.c (mark_used): Mark the main function used when one of its clones is used. 2006-08-27 Lee Millward PR c++/26573 * class.c (check_field_decls): Don't issue error about local classes containing static data members. 2006-08-26 Joseph S. Myers PR c++/24009 * parser.c (struct cp_token): Add input_file_stack_index. (eof_token): Update. (cp_lexer_get_preprocessor_token): Save input_file_stack_tick. (cp_lexer_set_source_position_from_token): Restore input file stack. 2006-08-26 Lee Millward PR c++/28736 PR c++/28737 PR c++/28738 * pt.c (process_template_parm): Store invalid template parameters as a TREE_LIST with a TREE_VALUE of error_mark_node. (push_inline_template_parms_recursive): Check for template parameters having a TREE_VALUE of error_mark_node rather than check the parameter itself. (mangle_class_name_for_template): Likewise. (comp_template_parms): When comparing the individual template parameters, return 1 if either is error_mark_node. (current_template_args): Robustify. (redeclare_class_template): Likewise. 2006-08-26 Mark Mitchell PR c++/28588 * class.c (resolve_address_of_overloaded_function): Add access_path parameter. Perform access checks. (instantiate_type): Adjust call to resolve_address_of_overloaded_function. Remove unnecessary code. * tree.c (is_overloaded_fn): Document. Return 2 when there are acutally multiple functions. (really_overloaded_fn): Use is_overloaded_fn. * mangle.c (write_expression): Handle BASELINKs. * cp-tree.h (really_overloaded_fn): Return bool. (baselink_for_fns): Declare. * search.c (lookup_member): Check access for single static functions here. * pt.c (convert_nontype_argument_function): Handle BASELINKs. (tsubst_copy_and_build): Generate BASELINKs for template-ids. * semantics.c (finish_call_expr): Use baselink_for_fns. (baselink_for_fns): New function. (finish_id_expression): Use it. * parser.c (cp_parser_template_argument): Don't strip BASELINKs. PR c++/28595 * pt.c (tsubst): Issue errors about attempts to create VLAs at template-instantiation time. 2006-08-25 Volker Reichelt PR c++/28853 * typeck2.c (cxx_incomplete_type_diagnostic): Handle template template parameters. Improve error message for template type parameters. PR c++/28852 * cp-tree.h (grok_op_properties): Return bool instead of void. * decl.c (grokfndecl): Discard invalid operator declarations. (copy_fn_p): Revert change for PR 27547. (grok_op_properties): Return error status (true on success). * pt.c (tsubst_decl): Discard invalid operator declarations. 2006-08-25 Mark Mitchell PR c++/28056 * decl.c (grokdeclarator): Disallow declarations with qualified names in local scopes. 2006-08-25 Nathan Sidwell PR c++/27787 * decl.c (make_typename_type): Only try and resolve it when context is not dependent. Refactor. * decl2.c (check_classfn): Push to class scope before looking for the function. 2006-08-24 Danny Smith PR driver/28528 * g++spec.c (lang_specific_driver): Always check if we need to swallow a space-separated arg to '-x'. * lang-specs.h: Don't create ouput files for '-xc++-header' if -fsyntax-only. 2006-08-23 Jason Merrill PR c++/27714 * pt.c (push_template_decl_real): A friend template with class scope isn't primary. 2006-08-23 Benjamin Smedberg PR c++/28687 * rtti.c (build_dynamic_cast, build_dynamic_cast_1): Move -fno-rtti check to be more specific. 2006-08-22 Jason Merrill PR c++/23372 * call.c (build_over_call): Don't make a copy here if build_call will make one too. 2006-08-22 Andrew Pinski PR C++/28450 * cp/init.c (build_zero_init): Handle VECTOR_TYPE and COMPLEX_TYPEs. 2006-08-22 Simon Martin PR c++/28420 * parser.c (cp_parser_postfix_expression): Make sure that the saved value for parser->type_definition_forbidden_message is restored before returning to avoid an invalid free(). 2006-08-22 Jason Merrill PR c++/28659 * typeck.c (merge_types): If either of the types have the right attributes, return that one. * tree.c (cp_build_type_attribute_variant): Make sure we aren't doing this to class types. * typeck.c (original_type): Deal with type quals properly. 2006-08-21 Jason Merrill PR c++/27115 * semantics.c (finish_stmt_expr_expr): Don't try to voidify here, just leave the expression as it is. (finish_stmt_expr): If the statement-expression has class type, wrap it in a TARGET_EXPR. * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with CLEANUP_POINT_EXPR. * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type. 2006-08-21 Lee Millward PR c++/26269 * decl.c (duplicate_decls): Return early if either newdecl or olddecl is error_mark_node. PR c++/28505 * decl.c (grokdeclarator): Return early after issuing diagnostic about an incomplete type. PR c++/28741 * tree.c (decl_anon_ns_mem_p): Robustify. * decl2.c (determine_visibility): Likewise. 2006-08-20 Mark Mitchell PR c++/28341 * tree.c (cast_valid_in_integral_constant_expression_p): New function. * cp-tree.h (tsubst_copy_and_build): Adjust prototype. * pt.c (tsubst_expr): Add integral_constant_expression_p parameter. (fold_non_dependent_expr): Adjust callers of tsubst_{expr,copy_and_build}. (tsubst_friend_function): Likewise. (tsubst_template_arg): Likewise. (tsubst_default_argument): Likewise. (tsubst_decl): Likewise. (tsubst): Likewise. (tsubst_omp_clasuses): Likewise. (regenerate_decl_fromp_template): Likewise. (instantiate_decl): Likewise. (tsubst_initializer_list): Likewise. (tsubst_enum): Likewise. (tsubst_expr): Use RECUR throughout. (tsubst_copy_and_build): Change definition of RECUR. Do not allow invalid casts in integral constant expressions. * parser.c (cp_parser_postfix_expression): Use cast_valid_in_integral_constant_expression_p. (cp_parser_cast_expression): Likewise. (cp_parser_functional_cast): Likewise. PR c++/28346 * pt.c (tsubst_qualified_id): Do not strip references from OFFSET_REFs. 2006-08-17 Volker Reichelt PR c++/28606 * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR. Fix formatting. (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition for valid type-names. (cp_parser_unqualified_id): Fix error handling for destructors. PR c++/28710 * decl.c (xref_tag): Improve error message. Return early on error. PR c++/28711 * pt.c (tsubst_copy_and_build) : Robustify. 2006-08-17 Paolo Bonzini PR c++/28573 * semantics.c (finish_offsetof): Add new argument to fold_offsetof. 2006-08-16 Andrew Pinski PR c++/28302 * typeck.c (build_unary_op ): Don't call perform_integral_promotions for non integral type. 2006-08-16 Jason Merrill PR c++/28385 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template if arg is a function. 2006-08-16 Volker Reichelt PR c++/28593 * init.c (build_new): Return early on invalid placement. 2006-08-15 Lee Millward PR c++/28594 * pt.c (process_template_parm): Robustify. 2006-08-14 Steve Ellcey PR c++/28288 PR c++/14556 * operators.def: Remove , ?= operators. * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ. (cp_parser_warn_min_max): Remove. 2006-08-11 Jason Merrill PR c++/28559 * parser.c (cp_parser_elaborated_type_specifier): Also ignore attributes applied to a TYPENAME_TYPE. 2006-08-09 Lee Millward PR c++/28637 * pt.c (coerce_template_parms): Copy across the invalid template arguments to the new template inner arguments. (retrieve_specialization): Robustify. PR c++/28638 * pt.c (coerce_template_template_parms): Robustify. PR c++/28639 * error.c (dump_template_parms): Robustify. PR c++/28640 * pt.c (redeclare_class_template): Robustify. PR c++/28641 * pt.c (type_unification_real): Robustify. 2006-08-03 Lee Millward PR c++/28347 * decl.c (start_decl): Return error_mark_node if a diagnostic was issed for an invalid typedef initialization. 2006-08-03 Volker Reichelt PR c++/27508 * parser.c (cp_parser_unqualified_id): Check for invalid scopes when parsing destructor names. PR c++/28274 * decl.c (duplicate_decls): Call check_default_args here. (start_preparsed_function): Do not call check_default_args. * name-lookup.c (pushdecl_maybe_friend): Only call check_default_args if duplicate_decls got bypassed. 2006-08-02 Richard Guenther PR c++/28479 Revert 2006-07-05 Richard Guenther Andrew Pinski PR c++/27084 * cp-objcp-common.c (cxx_types_compatible_p): Ignore top level qualifiers for pointer type comparisons. 2006-08-02 Mark Mitchell PR c++/28557 * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE. 2006-07-31 Mark Mitchell PR c++/28523 * tree.c (stabilize_expr): Tweak documentation. Add assertion. (stabilize_call): Tweak documentation. (stabilize_init): Only call stabilize_call for calls. 2006-08-01 Steve Ellcey PR c++/28432 * decl2.c (check_classfn): Remove early return. * search.c (lookup_member): Return NULL with bad type. 2006-08-01 Steve Ellcey PR c++/28256 * decl.c (check_initializer): Check for 1 initializer on scalar types. 2006-08-01 Daniel Jacobowitz PR debug/23336 * pt.c (tsubst_copy_and_build): Mark used enum types. * semantics.c (finish_id_expression): Likewise. 2006-07-31 Volker Reichelt PR c++/6634 * decl.c (grokdeclarator): Check whether "long" or "short" was specified for non-integral types. 2006-07-28 Volker Reichelt * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies. 2006-07-28 Lee Millward PR c++/27668 PR c++/27962 * pt.c (process_template_parm) Store invalid template parameters as error_mark_node in the paramater list. (push_inline_template_parms_recursive): Handle invalid template parameters. (comp_template_parms): Likewise. (check_default_tmpl_arg): Likewise. (coerce_template_template_parms): Likewise. (mangle_class_name_for_template): Likewise. (tsubst_template_parms): Likewise. * error.c (dump_template_argument_list): Likewise. 2006-07-28 Kazu Hirata * cp-tree.h: Fix a comment typo. 2006-07-24 Volker Reichelt PR c++/27572 * decl.c (grokdeclarator): Return error_mark_node after invalid typedef. 2006-07-23 Daniel Jacobowitz PR c++/28460 * decl.c (grokvardecl): Use FROB_CONTEXT. * pt.c (register_specialization): Likewise. 2006-07-23 Mark Mitchell PR c++/28025 * cp-tree.h (LOOKUP_HIDDEN): New macro. Reformat comments. * name-lookup.c (unqualified_namespace_lookup): There is no way to have a hidden name in non-namespace scopes. * pt.c (tsubst_friend_class): Look for hidden names. * decl.c (lookup_and_check_tag): Fix typo in comment. * semantics.c (finish_compound_literal): Fix typo in comment. 2006-07-21 Jason Merrill * decl2.c (determine_visibility): Don't propagate visibility from type to decl. (constrain_class_visibility): Don't warn in system headers. Don't warn about pointer fields. 2006-07-20 Mike Stump * decl2.c (determine_visibility_from_class): Don't use hidden visibility for explicit instantiations. 2006-07-21 Volker Reichelt PR c++/28250 * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to valid decls. Cleanup. PR c++/28363 * semantics.c (check_template_template_default_arg): Simplify error handling. 2006-07-20 Jason Merrill PR c++/28407 * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope const variables with implicit internal linkage. * tree.c (decl_linkage): Only return lk_external if it's set. PR c++/28409 * decl2.c (constrain_visibility): Ignore the anonymous namespace for extern "C" decls. (VISIBILITY_STATIC): Rename to VISIBILITY_ANON. * decl2.c (constrain_visibility): Remove specified and reason parameters. Don't touch decls that already have explicit visibility. (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from template. (determine_visibility_from_class): Reverse sense of DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules. (constrain_class_visibility): Only complain about member visibility if the member type is another class. Don't change visibility of the current class. 2006-07-19 Mark Mitchell PR c++/28338 * decl.c (layout_var_decl): Don't call push_local_name here. (initialize_artificial_var): Assert artificiality. (cp_finish_decl): Call push_local_name here. 2006-07-18 Mark Mitchell PR c++/28337 * typeck.c (build_binary_op): Short-circuit pointer arithmetic in templates. 2006-07-18 Mark Mitchell PR c++/28048 * semantics.c (check_accessibility_of_qualified_id): Robustify. PR c++/28235 * pt.c (tsubst_decl): Handling substitutions into a static data member from within the scope of the tempalte itself. 2006-07-18 Lee Millward PR c++/28258 * method.c (locate_copy): Check for non_reference returning error_mark_node. PR c++/28260 * decl.c (duplicate_decls): Return error_mark_node on ambiguous declaration. 2006-07-18 Steve Ellcey PR c++/27495 * search.c (adjust_result_of_qualified_name_lookup): Change assert to part of if statement. 2006-07-17 Steve Ellcey PR c++/28291 * decl.c (reshape_init_class): Return error_mark_node on error. 2006-07-17 Steve Ellcey PR c++/28304 * decl2.c (check_classfn): Return NULL_TREE on error. 2006-07-17 Volker Reichelt PR c++/28250 * name-lookup.c (pushdecl_maybe_friend): Return early on error_mark_node. * except.c (expand_start_catch_block): Use error_mark_node instead of NULL_TREE for invalid decls. * parser.c (cp_parser_exception_declaration): Return error_mark_node on invalid catch parameter. Simplify. 2006-07-16 Jakub Jelinek PR c++/28370 * decl2.c (note_vague_linkage_var): Removed. (finish_static_data_member_decl): Add decl to pending_statics vector directly. Do it even for non-public decls. 2006-07-15 Lee Millward PR c++/28292 * decl2.c (acceptable_java_type): Robustify. Use proper Boolean return type instead of return 1. (check_java_method): Don't issue error about type not being an acceptable Java parameter if it's error_mark_node. PR c++/28269 * parser.c (cp_parser_elaborated_type_specifier): Return early if an invalid type was detected. 2006-07-15 Volker Reichelt PR c++/28249 * parser.c (cp_parser_check_decl_spec): New function. (cp_parser_decl_specifier_seq): Factor out check for repeated decl-specifiers into cp_parser_check_decl_spec. Use it. (cp_parser_type_specifier_seq): Use it. PR c++/28294 * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs only. PR c++/28387 * decl2.c (cplus_decl_attributes): Check for invalid decls. 2006-07-14 Volker Reichelt PR c++/28343 * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node. * decl2.c (grokfield): Likewise. 2006-07-12 Geoffrey Keating * decl2.c (determine_visibility): Don't change visibility of function locals because of -fvisibility-inlines-hidden. 2006-07-12 Jason Merrill PR c++/28217 * semantics.c (note_decl_for_pch): Don't premangle templates. 2006-07-12 Martin Michlmayr * typeck.c (string_conv_p): Remove spurious quotation mark in warning. 2006-07-07 Lee Millward Andrew Pinski PR c++/27820 * decl.c (define_label): Return error_mark_node on error. * semantics.c (finish_label_stmt): Don't call add_stmt for invalid labels. 2006-07-06 Jason Merrill PR c++/28279 * decl2.c (finish_static_data_member_decl): Don't assert TREE_PUBLIC. 2006-07-05 Jason Merrill PR c++/13983 PR c++/17519 * class.c (check_field_decls): Check TYPE_PACKED after stripping array types. (finish_struct_bits): Don't copy TYPE_SIZE here. PR c++/18681 * friend.c (is_friend): Fix DR 45 implementation. 2006-07-05 Richard Guenther Andrew Pinski PR c++/27084 * cp-objcp-common.c (cxx_types_compatible_p): Ignore top level qualifiers for pointer type comparisons. 2006-07-01 Jason Merrill PR c++/28215 * method.c (make_thunk): Unset DECL_USE_TEMPLATE and DECL_TEMPLATE_INFO. 2006-06-30 Jason Merrill PR c++/26577 * call.c (build_new_method_call): Force evaluation of the instance pointer, not the object. 2006-06-30 Kazu Hirata * decl2.c: Fix a comment typo. 2006-06-30 Jason Merrill PR c++/18698 * decl2.c (grokfield): Only try to treat the decl as an access declaration if the scope is a class. 2006-06-29 Jason Merrill PR c++/26905 PR c++/26612 PR c++/27000 PR c++/26984 PR c++/19134 * decl2.c (determine_visibility): Overhaul. (determine_visibility_from_class): Likewise. (min_vis_r, type_visibility, constrain_visibility): New fns. (constrain_visibility_for_template): Likewise. (constrain_class_visibility): Likewise. * decl.c (cp_finish_decl): Call determine_visibility for function decls, too. * name-lookup.c (pushtag): Call determine_visibility. * decl.c (duplicate_decls): Don't copy visibility from template to specialization. * pt.c (check_explicit_specialization): Likewise. (lookup_template_class, tsubst_decl): Call determine_visibility. * class.c (finish_struct_1): Call constrain_class_visibility. PR c++/26905 PR c++/21675 PR c++/17470 * parser.c (cp_parser_explicit_instantiation): Pass the attributes to grokdeclarator. (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'. (cp_parser_enum_specifier): Likewise. (cp_parser_elaborated_type_specifier): Apply attributes if this declares only the class. (cp_parser_class_specifier): Apply leading attributes immediately. * semantics.c (begin_class_definition): Add attributes parameter, apply them to the type. PR c++/21581 PR c++/25915 * tree.c (decl_anon_ns_mem_p): New function. * cp-tree.h: Declare it. * decl2.c (determine_visibility): Make anonymous namespace members static. (min_vis_r, constrain_visibility): Likewise. * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on pseudo-types. * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on global_namespace. * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC on anonymous namespaces. 2006-06-28 Jason Merrill PR c++/27424 * pt.c (convert_template_argument): Pass all template arguments on to coerce_template_template_parms. 2006-06-25 Lee Millward Mark Mitchell PR c++/28054 * decl2.c (grokbitfied): Remove check for grokdeclarator returning NULL_TREE, instead check for error_mark_node to indicate failure. * decl.c (grokdeclarator): Adjust block comment. 2006-06-25 Lee Millward PR c++/28051 * mangle.c (mangle_conv_op_name_for_type): Check for invalid types. * name-lookup.c (push_class_level_binding): Robustify. (do_class_using_decl): Return early if name is error_mark_node. 2006-06-23 Steve Ellcey PR c++/28114 * name-lookup.c (pushtag): Return if we have error_mark_node. 2006-06-23 Steve Ellcey PR c++/27019 * typeck2.c (process_init_constructor_array): Set ce->value on errors. 2006-06-23 Volker Reichelt PR c++/28112 * parser.c (cp_parser_attribute_list): Skip attributes with invalid arguments. Fix comment. PR c++/11468 * init.c (build_new_1): Handle error_mark_nodes returned by build_java_class_ref. (build_java_class_ref): Do not abort compilation, but return error_mark_node. Improve error message. Fix indentation. 2006-06-23 Danny Smith PR target/27789 * decl.c (start_decl): Check that dllimports are not initialized. 2006-06-22 Lee Millward PR c++/27805 * typeck2.c (build_m_component_ref): Use error_operand_p. PR c++/27821 * decl.c (grokdeclarator): Return error_mark_node on invalid uses of the scope resolution operator. 2006-06-22 Volker Reichelt PR c++/28111 * pt.c (determine_specialization): Check for invalid decls. PR c++/28110 * pt.c (unify) : Check for invalid parameters. PR c++/28109 * rtti.c (get_tinfo_decl_dynamic): Robustify. 2006-06-20 Volker Reichelt PR c++/28052 * init.c (push_base_cleanups): Skip members with invalid types. * typeck.c (build_class_member_access_expr): Robustify. 2006-06-19 Mark Mitchell * pt.c (instantiate_template): Fix typo in comment. 2006-06-19 Richard Guenther * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near power-of-two token vector size. 2006-06-16 Mark Mitchell PR c++/28016 * decl.c (cp_finsh_decl): Do not emit uninstantiated static data members. PR c++/27979 * call.c (standard_conversion): Strip cv-qualifiers from bitfield types. PR c++/27884 * decl.c (have_extern_spec): Remove. (start_decl): Do not check have_extern_spec. (start_function): Likewise. * cp-tree.h (have_extern_spec): Remove. * parser.c (cp_parser_linkage_specification): Don't set have_extern_spec. (cp_parser_init_declarator): Likewise. (cp_parser_parameter_declaration): Do not treat parameters as within the scope of an unbraced linkage specification. 2006-06-15 Mark Mitchell PR c++/27689 * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New macro. * pt.c (unify): Use it. PR c++/27666 * call.c (build_conditional_expr): Robustify. PR c++/27640 * pt.c (instantiate_template): Set processing_template_decl to zero while performing substitutions. 2006-06-14 Mark Mitchell PR c++/27665 * parser.c (cp_parser_unqualified_id): Use constructor_name_p to identify destructors. (cp_parser_nested_name_specifier_opt): Remove invalid optimization. (cp_parser_template_id): Refine heuristic for determining whether we are entering a scope. PR c++/27648 * parser.c (cp_parser_declarator): Robustify. PR c++/26559 * pt.c (tsubst_expr): Use finish_omp_atomic. (value_dependent_expression_p): All CALL_EXPRs are dependent. * semantics.c (finish_omp_atomic): Rework to use standard paradigms for handling non-dependent expressions. 2006-06-14 Gabriel Dos Reis * typeck.c (build_modify_expr): Tidy diagnostic message. 2006-06-14 Mark Mitchell PR c++/28018 * typeck.c (build_modify_expr): Disallow array assignment. 2006-06-14 Gabriel Dos Reis * cp-tree.def: Fix typo. 2006-06-13 Mark Mitchell PR c++/27227 * decl.c (decls_match): Allow an extern "C" variable declarations from different namespaces to match. (duplicate_decls): Disallow redeclaring a variable with a different linkage specification. 2006-06-13 Jakub Jelinek PR middle-end/27793 * cp-tree.h (cxx_int_tree_map): New struct. (struct language_function): Add extern_decl_map field. * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping to cp_function_chain->extern_decl_map hash table instead of copying over DECL_UID. * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New functions. (cp_genericize_r): Remap DECL_EXTERN local decls using cp_function_chain->extern_decl_map hash table. * decl.c (finish_function): Clear extern_decl_map. 2006-06-12 Volker Reichelt PR c++/27601 * semantics.c (finish_offsetof): Handle pseudo-destructors. PR c++/27933 * name-lookup.c (lookup_qualified_name): Always return error_mark_node if lookup fails. PR c++/27951 * decl2.c (finish_anon_union): Return early if build_anon_union_vars fails. 2006-06-12 Roger Sayle PR c++/21210 * typeck2.c (build_functional_cast): Use cp_convert to construct non-aggregate initializers instead of the user-level build_c_cast. 2006-06-07 Volker Reichelt PR c++/27601 * cp-tree.h (finish_offsetof): Add prototype. * semantics.c (finish_offsetof): New function. * parser.c (cp_parser_builtin_offsetof): Call it instead of fold_offsetof. * pt.c (tsubst_copy_and_build): Likewise. 2006-06-06 Mark Mitchell PR c++/27177 * call.c (standard_conversion): Require that the derived type be complete when performing a derived-to-base conversion. 2006-06-04 Mark Mitchell PR c++/27819 * decl.c (cp_finish_decl): Process initializers for static data members with non-dependent initializers, even in templates. PR c++/27722 * decl.c (maybe_deduce_size_from_array_init): If the declaration is erroneous, give it an erroneous type. (layout_var_decl): If the type is erroneous, give up. (check_initializer): Likewise. PR c++/27807 * cp-tree.h (TYPE_OBJ_P): New macro. (TYPE_PTROB_P): Use it. (TYPE_REF_OBJ_P): Likewise. * semantics.c (finish_compound_literal): Do not permit compound literals of non-object types. PR c++/27806 * typeck.c (original_type): Robustify. 2006-06-05 Volker Reichelt PR c++/27804 * init.c (constant_value_1): Return decl instead of error_mark_node for invalid initializers. 2006-06-01 Andrew Pinski PR c++/27592 * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion on operand of the COND_EXPR for the null pointer check. 2006-06-01 Andrew Pinski PR c++/26740 * typeck.c (build_unary_op): Mark the function as being used. 2006-06-01 Alexandre Oliva PR c++/26660 * parser.c (cp_parser_initial_pragma): Read one more token for caller after reading PCH file in. 2006-05-31 Mark Mitchell PR c++/27801 * call.c (perform_implicit_conversion): Do not actually perform conversions in templates. PR c++/26496 * call.c (resolve_args): Check for invalid uses of bound non-static member functions. * init.c (build_offset_ref): Return error_mark_node for errors. PR c++/27385 * decl.c (reshape_init): Robustify. (reshape_init_array_1): Likewise. 2006-05-30 Mark Mitchell PR c++/27808 * parser.c (cp_parser_decl_specifier_seq): Issue errors about "friend" specifiers that do not appear in class scopes. PR c++/27803 * class.c (check_bitfield_decl): Ensure that all bitfields have integral type. 2006-05-29 Kazu Hirata * pt.c (convert_nontype_argument): Fix a typo in an error message. 2006-05-28 Kazu Hirata * decl.c, decl2.c, parser.c: Fix comment typos. Follow spelling conventions. 2006-05-24 Mark Mitchell PR c++/20103 * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to error_mark_node to indicate an initialization is OK. (start_decl): Likewise. Adjust call to start_decl_1. (start_decl_1): Add initialized parameter. Simplify. * except.c (initialize_handler_parm): Adjust call to setart_decl_1. (expand_start_catch_block): Let cp_finish_decl initialize catch parameters. * cp-tree.h (start_decl_1): Adjust prototype. * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node. (instantiate_decl): Let cp_finish_decl handle initialization. * semantics.c (finish_compound_literal): Create a temporary variable for the literal. * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special cases. * decl2.c (finish_static_data_member_decl): Don't set DECL_INITIAL. (grokfield): Do not try to initialize functions. 2006-05-23 Mark Mitchell PR c++/20173 * pt.c (determine_specialization): Disallow partial specializations of templates. 2006-05-22 Volker Reichelt PR c++/27716 * typeck.c (build_modify_expr): Test arguments for error_operand_p. * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE. 2006-05-21 Mark Mitchell PR c++/27210 * cp-tree.h (cp_save_expr): New function. * init.c (build_new): Correct logic for zero-element array warning. Use cp_save_expr. * tree.c (cp_save_expr): New function. 2006-05-21 Volker Reichelt PR c++/27398 * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE or void_type_node. 2006-05-19 Mike Stump * typeck.c (default_conversion): Remove static. 2006-05-19 Mark Mitchell PR c++/26433 * cp-tree.h (begin_function_try_block): Change prototype. (finish_function_handler_sequence): Likewise. * parser.c (cp_parser_function_try_block): Adjust calls. * pt.c (tsubst_expr): Adjust calls. * semantics.c (begin_function_try_block): Create an artificial outer scope. (finish_function_handler_sequence): Close it. 2006-05-18 Mark Mitchell PR c++/27471 PR c++/27506 * typeck.c (decay_conversion): Convert bitfields to their declared types here. Improve documentation. Avoid use of cp_convert. (default_conversion): Make it static. Perform integral promotions before lvalue-to-rvalue, function-to-pointer, and array-to-pointer conversions. * init.c (build_init): Remove. (expand_default_init): Do not call rvalue. * call.c (null_ptr_cst_p): Robustify. (build_conditional_expr): Tidy. * except.c (build_throw): Do not perform lvalue-to-rvalue conversion on operand before initializing temporary. * tree.c (convert.h): Include it. (convert_bitfield_to_declared_type): Use convert_to_integer, not cp_convert. (rvalue): Don't convert bitfields to their declared type here. * cp-tree.h (build_init): Remove. (default_conversion): Likewise. * typeck2.c (build_m_component_ref): Do not perform lvalue-to-rvalue, function-to-pointer, or array-to-pointer conversions here. Correct error message. 2006-05-17 Mark Mitchell PR c++/26122 * decl2.c (check_member_template): Remove checks for virtual functions. * parser.c (cp_parser_function_specifier_opt): Complain about virtual templates. (cp_parser_pure_specifier): Likewise. PR c++/26068 * parser.c (cp_parser_set_storage_class): Check for invalid uses of storage classes on unbraced linkage specifications. (cp_parser_decl_specifier_seq): Pass keywords, not storage classes, to cp_parser_set_storage_class. 2006-05-17 Jakub Jelinek PR c++/27491 * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR on CONSTRUCTORs. PR middle-end/27415 * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED on combined parallel workshare constructs. * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag. 2006-05-16 H.J. Lu PR driver/26885 * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS). 2006-05-15 Mark Mitchell PR c++/27339 * cp-tree.h (perform_access_checks): New function. * semantics.c (perform_access_checks): New function. (perform_deferred_access_checks): Use it. * parser.c (cp_parser_simple_declaration): Adjust call to cp_parser_init_declarator. (cp_parser_type_parameter): Do not defer checks in default arguments. (cp_parser_explicit_specialization): Adjust call to cp_parser_single_declaration. (cp_parser_init_declarator): Perform template-parameter access checks. (cp_parser_parameter_declaration): Do not defer checks for template parameter default arguments. (cp_parser_template_declaration_after_export): Gather access checks for template parameters, and pass them to cp_parser_single_declaration. (cp_parser_template_parameter_access_checks): New function. (cp_parser_single_declaration): Add checks parameter. PR c++/27505 * call.c (convert_like_real): Convert bitfields to their declared types when forming an rvalue. * tree.c (convert_bitfield_to_declared_type): New function. (rvalue): Use it. * cp-tree.h (convert_bitfield_to_declare_type): Declare it. 2006-05-15 Volker Reichelt PR c++/27582 * pt.c (any_dependent_template_arguments_p): Return early on invalid argument list. PR c++/27581 * search.c (adjust_result_of_qualified_name_lookup): Skip on invalid context_class. PR c++/27315 * pt.c (do_decl_instantiation): Return early on invalid decl. PR c++/27559 * pt.c (push_template_decl_real): Return error_mark_node instead of broken decl. PR c++/27496 * pt.c (tsubst_friend_class): Return early on invalid friend declarations. 2006-05-14 H.J. Lu * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H). (cp/decl2.o): Likewise. (cp/typeck.o): Likewise. (cp/cvt.o): Likewise. (cp/parser.o): Likewise. (cp/call.o): Replace target.h with $(TARGET_H). 2006-05-14 Alexandre Oliva * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of COMPONENT_REF alone. 2006-05-11 Volker Reichelt PR c++/27547 * decl.c (copy_fn_p): Return early on non-member functions. 2006-05-08 Volker Reichelt PR c++/27447 * decl2.c (build_memfn_type): Skip invalid functions and class types. 2006-05-06 Volker Reichelt PR c++/27427 * pt.c (convert_nontype_argument): Return early on invalid arguments. * pt.c (process_template_parm): Remove superfluous temporary. PR c++/27430 * pt.c (process_template_parm): Handle erroneous non-type parameters. PR c++/27423 * typeck.c (convert_for_initialization): Skip erroneous types. PR c++/27422 * typeck.c (convert_arguments): Return early on args with invalid types. 2006-05-03 Aldy Hernandez PR/21391 * typeck.c (build_static_cast_1): Save casted types in used types hash table. (build_reinterpret_cast_1): Same. * rtti.c (build_dynamic_cast_1): Same. 2006-05-04 Jakub Jelinek PR c++/27359 * parser.c (cp_parser_omp_for_loop): Only call cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not called. 2006-05-02 Mark Mitchell PR c++/27102 * decl.c (grokdeclarator): Robustify checks for defining members of incomplete types. PR c++/27309 * class.c (add_method): Call grok_special_member_properties. * decl.c (grokdeclarator): Don't call it here. (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or assignment operator. Set TYPE_HAS_CONSTURCTOR if DECL is a constructor. (start_method): Don't call grok_special_member_properties. * method.c (implicitly_declare_fn): Likewise. * pt.c (instantiate_class_template): Likewise. * decl2.c (grokfield): Likewise. 2006-05-02 Jakub Jelinek PR middle-end/27337 * cp-gimplify.c (cxx_omp_privatize_by_reference): New function. * cp-tree.h (cxx_omp_privatize_by_reference): New prototype. * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define. 2006-04-30 Mark Mitchell PR c++/27094 * pt.c (tsubst_default_argument): Increment function_depth around call to tsubst_expr. * parser.c (cp_parser_parameter_declaration): Likewise. * decl2.c (mark_used): Tidy. 2006-04-30 Volker Reichelt PR c++/27278 * decl.c (grok_op_properties): Skip operators with invalid args when checking for class-type or enum-type args. 2006-04-29 Volker Reichelt PR c++/27279 * decl.c (copy_fn_p): Skip functions with invalid first arg. 2006-04-27 Mark Mitchell PR c++/27292 * tree.c (rvalue): Convert bitfields to their declared types. PR c++/27102 * typeck2.c (cxx_incomplete_type_diagnostic): Handle TYPENAME_TYPE. 2006-04-24 Mark Mitchell PR c++/27292 * typeck.c (decay_conversion): Don't adjust bitfield types. (perform_integral_promotions): Treat bitfield enums as enums, not as short integer types. * tree.c (rvalue): Convert bitfields to their correct types. 2006-04-24 Volker Reichelt PR c++/19963 * class.c (layout_class_type): Skip fields with invalid types. 2006-04-23 Mark Mitchell PR c++/26912 * cp-tree.h (build_this_parm): Declare. (grok_method_quals): Remove. (build_memfn_type): Declare. (build_artificial_parm): Declare. (do_friend): Remove quals parameter. * decl.c (build_this_parm): New function. (grokfndecl): Use it. Do not pass quals to grokclassfn. (grokdeclarator): Rename quals to memfn_quals. Avoid allocating unnecessary TYPE_DECLs. Correct qualification of member function types. Tidy. * method.c (implicitly_declare_fn): Use build_this_parm. * friend.c (do_friend): Remove quals parameter. * decl2.c (grok_method_quals): Remove. (build_memfn_type): New function. (build_artificial_parm): Give it external linkage. (grokclassfn): Remove quals parameter. Do not build "this" PARM_DECL here. PR c++/26534 * cp-tree.h (is_bitfield_expr_with_lowered_type): New function. * typeck.c (is_bitfield_expr_with_lowered_type): New function. (decay_conversion): Convert bitfield expressions to the correct type. (build_modify_expr): Remove spurious conversions. * class.c (layout_class_type): Modify the type of bitfields to indicate a limited range. * call.c (standard_conversion): Adjust the type of bitfield expressions used in an rvalue context. (build_conditional_expr): Likewise. 2006-04-22 Kazu Hirata * decl.c: Fix comment typos. 2006-04-21 Eric Christopher * decl.c: Fix typo in function name. 2006-04-19 Volker Reichelt PR c++/26558 * parser.c (cp_parser_class_name): Check for invalid typenames. Rearrange code. PR c++/26739 * pt.c (tsubst_friend_function): Return early if pushdecl_namespace_level fails. PR c++/26036 * typeck.c (convert_arguments): Return error_mark_node instead of error_mark_list. * cp-tree.h (error_mark_list): Remove declaration. * decl.c (error_mark_list): Remove definition. (cxx_init_decl_processing): Do not initialize error_mark_list. PR c++/10385 * rtti.c (build_dynamic_cast_1): Check for invalid conversions before calling convert_to_reference. * cvt.c (convert_to_reference): Assert that reftype is a REFERENCE_TYPE. 2006-04-19 Mark Mitchell PR c++/27102 * class.c (currently_open_class): Tidy. * decl.c (grokdeclarator): If we encounter an erroneous declarator, assume that we have already issued an error message and return. Return error_mark_node instead of NULL_TREE in more places. Issue errors about function definitions that do not have a function declarator. Check for complete types for all function definitions. * cp-tree.h (cp_error_declarator): Remove. (currently_open_class): Change return type. * parser.c (cp_parser_id_expression): Add optional_p parameter. (cp_parser_parse_diagnose_invalid_type_name): Adjust calls. (cp_parser_id_expression): Likewise. (cp_parser_unqualified_id): If the name is optional, return NULL_TREE. (cp_parser_postfix_dot_deref_expression): Adjust calls. (cp_parser_type_parameter): Likewise. (cp_parser_unqualified_id): Likewise. (cp_parser_direct_declarator): Likewise. (cp_parser_declarator_id): Add optional_p parameter. (cp_parser_function_definition_from_specifiers_and_declarator): Assume that start_function indicates failure only if it has issued an error. (cp_parser_omp_var_list_no_open): Adjust calls. 2006-04-17 Janis Johnson PR c++/26114, c++/26115 * typeck.c (cxx_mark_addressable): Restore check for extra_warnings. * class.c (check_field_decls): Ditto. 2006-04-17 Volker Reichelt * init.c (build_offset_ref): Remove superfluous temporary. 2006-04-16 Mark Mitchell PR c++/26365 * typeck.c (finish_class_member_access_expr): Robustify 2006-04-15 Kazu Hirata * Make-lang.in (cp/pt.o): Depend on vecprim.h. * pt.c: Include vecprim.h. (inline_parm_levels): Change the type to VEC(int,heap) *. (inline_parm_levels_used): Remove. (maybe_begin_member_template_processing, maybe_end_member_template_processing): Use VEC instead of VARRAY. * cp/call.c: Fix comment typos. 2006-04-12 Mark Mitchell * parser.c (cp_parser_init_declarator): Initialize local variables aggressively. 2006-04-12 Roger Sayle * parser.c (cp_parser_init_declarator): Initialise is_parenthesized_init to false to avoid compiler warning. 2006-04-11 Mark Mitchell * cp-tree.h (build_operator_new_call): Adjust prototype. (build_new_method_call): Likewise. (build_op_delete_call): Likewise. * init.c (build_raw_new_expr): New function. (build_new_1): Pass information as parameters, rather than bundling it into a NEW_EXPR. (build_new): Adjust accordingly. (build_vec_delete_1): Adjust for changes to build_op_delete_call. (build_delete): Likewise. * decl.c (finish_destructor_body): Likewise. * call.c (build_operator_new_call): Return the allocation function used. (build_op_delete_call): Take allocation function as parameter. (build_special_member_call): Adjust call to build_new_method_call. (build_new_method_call): Return function called. * pt.c (tsubst_copy_and_build): Adjust call to build_new_method_call. * semantics.c (finish_call_expr): Likewise. * parser.c (cp_parser_postfix_expression): Likewise. * typeck2.c (cxx_incomplete_type_diagnostic): Refer to "incomplete", not "undefined", types. PR c++/26295 * decl.c (grokdeclarator): Remove namespace-handling code for pointers-to-members. * parser.c (cp_parser_ptr_operator): Check for qualified names using namespaces. PR c++/26122 * parser.c (cp_parser_init_declarator): Adjust logic for deciding whether or not to look for a pure-specifier. (cp_parser_member_declaration): Likewise. 2006-04-08 Kazu Hirata * decl2.c, pt.c, semantics.c: Fix comment typos. 2006-04-06 Roger Sayle * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check. 2006-04-05 Jason Merrill * name-lookup.c (push_namespace_with_attribs): Temporarily disable default hidden visibility for anonymous namespace. 2006-03-29 Roger Sayle PR c++/22494 * init.c (build_vec_delete_1): Convert BASE pointer's type to the base pointer type to avoid a type mismatch in the EQ_EXPR. 2006-03-24 Carlos O'Donell * search.c (maybe_suppress_debug_info): If flag_emit_class_debug_always then don't suppress. 2006-03-22 Jason Merrill * name-lookup.c (push_namespace_with_attribs): Only apply hidden visibility to anonymous namespaces if HAVE_GAS_HIDDEN. 2006-03-21 Jakub Jelinek PR c++/26691 * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments. 2006-03-21 Jason Merrill PR c++/21581 * parser.c (cp_parser_declaration): Support attributes on anonymous namespaces. * name-lookup.c (push_namespace_with_attribs): Anonymous namespaces default to hidden visibility. 2006-03-20 Jason Merrill PR c++/21764, c++/19238 * decl.c (cp_finish_decl): Call determine_visibility later. (start_preparsed_function): Likewise. * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros. (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros. * name-lookup.h (struct cp_binding_level): Add has_visibility bitfield. * name-lookup.c: Include c-pragma.h. (push_namespace_with_attribs): Split out from push_namespace. Push visibility if appropriate. Set TREE_PUBLIC on namespaces. (leave_scope): Pop visibility if appropriate. * decl2.c (determine_visibility_from_class): Split out from... (determine_visibility): ...here. Handle function scope and nested classes. (import_export_decl): Move visibility handling to determine_visibility_from_class. * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow attributes on namespace declarations. 2006-03-15 Volker Reichelt PR c++/6634 * decl.c (grokdeclarator): Do not accept long long double. Reorganize checks for invalid (combinations of) type modifiers. Quote modifiers in messages. 2006-03-09 Jason Merrill PR c++/16387, c++/16389 * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions. (cxx_sizeof_or_alignof_expr): Split out from here. 2006-03-09 Diego Novillo Merge from gomp-20050608-branch 2006-02-02 Diego Novillo * decl.c (pop_labels_1): Use appropriate pointer casting. (poplevel_named_label_1): Likewise. (named_label_entry_hash): Likewise. (named_label_entry_eq): Likewise. (check_goto): Likewise. (define_label): Likewise. 2006-01-26 Diego Novillo * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead of TREE_BLOCK. * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND instead of TREE_CODE/TREE_OPERAND. * semantics.c: Likewise. * parser.c: Likewise. 2005-11-10 Diego Novillo * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if target does not support TLS. 2005-11-09 Jakub Jelinek * decl.c (redeclaration_error_message): Don't error about DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P (olddecl). 2005-11-08 Jakub Jelinek PR c++/24735 * semantics.c (finish_omp_barrier, finish_omp_flush): New functions. * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier. (cp_parser_omp_flush): Call finish_omp_flush. * cp-tree.h (finish_omp_barrier, finish_omp_flush): New prototypes. PR c++/24734 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED. 2005-11-03 Jakub Jelinek * semantics.c (finish_omp_threadprivate): Error on class-scope variables. 2005-11-02 Jakub Jelinek * parser.c (cp_parser_omp_all_clauses): If some clause type is not allowed, don't remove just one of the clauses, but all clauses added in that loop round. * semantics.c (finish_omp_clauses): Fix function comment. Don't handle non-const or mutable specially, as const and not mutable is predetermined shared and that leads to double error. Don't ICE if copyin var is PARM_DECL. PR c++/24613 * parser.c (cp_parser_pragma): Diagnose PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS construct. * semantics.c (finish_omp_threadprivate): Error if V is automatic variable or has incomplete type. 2005-11-01 Diego Novillo * parser.c (cp_parser_omp_all_clauses): Use OMP_CLAUSE_CHAIN instead of TREE_CHAIN. 2005-11-01 Diego Novillo * parser.c (cp_parser_omp_all_clauses): When emitting an error message, remove the invalid clause from the list. 2005-10-31 Diego Novillo * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in combined parallel+workshare directives. 2005-10-31 Richard Henderson * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR): Use cxx_omp_clause_dtor. * cp-tree.h (CP_OMP_CLAUSE_INFO): New. (cxx_omp_clause_dtor): New. * cp-gimplify.c (cxx_omp_clause_apply_fn): New. (cxx_omp_clause_default_ctor): Use it. (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op): Likewise. (cxx_omp_clause_dtor): New. * semantics.c (finish_omp_clauses): Rewrite cdtor checking to fill in CP_OMP_CLAUSE_INFO. Don't specialcase LASTPRIVATE for removal. (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op): Move to cp-gimplify.c. 2005-10-28 Jakub Jelinek * semantics.c (finish_omp_threadprivate): If DECL_RTL_SET_P, call make_decl_rtl again so that encode_section_info can update SYMBOL_REF's flags. 2005-10-26 Jakub Jelinek * semantics.c (finish_omp_for): Don't segfault if COND or INCR is NULL. If not calling c_finish_omp_for right away and one of COND and INCR is NULL, issue error and don't expand anything. PR c++/24512 * cp-tree.h (finish_omp_for): Add PRE_BODY argument. * semantics.c (finish_omp_for): Likewise. Set OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it into the current statement list if not processing template decl or pass it to c_finish_omp_for. * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs into PRE_BODY statement list. Pass it to finish_omp_for. * pt.c (tsubst_expr) : tsubst_expr also OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to finish_omp_for. Put all the statements into sk_omp scope. 2005-10-25 Jakub Jelinek PR c++/24516 * parser.c (struct cp_parser): Rename in_iteration_statement field to in_statement. (IN_SWITCH_STMT, IN_ITERATION_STMT): Define. (IN_OMP_BLOCK, IN_OMP_FOR): Change values. (cp_parser_new, cp_parser_begin_omp_structured_block, cp_parser_end_omp_structured_block, cp_parser_omp_for_loop): Adjust for in_iteration_statement renaming. (cp_parser_selection_statement): Save parser->in_iteration, or it temporarily with IN_SWITCH_STMT for the cp_parser_implicitly_scoped_statement call. (cp_parser_iteration_statement): Adjust for in_iteration_statement renaming. Use IN_ITERATION_STMT rather than true. (cp_parser_jump_statement): Adjust for in_iteration_statement renaming and new values. Don't error on break in a switch statement within OMP_FOR or OpenMP structured block. PR c++/24513 * parser.c (cp_parser_cache_group): Don't stop if next token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as well. If current token is CPP_PRAGMA, consume everything until CPP_PRAGMA_EOL inclusive. 2005-10-24 Jakub Jelinek PR c++/24502 * semantics.c (finish_omp_for): Handle MODOP_EXPR in addition to MODIFY_EXPR. 2005-10-23 Richard Henderson * cp-gimplify.c (struct cp_gimplify_ctx): Remove. (bc_label): New. (begin_bc_block, finish_bc_block): Use it. (push_context, pop_context): Remove. (cp_genericize): Don't use them. Assert bc_label is null. * semantics.c (finish_omp_clauses): Create a fake data element of TYPE for probing ctors. 2005-10-23 Richard Henderson * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New. (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New. (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New. (LANG_HOOKS_OMP_CLAUSE_DTOR): New. * semantics.c (finish_omp_clauses): Look through arrays when looking up special member calls. Also remove FIRSTPRIVATE when LASTPRIVATE fails. (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New. (cxx_omp_clause_assign_op): New. * cp-tree.h: Declare them. 2005-10-21 Richard Henderson * decl.c (check_previous_goto_1): Return false if error. (check_switch_goto): Likewise. (finish_case_label): Don't emit the case label on error. * parser.c (struct cp_parser): Revert in_switch_statement_p changes. (cp_parser_labeled_statement, cp_parser_selection_statement): Likewise. (cp_parser_begin_omp_structured_block): Don't save... (cp_parser_end_omp_structured_block): or restore in_switch_statement_p. 2005-10-21 Richard Henderson * semantics.c (finish_omp_threadprivate): Set decl_flags.u2sel when necessary. 2005-10-21 Richard Henderson * decl.c (poplevel_named_label_1): Restore creation of the bad_decls list. (decl_jump_unsafe): Check for error_mark_node types. (check_goto): Don't check cdtor_label. Don't use identify_goto. * semantics.c (finish_return_stmt): Do check_omp_return before converting to cdtor_label goto. 2005-10-21 Richard Henderson PR c++/24451 * decl.c (check_omp_return): Return false on error. * cp-tree.h (check_omp_return): Update decl. * semantics.c (finish_return_stmt): Avoid adding return on error. 2005-10-21 Richard Henderson * cp-tree.h (struct language_function): Remove x_named_label_uses. Change x_named_labels to a hashtable. (check_omp_return): Declare. * decl.c (struct named_label_use_entry): Rename from named_label_use_list. Remove label_decl. (struct named_label_entry): Rename from named_label_list. Remove old_value and next. Change in_try_scope and in_catch_scope to bool. Add in_omp_scope. (pop_labels_1): New. (pop_labels): Use it. (pop_local_label, poplevel_named_label_1): New. (poplevel): Use them. (named_label_entry_hash, named_label_entry_eq): New. (make_label_decl): Create named_labels. Move label creation bits from lookup_label. (declare_local_label): Tidy. (identify_goto): Split out from ... (check_previous_goto_1): Add exited_omp argument. Handle omp scopes. (use_label): Merge into... (check_goto): ... here. Handle omp scopes. (check_omp_return): New. (check_previous_gotos): Merge into... (define_label): ... here. (save_function_data): Remove x_named_label_uses reference. (finish_function): Likewise. * name-lookup.h (sk_omp): New. * name-lookup.c (begin_scope): Handle it. * parser.c (cp_parser_omp_for): Don't create extra compound stmt. (cp_parser_omp_sections): Likewise. * semantics.c (finish_return_stmt): Call check_omp_return. (begin_omp_structured_block): Use sk_omp. (finish_omp_structured_block): Use do_poplevel. Don't build a MUST_NOT_THROW expression here. (begin_omp_parallel, finish_omp_parallel): Don't create extra compound statements. 2005-10-21 Diego Novillo PR 24455 * cp/cp-tree.h (struct lang_decl_flags): Add field threadprivate_p. (CP_DECL_IS_THREADPRIVATE): Define. * cp/semantics.c (finish_omp_threadprivate): Set. Do not error out if CP_DECL_IS_THREADPRIVATE is set already. * cp/decl.c (duplicate_decls): Merge CP_DECL_THREADPRIVATE_P. 2005-10-20 Richard Henderson * cp-gimplify.c (cp_gimplify_omp_for): New. (cp_gimplify_expr): Call it. * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New. * parser.c (struct cp_parser): Rename in_iteration_statement_p to in_iteration_statement and change to unsigned char. Similarly with in_switch_statement. Update all users. (IN_OMP_BLOCK, IN_OMP_FOR): New. (cp_parser_labeled_statement): Diagnose case labels binding closer to an openmp block nested than the switch. (cp_parser_jump_statement): Diagnose break and continue labels binding closer to an openmp block than an iteration or switch. (cp_parser_omp_for_loop): Mark in_iteration_statement for an omp for. (cp_parser_begin_omp_structured_block): New. (cp_parser_end_omp_structured_block): New. (cp_parser_omp_structured_block): Use them. (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise. (cp_parser_omp_parallel): Likewise. 2005-10-20 Richard Henderson * semantics.c (begin_omp_structured_block): New. (finish_omp_structured_block): New. (begin_omp_parallel, finish_omp_parallel): Use them. * parser.c (cp_parser_omp_structured_block): Likewise. (cp_parser_omp_for): Likewise. (cp_parser_omp_sections_scope): Likewise. * cp-tree.h: Declare them. 2005-10-20 Richard Henderson * parser.c (cp_parser_omp_master): Return the statement. (cp_parser_omp_ordered): Likewise. (cp_parser_omp_construct): Set the locus for them. 2005-10-19 Richard Henderson * semantics.c (finish_omp_atomic): Revert to uses_template_parms. 2005-10-19 Richard Henderson * semantics.c (finish_omp_clauses): Avoid DECL_THREAD_LOCAL_P on a PARM_DECL. Remove some stub asserts guaranteed to fail. 2005-10-19 Richard Henderson * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New. (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New. * parser.c (cp_parser_omp_clause_copyin): Remove. (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead. Call finish_omp_clauses. (cp_parser_omp_clause_if): Don't do error checking here. (cp_parser_omp_clause_num_threads): Likewise. (cp_parser_omp_clause_schedule): Likewise. (cp_parser_omp_atomic): Use finish_omp_atomic. (cp_parser_omp_for_loop): Don't discard DECL_EXPR. Don't decompose assignment statment here. Use finish_omp_for. * pt.c (tsubst_omp_clauses): New. (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS, OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC. * semantics.c (finish_omp_clauses): New. (begin_omp_parallel, finish_omp_parallel): Know Less about the internals of the stmt_list stack. (finish_omp_for, finish_omp_atomic): New. 2005-10-18 Jakub Jelinek * semantics.c (cxx_omp_predetermined_sharing): New function. * cp-tree.h (cxx_omp_predetermined_sharing): New prototype. * cp-objcp-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine. 2005-10-18 Richard Henderson * parser.c (cp_parser_omp_single): Use make_node and accessors instead of build. 2005-10-17 Richard Henderson * parser.c (cp_parser_omp_for_loop): Handle declarations. 2005-10-12 Richard Henderson * Make-lang.in (CXX_C_OBJS): Add c-omp.o. * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare. (finish_omp_threadprivate): Declare. * parser.c (struct cp_lexer): Add in_pragma. (cp_lexer_consume_token): Don't consume a PRAGMA_EOL when in_pragma. (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL. (cp_parser_skip_to_end_of_statement): Likewise. (cp_parser_skip_to_end_of_block_or_statement): Likewise. (cp_parser_skip_to_closing_brace): Likewise. (cp_parser_skip_to_pragma_eol): Reset in_pragma. (cp_parser_require_pragma_eol): New. (cp_parser_statement): Add in_compound argument; update all callers. Restart if a non-statement pragma seen outside a compound. (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL. (cp_parser_declaration_seq_opt): Likewise. (cp_parser_member_specification_opt): Likewise. (cp_parser_function_definition_after_decl): Likewise. (cp_parser_skip_until_found): Likewise. (cp_parser_cache_group): Likewise. (enum pragma_omp_clause, cp_parser_omp_clause_name, check_no_duplicate_clause, cp_parser_omp_var_list_no_open, cp_parser_omp_var_list, cp_parser_omp_clause_copyin, cp_parser_omp_clause_default, cp_parser_omp_clause_if, cp_parser_omp_clause_nowait, cp_parser_omp_clause_num_threads, cp_parser_omp_clause_ordered, cp_parser_omp_clause_reduction, cp_parser_omp_clause_schedule, cp_parser_omp_all_clauses, cp_parser_omp_structured_block, cp_parser_omp_atomic, cp_parser_omp_barrier, cp_parser_omp_critical, cp_parser_omp_flush, cp_parser_omp_for_loop, cp_parser_omp_for, cp_parser_omp_master, cp_parser_omp_ordered, cp_parser_omp_sections_scope, cp_parser_omp_sections, cp_parser_omp_parallel, cp_parser_omp_single, cp_parser_omp_threadprivate, cp_parser_omp_construct): New. (cp_parser_pragma): Handle OpenMP pragmas. * semantics.c (finish_omp_threadprivate): New. (begin_omp_parallel, finish_omp_parallel): New. 2005-10-11 Richard Henderson * parser.c (struct cp_token): Add pragma_kind. (eof_token): Initialize it. (cp_lexer_handle_pragma): Remove. (cp_parser_initial_pragma): New. (cp_lexer_new_main): Use it. (cp_lexer_get_preprocessor_token): Initialize pragma_kind. (cp_lexer_print_token): Don't handle CPP_PRAGMA. (cp_parser_skip_to_pragma_eol): New. (cp_parser_error): Use it. (pragma_lex): New. 2005-10-09 Richard Henderson * lex.c (parse_strconst_pragma): Update for c_lex name change. (handle_pragma_java_exceptions): Likewise. * parser.c (cp_lexer_new_main): Likewise. 2005-10-06 Richard Henderson * parser.c (cp_lexer_new_main): Comment out defer_pragmas. (cp_lexer_handle_pragma): Comment out cpp_handle_deferred_pragma. 2005-10-01 Richard Henderson * name-lookup.c (lookup_name): Remove prefer_type argument. (lookup_name_prefer_type): New function. * name-lookup.h (lookup_name_prefer_type): Declare it. * decl.c (lookup_and_check_tag): Use it. * pt.c (tsubst_friend_class): Likewise. Update for lookup_name change. (lookup_template_class, tsubst_copy_and_build): Likewise. 2006-03-06 Volker Reichelt PR c++/15759 * tree.c (bot_manip): Don't call mark_used. 2006-03-02 Mike Stump * decl2.c (import_export_decl): Remove redundant call to targetm.cxx.key_method_may_be_inline (). 2006-03-02 Richard Sandiford * decl.c (start_decl): Use have_global_bss_p when deciding whether to make the decl common. 2006-03-01 Mike Stump PR darwin/25908 * decl2.c (import_export_decl): Fix ABI breakage on darwin. 2006-02-24 Geoffrey Keating * except.c (expand_start_catch_block): Handle flag_use_cxa_get_exception_ptr. 2006-02-22 Volker Reichelt PR c++/26291 * decl.c (grok_op_properties): Check for ellipsis in arguments of operators. 2006-02-20 Rafael Ávila de Espíndola * Make-lang.in (C++): Remove. (.PHONY): Remove C++. 2006-02-18 Mark Mitchell PR c++/26266 * cp-tree.h (cp_finish_decl): Adjust declaration. (grokbitfield): Likewise. (finish_static_data_member_decl): Likewise. * init.c (constant_value_1): Ensure processing_template_decl when folding non-dependent initializers for static data members of dependent types. Return error_mark_node for erroneous initailizers. * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl. * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl. (cp_finish_decl): Add init_const_expr_p parameter. Set DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here. (finish_decl): Adjust call to cp_finish_decl. (compute_array_index_type): Robustify. (start_method): Use finish_decl, not cp_finish_decl. * rtti.c (emit_tinfo_decl): Likewise. * except.c (initialize_handler_parm): Adjust call to cp_finish_decl. (expand_start_catch_block): Likewise. * cvt.c (build_up_reference): Adjust call to cp_finish_decl. * pt.c (instantiate_class_template): Adjust call to finish_static_data_member_decl. (tsubst_expr): Use finish_decl, not cp_finish_decl. (instantiate_decl): Adjust call to cp_finish_decl. * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not cp_finish_decl. * decl2.c (finish_static_data_member_decl): Add init_const_expr_p parameter. (grokfield): Likewise. * parser.c (cp_parser_condition): Check for constant initializers. (cp_parser_init_declarator): Adjust calls to grokfield and cp_finish_decl. Don't set DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here. (cp_parser_member_declaration): Likewise. (cp_parser_objc_class_ivars): Likewise. 2006-02-14 Volker Reichelt * call.c (standard_conversion): Return NULL instead of 0. (build_user_type_conversion_1): Likewise. (tourney): Likewise. * decl.c (redeclaration_error_message): Likewise. * error.c (language_to_string): Likewise. 2006-02-13 Volker Reichelt * cp-tree.h (warn_hidden): Remove prototype. * class.c (warn_hidden): Make static. * cp-tree.h (build_type_conversion): Remove prototype. * cvt.c (build_type_conversion): Add prototype, make static. * cp-tree.h (push_tinst_level): Remove prototype. (pop_tinst_level): Likewise. * pt.c (push_tinst_level): Add prototype, make static. (pop_tinst_level): Likewise. 2006-02-13 Volker Reichelt * decl.c (grokdeclarator): Return NULL_TREE instead of 0. * typeck.c (unary_complex_lvalue): Likewise. 2006-02-13 Volker Reichelt * lex.c (parse_strconst_pragma): Return error_mark_node instead of "(tree)-1" to indicate failure. Simplify. (handle_pragma_interface): Test for error_mark_node instead of "(tree)-1". (handle_pragma_implementation): Likewise. 2006-02-13 Volker Reichelt PR c++/26151 * parser.c (cp_parser_decl_specifier_seq): Check for duplicate decl-specifiers. Remove extra check for duplicate 'friend'. * decl.c (grokdeclarator): Remove check for duplicate decl-specifiers. Set longlong together with long_p. 2006-02-12 Jason Merrill PR c++/24996 * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR. 2006-02-10 Volker Reichelt * class.c (debug_class): Remove extern. (debug_thunks): Likewise. 2006-02-09 Gabriel Dos Reis * typeck.c (string_conv_p): Don't test for flag_const_strings. 2006-02-08 Jason Merrill PR c++/25979 * cp-gimplify.c (cp_gimplify_expr): Don't call cp_gimplify_init_expr for MODIFY_EXPRs. * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR. 2006-02-08 Volker Reichelt PR c++/26071 * decl.c (grokdeclarator): Set dname also for destructor. PR c++/26070 * decl.c (grokdeclarator): Clear storage_class together with staticp. 2006-02-07 Gabriel Dos Reis * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error. (cp_build_qualified_type): Propogate renaming. * call.c (convert_like_real): Likewise. * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise. * decl.c (make_typename_type, grokdeclarator): Likewise. * pt.c (tsubst_friend_function, instantiate_class_template, tsubst_default_argument, instantiate_decl, tsubst_initializer_list, tsubst_enum): Likewise. * semantics.c (finish_template_type): Likewise. * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise. 2006-02-07 Dirk Mueller * typeck.c (build_binary_op): Annotate div-by-zero warnings to make -Wno-div-by-zero have an effect. 2006-02-07 Mark Mitchell PR c++/9737 * pt.c (coerce_template_template_parms): Do not templates with excess default arguments to match template template parameters with fewer parameters. (coerce_template_parms): Add use_default_args parameter; use default arguments only when true. (lookup_template_class): Adjust call to coerce_template_parms. (fn_type_unification): Likewise. (unify): Likewise. (get_bindings): Likewise. (dependent_type_p): Add assertions. 2006-02-06 Roger Sayle * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE. * rtti.c (typeinfo_in_lib_p): Likewise. * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise. * name-lookup.c (arg_assoc_type): Likewise. 2006-02-04 Gabriel Dos Reis * cp-tree.h (tf_warn_or_error): New substituion flag. (cp_build_qualified_type): Use it. * call.c (convert_like_real): Likewise. * cvt.c (cp_convert_to_pointer): Likewise. (convert_to_reference): Likewise. * decl.c (make_typename_type): Likewise. (grokdeclarator): Likewise. * pt.c (tsubst_friend_function): Likewise. (tsubst_friend_class): Likewise. (instantiate_class_template): Likewise. (tsubst_default_argument): Likewise. (instantiate_decl): Likewise. (tsubst_initializer_list): Likewise. (tsubst_enum): Likewise. * semantics.c (finish_template_type): Likewise. * typeck.c (build_ptrmemfunc): Likewise. (convert_for_assignment): Likewise. 2006-02-03 Lee Millward * typeck.c (string_conv_p): Pass appropiate OPT_Wxxxx values when calling warning(). (build_array_ref, cxx_mark_addressable): Likewise. (check_return_expr): Likewise. * init.c (perform_member_init): Likewise. (sort_mem_initializers, emit_mem_initializers): Likewise. * class.c (check_field_decls): Likewise. (warn_about_ambiguous_bases): Likewise. * decl.c (pop_label, poplevel): Likewise. (duplicate_decls, grok_op_properties): Likewise. (start_preparsed_function, finish_function): Likewise. * name-lookup.c (pushdecl_maybe_friend): Likewise. (pushdecl_maybe_friend): Likewise. * parser.c (cp_parser_warn_min_max): Likewise. (cp_parser_cast_expression): Likewise. * method.c (lazily_declare_fn): Likewise. * cvt.c (convert_to_void): Likewise. * mangle.c (finish_mangling): Likewise. * cp-gimplify.c (gimplify_expr_stmt): Likewise. 2006-02-03 Mark Mitchell * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P, not IDENTIFIER_OPNAME_P. 2006-01-31 Mark Mitchell PR c++/25342 * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise documentation. * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS, not TREE_VALUE. (instantiate_class_template): Simplify. (verify_class_unification): Remove. (unify): Document parameters. Use INNERMOST_TEMPLATE_ARGS to permit multiple levels of template arguments. (more_specialized_class): Simplify. (get_class_bindings): Pass full arguments to unify. Fold verify_class_unification into this function. Return full arguments. (most_specialized_class): Adjust for changes to get_class_bindings. Issue errors here for ambiguity. Return the fully deduced arguments for the most specialized class, in addition to the partial specialization. 2006-01-31 Ben Elliston * mangle.c: Comment fix. 2006-01-29 Gabriel Dos Reis * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN. * repo.c (extract_string, afgets): Use cast when converting from void *. 2006-01-29 Gabriel Dos Reis * call.c (alloc_conversion): Use cast when converting from void *. (alloc_conversions): Likewise. (add_candidate): Likewise. (print_z_candidates): Likewise. (add_warning): Likewise. * pt.c (retrieve_local_specialization): Likewise. (process_partial_specialization): Likewise. (mangle_class_name_for_template): Likewise. (tsubst_template_args): Likewise. * typeck2.c (pat_calc_hash): Likewise. (pat_compare): Likewise. (abstract_virtuals_error): Likewise. * class.c (method_name_cmp): Likewise. (resort_method_name_cmp): Likewise. (get_vfield_name): Likewise. * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise. * lex.c (init_reswords): Likewise. * rtti.c (create_pseudo_type_info): Likewise. * search.c (dfs_lookup_base): Likewise. (dfs_dcast_hint_pre): Likewise. (dfs_dcast_hint_post): Likewise. * tree.c (hash_tree_cons): Likewise. * repo.c (extract_string): Likewise. (afgets): Likewise. * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise. * g++spec.c (lang_specific_driver): Likewise. 2006-01-28 Gabriel Dos Reis * call.c (joust): Pass option code to warning. Use inform for explanation. * class.c (check_bases): Likewise. (maybe_warn_about_overly_private_class): Likewise. (check_field_decls): Likewise. (layout_empty_base): Likewise. (layout_virtual_bases): Likewise. (layout_class_type): Likewise. 2006-01-28 Mark Mitchell PR c++/25999 * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak here, not ... (start_function): ... here. 2006-01-28 Mark Mitchell PR c++/25855 * class.c (resolve_address_of_overloaded_function): Adjust use of return value from most_specialized_instantiation. * pt.c (determine_specialization): Avoid multiple calls to get_bindings. (most_specialized_instantiation): When a tie occurs, set the current presumed champion to the next template. Return the TREE_LIST node containing the template, rather than the template itself. (most_specialized): Remove. * name-lookup.c (push_overloaded_decl): When duplicate_decls indicates a failed redeclaration, report that to callers. 2006-01-26 Jason Merrill PR c++/16021 * name-lookup.c (parse_using_directive): Require strong using to name a nested namespace. 2006-01-25 Volker Reichelt Revert: * cp-tree.h (do_poplevel): Remove prototype. * semantics.c (do_poplevel): Add prototype. Make static. Revert: * cp-tree.h (default_conversion): Remove prototype. * typeck.c (default_conversion): Make static. 2006-01-25 Volker Reichelt * cp-tree.h (get_primary_binfo): Remove prototype. (push_using_decl): Likewise. (current_template_args): Likewise. (more_specialized_class): Likewise. (mark_class_instantiated): Likewise. (default_conversion): Likewise. (pfn_from_ptrmemfunc): Likewise. * class.c (get_primary_binfo): Add prototype, make static, simplify. * name-lookup.c (push_using_decl): Make static. * pt.c (current_template_args): Likewise. (more_specialized_class): Likewise. (mark_class_instantiated): Likewise. * typeck.c (default_conversion): Make static. (pfn_from_ptrmemfunc): Add prototype, make static. 2006-01-24 Dirk Mueller * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning(). 2006-01-24 Volker Reichelt PR c++/25552 * parser.c (cp_parser_unqualified_id): Check that destructor name and scope match. * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR. Adjust comment. Return early if possible. Use same_type_p to compare types. * typeck.c (lookup_destructor): Adjust call to check_dtor_name. 2006-01-24 Mark Mitchell * semantics.c: Remove outdated comment. 2006-01-23 Volker Reichelt * cp-tree.h (do_poplevel): Remove prototype. * semantics.c (do_poplevel): Add prototype. Make static. * cp-tree.h (original_type): Remove prototype. * typeck.c (original_type): Make static. * cp-tree.h (declare_global_var): Remove prototype. * decl.c (declare_global_var): Make static. * cp-tree.h (implicitly_declare_fn): Remove prototype. * method.c (implicitly_declare_fn): Make static. * cp-tree.h (fold_decl_constant_value): Remove prototype. * pt.c (fold_decl_constant_value): Make static. * cp-tree.h (build_x_delete): Remove prototype. * init.c (build_vec_delete_1): Call build_op_delete_call directly and not via build_x_delete. (build_x_delete): Remove. * cp-tree.h (get_vtt_name): Remove prototype. * class.c (get_vtt_name): Remove. (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name. 2006-01-22 Gabriel Dos Reis * rtti.c (build_dynamic_cast): Fix comment. 2006-01-22 Gabriel Dos Reis PR c++/10891 * rtti.c (build_dynamic_cast): Reject dynamic_cast use if -fno-rtti. 2006-01-21 Mark Mitchell PR c++/25895 * class.c (build_base_path): Generate a NOP_EXPR instead of a COMPONENT_REF if the base and derived classes are at the same address. PR c++/25856 * decl.c (begin_destructor_body): Robustify. PR c++/25858 * parser.c (cp_parser_direct_declarator): Robustify. 2006-01-20 Volker Reichelt * parser.c (cp_lexer_next_token_is_keyword): Simplify. * parser.c (clear_decl_specs): Remove prototype. * parser.c (cp_parser_expression_fn): Remove. * call.c (add_builtin_candidates): Remove superfluous return. * name-lookup.c (do_toplevel_using_decl): Likewise. * parser.c (cp_parser_type_specifier_seq): Likewise. (cp_parser_save_default_args): Likewise. 2006-01-20 Dirk Mueller PR c++/5520 * semantics.c (finish_if_stmt): Call empty_body_warning. * parser.c (cp_parser_implicitly_scoped_statement): Mark empty statement with an empty stmt. 2006-01-19 Mark Mitchell PR c++/22136 * name-lookup.c (do_class_using_decl): Don't try to look up base classes in templates with dependent base types. 2006-01-19 Volker Reichelt PR c++/25854 * pt.c (maybe_process_partial_specialization): Return early on error_mark_node. 2006-01-19 Volker Reichelt PR c++/16829 * decl.c (start_preparsed_function): Check default arguments unconditionally. * name-lookup.c (pushdecl_maybe_friend): Check default arguments of all functions and function templates. * parser.c (cp_parser_late_parsing_default_args): Check default arguments. * decl2.c (check_default_args): Set missing default arguments to error_mark_node. 2006-01-18 Mark Mitchell PR c++/25836 * cp-tree.h (push_class_stack): New function. (pop_class_stack): Likewise. * class.c (class_stack_node): Add hidden field. (pushclass): Clear it. (push_class_stack): New function. (pop_class_stack): Likewise. (currently_open_class): Ignore hidden classes. (currently_open_derived_class): Likewise. * name-lookup.c (push_to_top_level): Call push_class_stack. (pop_from_top_level): Call pop_class_stack. 2006-01-18 Kazu Hirata * tree.c (find_tree_t, find_tree): Remove. * cp-tree.h: Remove the prototype for find_tree. 2006-01-18 Jakub Jelinek * search.c (lookup_conversions_r): Fix a pasto. 2006-01-17 Eric Christopher * call.c (convert_like_real): When issuing conversion warnings, depend on OPT_Wconversion. * cvt.c (build_expr_type_conversion): Ditto. 2006-01-17 Kazu Hirata * name-lookup.c (lookup_namespace_name): Remove. * name-lookup.h: Remove the prototype for lookup_namespace_name. 2006-01-17 Jakub Jelinek PR c/25682 * decl.c (compute_array_index_type): After issuing not an integral constant-expression error, set size to 1 to avoid ICEs later on. 2006-01-16 Ian Lance Taylor * parser.c: Include "cgraph.h". (cp_parser_asm_definition): Call cgraph_add_asm_node rather than assemble_asm. 2006-01-16 Rafael �ila de Esp�dola * g++spec.c (lang_specific_spec_functions): Remove. 2006-01-15 Gabriel Dos Reis * decl.c (check_initializer): Fix thinko. 2006-01-14 Mark Mitchell PR c++/25663 * parser.c (cp_parser_direct_declarator): Use cp_parser_error instead of error. 2006-01-13 Jason Merrill * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more. * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT. * pt.c (check_explicit_specialization): Likewise. 2006-01-12 Jason Merrill PR libstdc++/24660 * pt.c (check_explicit_specialization): Handle namespace association. * name-lookup.c (set_decl_namespace): Likewise. 2006-01-12 Nathan Sidwell PR c++/24824 * class.c (handle_using_decl): Pass correct scope to cp_emit_debug_info_for_using. 2006-01-11 Nathan Sidwell PR c++/25386 * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects packedness. 2006-01-06 Gabriel Dos Reis * parser.c (cp_parser_primary_expression): Document the grammar for the built-in offsetof, a GNU extension. 2006-01-04 Zdenek Dvorak PR c++/25632 * init.c (constant_value_1): Unshare use of DECL_INITIAL. Fix a typo in condition. 2006-01-04 Chris Lattner * typeck2.c: update copyright to 2006 (split_nonconstant_init_1): Set TREE_CONSTANT to true. 2006-01-04 Mark Mitchell PR c++/24782 * parser.c (cp_parser_nested_name_specifier_opt): Preserve access checks, even when parsing tentatively. 2006-01-04 Richard Henderson Merge from gomp branch. * lex.c (handle_pragma_java_exceptions): Fix whitespace. * parser.c (struct cp_token): Add pragma_kind. (eof_token): Update to match. (struct cp_lexer): Add in_pragma; rearrange next for better packing. (cp_parser_initial_pragma): New. (cp_lexer_new_main): Use it. Don't bother clearing c_lex_return_raw_strings. (cp_lexer_get_preprocessor_token): Always initialize keyword and pragma_kind fields. Handle CPP_PRAGMA. (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when in_pragma is set. (cp_lexer_handle_pragma): Remove. Update callers to cp_parser_pragma. (cp_lexer_print_token) : Don't print as a string. (cp_parser_skip_to_pragma_eol): New. (cp_parser_error): Use it. (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL; rearrange with switch statement. (cp_parser_skip_to_end_of_statement): Likewise. (cp_parser_skip_to_end_of_block_or_statement): Likewise. (cp_parser_skip_to_closing_brace): Likewise. (cp_parser_skip_until_found): Likewise. (cp_parser_statement): Add in_compound argument; update callers. Use it to decide how to handle pragma parsing. (cp_parser_labeled_statement): Add in_compound argument; pass it on to cp_parser_statement. (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL. (cp_parser_declaration_seq_opt): Likewise. (cp_parser_parameter_declaration): Likewise. (cp_parser_member_specification_opt): Likewise. (cp_parser_function_definition_after_decl): Likewise. (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs. (cp_parser_pragma): New. (pragma_lex): New. 2006-01-04 Dirk Mueller * decl.c (finish_constructor_body): create simple compound stmt instead of a if(1) { } construct. 2006-01-03 Mark Mitchell PR c++/25492 * name-lookup.c (push_class_level_binding): When a derived class provides a type binding, eliminate any type binding from a base class. PR c++/25625 * repo.c (repo_emit_p): Always instantiate static data members initialized by constant expressions, so that there values are available. 2006-01-02 Mark Mitchell PR c++/25635 * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a conversion operator. * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here. PR c++/25638 * class.c (add_method): Never associate more than one destructor with a single class. PR c++/25637 * cp-tree.h (do_friend): Adjust prototype. * decl.c (grokfndecl): Make funcdef_flag a bool, not an int. (grokdeclarator): Likewise. Refine check for invalid declarations/definitions of member functions outside of their own class. * friend.c (do_friend): Make funcdef_flag a bool, not an int. PR c++/25633 * parser.c (cp_parser_mem_initializer_list): Check result of cp_parser_mem_initializer against error_mark_node, not NULL_TREE. (cp_parser_mem_initializer): Return error_mark_node for failure. PR c++/25634 * parser.c (cp_parser_template_parameter_list): Call begin_template_parm_list and end_template_parm_list here. (cp_parser_type_parameter): Not here. (cp_parser_template_declaration_after_export): Or here. (cp_parser_elaborated_type_specifier): Call cp_parser_check_template_parameters. * tree.c (build_target_expr_with_type): Use force_target_expr. * decl2.c (mark_used): Fix typo in comment. 2006-01-02 Volker Reichelt * parser.c (cp_parser_using_declaration): Skip name-lookup on invalid scope. 2005-12-30 Gabriel Dos Reis * cxx-pretty-print.c (pp_cxx_constant): New. Print string-literal in parens if input program says so. (pp_cxx_primary_expression): Hand off constant printing to pp_cxx_constant. (pp_cxx_pretty_printer_init): Set pp->c_base.constant. (pp_cxx_expression): Use pp_cxx_constant for literals. * error.c (dump_expr): Use pp_constant for literals. 2005-12-29 Nathan Sidwell * method.c (make_thunk): Don't set comdat_linkage here. (use_thunk): Make thunk one only here, if thunk target is DECL_ONE_ONLY. 2005-12-26 Mark Mitchell PR c++/25439 * decl.c (grokdeclarator): Remove dead code. * ptree.c (cxx_print_xnode): Handle BASELINK. * parser.c (make_id_declarator): Add sfk parameter. (cp_parser_direct_declarator): Do not pass TYPE_DECLs to make_id_declarator. (cp_parser_declarator_id): Simplify BASELINKs here. (cp_parser_member_declaration): Adjust calls to make_id_declarator. 2005-12-26 Mark Mitchell PR c++/23171, c++/23172, c++/25417. * typeck.c (build_unary_op): Create temporary variables for compound literals whose addresses are taken. * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P. * decl.c (reshape_init_vector): Likewise. (reshape_init): Give it external linkage. (check_initializer): Use COMPOUND_LITERAL_P. (initialize_artificial_var): Allow the initializer to be a CONSTRUCTOR. * call.c (make_temporary_var_for_ref_to_temp): Use create_temporary_var. * cp-tree.h (COMPOUND_LITERAL_P): New macro. (rehape_init): Declare. * typeck2.c (digest_init): Use COMPOUND_LITERAL_P. * semantics.c (finish_compound_literal): Use reshape_init. 2005-12-23 Mark Mitchell PR c++/24671 * pt.c (instantiate_template): Handle SFINAE. 2005-12-23 Volker Reichelt * decl.c (grokdeclarator): Improve diagnostic for friend declarations of class members. 2005-12-22 Mark Mitchell PR c++/25369 * tree.c (really_overloaded_fn): Tweak comment. * pt.c (tsubst_call_declarator_parms): Remove. (tsubst_copy): Call mark_used on the member referenced by an OFFSET_REF. * semantics.c (finish_qualified_id_expr): Simplify. * decl2.c (mark_used): Accept BASELINKs. PR c++/25364 * typeck.c (build_unary_op): Pass DECLs not names to build_offset_refs. * init.c (build_offset_ref): Do not do name lookup. Do not call mark_used. * call.c (build_call): Simplify and tidy. * semantics.c (finish_qualified_id_expr): Call mark_used. 2005-12-22 Volker Reichelt PR c++/23333 * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to identify a single '0'. 2005-12-20 Mark Mitchell PR c++/21228 * decl.c (use_eh_spec_block): New function. (store_parm_decls): Use it. (finish_function): Likewise. 2005-12-19 Mark Mitchell PR c++/24278 * init.c (expand_member_init): Print messages about baseclasses using %T rather than %D. PR c++/24915 * class.c (add_method): Do not treat templates as identical unless their return types are the same. 2005-12-12 Mark Mitchell PR c++/25300 * tree.c (build_qualified_name): Return error_mark_node for erroneous input. 2005-12-10 Mark Mitchell PR c++/25337 * pt.c (tsubst_copy_and_build): Permit dependent types for the object in a class member access expression. 2005-12-10 Terry Laurenzo PR java/9861 * mangle.c (write_bare_function_type): Mangle return type for methods of Java classes 2005-12-08 Th�dore Papadopoulo * call.c (build_conditional_expr): Print types in error messages. 2005-12-07 Volker Reichelt * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort. 2005-12-07 Volker Reichelt * cp-gimplify.c (gimplify_cp_loop): Use fold_build3. 2005-12-07 Rafael �ila de Esp�dola * Make-lang.in (c++.all.build, c++.install-normal): Remove. 2005-12-07 Rafael �ila de Esp�dola * Make-lang.in: Remove all dependencies on s-gtype. 2005-12-06 Aldy Hernandez PR C++/24138 * decl.c (reshape_init_array_1): Handle max_index of -1. 2005-12-06 Roger Sayle * typeck.c (build_binary_op): Issue warning if either operand of a comparison operator is a string literal, except for testing equality or inequality against NULL. 2005-12-06 Roger Sayle PR c++/25263 * decl.c (compute_array_index_type): Check that itype is an INTEGER_CST node before testing/clearing TREE_OVERFLOW. 2005-12-05 Daniel Berlin * ptree.c (cxx_print_decl): Update to check for decl_common structure. 2005-12-02 Mark Mitchell PR c++/24173 * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after clobbering newdecl. 2005-12-02 Richard Guenther * semantics.c (simplify_aggr_init_expr): Use buildN instead of build. 2005-12-02 Gabriel Dos Reis * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of ggc_realloc. (cp_parser_template_argument_list): Use XRESIZEVEC instead of xrealloc. * class.c (pushclass): Likewise. 2005-12-02 Gabriel Dos Reis * decl2.c (get_priority_info): Use XNEW, not xmalloc. * decl.c (push_switch): Likewise. * lex.c (handle_pragma_implementation): Likewise. * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW, not ggc_alloc. (cxx_initialize_diagnostics): Use XNEW, not xmalloc. * class.c (init_class_processing): Use XNEWVEC, not xmalloc. * g++spec.c (lang_specific_driver): Likewise. * mangle.c (save_partially_mangled_name): Likewise. * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc. (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc. (cp_parser_sizeof_operand): Likewise. * repo.c (open_repo_file, open_repo_file): Likewise. 2005-12-01 Gabriel Dos Reis * parser.c (cp_parser_make_typename_type): Call make_typename_type with tf_none instead of magic value 0. (cp_parser_explicit_instantiation): Call do_type_instantiation with tf_error instead of magic value 1. (cp_parser_elaborated_type_specifier): Call make_typename_type with tf_error instead of magic value 1. (cp_parser_class_name): Likewise. (cp_parser_lookup_name): Likewise. 2005-12-01 Gabriel Dos Reis * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF, not RID_MAX. 2005-11-30 Jason Merrill PR c++/21123 * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference parms in a thunk. 2005-11-30 Ben Elliston * typeck.c (build_x_unary_op): Correct spelling in error message. 2005-11-28 Nathan Sidwell PR c++/21166 * class.c (check_field_decls): Only set DECL_PACKED on a field when its natural alignment is > BITS_PER_UNIT. 2005-11-27 Volker Reichelt PR c++/24979 * cp-tree.h (DECL_MAIN_P): Remove duplicate definition. 2005-11-26 Richard Henderson * lex.c: Update for pragma_lex rename. * parser.c: Likewise. 2005-11-25 Volker Reichelt PR c++/9278 * decl.c (grokparms): Do not allow typedef-names in a '(void)' parmlist. 2005-11-25 Volker Reichelt * typeck2.c (process_init_constructor_union): Remove check for unnamed union members. 2005-11-25 Volker Reichelt * name-lookup.c (lookup_name_real): Merge two if's. 2005-11-25 Volker Reichelt * pt.c (instantiate_class_template): Clean-up. 2005-11-25 Volker Reichelt * pt.c (template_class_depth_real): Remove. Move functionality to ... (template_class_depth): ... here, replacing count_specializations with 0. Adjust comment. 2005-11-24 Richard Guenther Dirk Mueller PR c++/14024 * typeck.c (build_reinterpret_cast_1): Use strict_aliasing_warning. 2005-11-23 Gabriel Dos Reis PR c++/24235 * pt.c (check_instantiated_args): Reword diagnostic message about template argument involving local types. 2005-11-23 Gabriel Dos Reis PR c++/21667 * typeck.c (build_array_ref): Avoid code duplicate. Use common C/C++ diagnostic function warn_array_subscript_with_type_char. 2005-11-21 Gabriel Dos Reis PR c++/22238 * error.c (resolve_virtual_fun_from_obj_type_ref): New. (dump_expr): Use it in . 2005-11-21 Richard Henderson * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch. * name-lookup.c (lookup_name): Remove prefer_type argument. (lookup_name_prefer_type): New. * decl.c (lookup_and_check_tag): Use them. * pt.c (tsubst_friend_class): Likewise. (lookup_template_class): Likewise. (tsubst_copy_and_build): Likewise. * name-lookup.h (lookup_name_prefer_type): New. (lookup_name): Remove declaration. 2005-11-18 Mark Mitchell PR c++/8355 * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling set_decl_namespace. * name-lookup.c (set_decl_namespace): 2005-11-18 Mike Stump * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add. * name-lookup.c (lookup_name_two): Remove. (lookup_name_one): Add. * name-lookup.h (lookup_name_two): Remove. (lookup_name_one): Add. 2005-11-15 Jason Merrill PR c++/24580 * method.c (locate_copy): Also use skip_artificial_parms here. (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking for RECORD_TYPE. (locate_ctor): Abort if we fail to find a default constructor. 2005-11-15 Mike Stump * name-lookup.c (lookup_name_two): Add. * name-lookup.h: Likewise. 2005-11-15 Mark Mitchell PR c++/24667 * typeck.c (check_for_casting_away_constness): Use the diag_fn. (build_const_cast_1): Call it, for C-style casts. 2005-11-14 Mark Mitchell PR c++/24687 * pt.c (check_explicit_specialization): Don't check for C linkage. (push_template_decl_real): Likewise. * parser.c (cp_parser_explicit_specialization): Check here. (cp_parser_template_declaration_after_export): And here. * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword field. 2005-11-14 Jason Merrill PR c++/24580 * method.c (locate_ctor): Skip all artificial parms, not just 'this'. 2005-11-14 Mark Mitchell * parser.c (eof_token): Add initializer for ambiguous_p. 2005-11-13 Mark Mitchell PR c++/24817 * decl.c (check_redeclaration_exception_specification): New function. (duplicate_decls): Use it. * error.c (fndecl_to_string): Print the template parameter list. PR c++/20293 * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes for namespaces. (pp_cxx_original_namespace_definition): Likewise. * name-lookup.c (ambiguous_decl): Don't issue error messages; instead return lists of ambiguous candidates. (select_decl): Handle ambiguous namespace lookups. * parser.c (cp_token): Add ambiguous_p. (cp_lexer_get_preprocessor_token): Set it. (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages when a qualified name uses an invalid scope. (cp_parser_primary_expression): Print ambiguous candidates. (cp_parser_type_parameter): Adjust comment to reflect new parameter name for cp_parser_lookup_name. (cp_parser_template_argument): Likewise. (cp_parser_elaborated_type_specifier): Likewise. (cp_parser_namespace_name): Likewise. (cp_parser_class_name): Print ambiguous candidates. (cp_parser_lookup_name): Rename ambiguous_p parameter to ambiguous_decls. Use it to return a list of ambiguous candiates when a lookup is ambiguous. (cp_parser_lookup_name_simple): Adjust comment to reflect new parameter name for cp_parser_lookup_name. 2005-11-12 Jakub Jelinek PR c++/24780 * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants of array type. PR c++/24761 * pt.c (tsubst_copy_asm_operands): New function. (tsubst_expr) : Use it. 2005-11-08 Jakub Jelinek PR c++/19450 * decl.c (redeclaration_error_message): Issue diagnostics about olddecl and newdecl disagreement on __thread property. (grokdeclarator): Set DECL_TLS_MODEL on class static variables. 2005-11-08 Jason Merrill PR c++/21123 * method.c (use_thunk): Use build_cplus_new instead of force_target_expr. 2005-11-06 Jason Merrill James A. Morrison PR c++/17256 * decl2.c (cp_finish_file): Fix conditions for undefined warning. Set TREE_NO_WARNING instead of TREE_PUBLIC. * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid a warning on a function we didn't instantiate because of excessive recursion. 2005-11-06 Mark Mitchell * class.c (record_subobject_offsets): Don't record offsets past biggest empty class for non-empty base classes. (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when keeping track of the size of emptyclasses. PR c++/21308 * class.c (sizeof_biggest_empty_class): New variable. (record_subobject_offsets): Don't record offsets past biggest empty class for data members. Replace vbases_p parameter with is_data_member parameter. (build_base_field): Adjust call. (layout_class_type): Likewise. Maintain sizeof_biggest_empty_class. 2005-11-05 Kazu Hirata * decl2.c, init.c, typeck.c: Fix comment typos. 2005-11-04 Richard Guenther PR c++/22487 * init.c (build_vec_init): Build comparison of matching types. 2005-11-03 Josh Conner PR c++/19989 pt.c (tsubst): Accept zero-length array if tf_error is set in complain flags. Change error message for negative- length array. 2005-11-04 Joseph S. Myers * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list* parameter. 2005-11-03 Joseph S. Myers PR c++/17964 * error.c (cp_cpp_error): New function. * cp-tree.h (cp_cpp_error): Declare. * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic and error callback after lexing. 2005-11-03 Mark Mitchell PR c++/21627 * pt.c (register_specialization): Update inline flags on clones.y 2005-11-03 Andrew Pinski PR c++/24582 * decl.c (declare_local_label): Return 0 for variables with error_mark_node as their types. 2005-11-02 Mark Mitchell PR c++/22434 * call.c (build_conditional_expr): Do bad conversions, if there's no other choice. PR c++/24560 * parser.c (cp_parser_postfix_dot_deref_expression): Improve error message for use of overloaded functions on LHS of "." operator. PR c++/19253 * parser.c (cp_parser_postfix_expression): Use cp_parser_elaborated_type_specifier to handle typename-types in functional casts. (cp_parser_enclosed_argument_list): Skip ahead to the end of the template argument list if the closing ">" is not found. PR c++/24569 * pt.c (instantiate_decl): Use cp_finish_decl, not finish_static_data_member_decl. 2005-10-28 Andrew Pinski * decl.c (grokfndecl): Remove the setting of the return type of the function type of main after erroring about must returning int. 2005-10-28 Andrew Pinski PR C++/23229 * decl.c (grokfndecl): Create a new function type after erroring out about main not returning int. 2005-10-28 Josh Conner PR c++/22153 * parser.c (cp_parser_member_declaration): Detect and handle a template specialization. 2005-10-28 Andrew Pinski PR C++/23426 * decl.c (start_decl): Check that the decl is an error_mark_node before getting the type. Remove the check for the decl's type being an error_mark_node. 2005-10-21 Mark Mitchell PR c++/24260 * parser.c (cp_parser_init_declarator): Pass attributes to grokfield. 2005-10-20 Mark Mitchell PR c++/22618 * search.c (accessible_p): Check access in the outermost set of template parameters. 2005-10-20 Richard Guenther * decl.c (grokdeclarator): Fix ambiguous pedwarn message. 2005-10-18 Volker Reichelt PR c++/22293 * decl.c (grokdeclarator): Reject unqualified destructors in friend declarations. 2005-10-18 Mark Mitchell PR c++/23293 * pt.c (convert_template_argument): Use canonical type variants in template specializations. 2005-10-18 Nathan Sidwell PR c++/21383 * name-lookup.c (arg_assoc): Template args can be null in a template-id-expr. PR c++/22604 * class.c (update_vtable_entry_for_fn): Don't process invalid covariant overriders. PR c++/23118 * cp-tree.h (add_method): Add return value. * class.c (add_method): Return success indicator. * semantics.c (finish_member_declaration): Don't add an invalid method to the method list. 2005-10-17 Mark Mitchell PR c++/21908 * call.c (build_new_method_call): Do not show VTT parameters to the user. 2005-10-17 Volker Reichelt PR c++/23440 * parser.c (cp_parser_statement): If the parser reached CPP_EOF, only complain about missing statement. 2005-10-17 Nathan Sidwell PR c++/24386 * cp-tree.h (BASELINK_QUALIFIED_P): New. * pt.c (tsubst_copy_and_build): : Use it. * typeck.c (finish_class_member_access_expr): Set it. PR c++/21353 * decl.c (check_default_argument): Don't check processing_template_decl or uses_template_parms here. (grokparms): Only call check_default_argument when not processing a template decl. * parser.c (cp_parser_late_parsing_default_arg): Call check_default_argument when not processing a template decl. 2005-10-16 Mark Mitchell PR c++/24389 * decl2.c (mark_used): Use uses_template_parms instead of dependent_type_p. * init.c (constant_value_1): Handle uninstantiated templates specially. * pt.c (instantiate_decl): Add sanity check. 2005-10-16 Mark Mitchell PR c++/22173 * typeck.c (check_template_keyword): Fix thinko. 2005-10-16 Andrew Pinski PR c++/23959 * decl.c (pop_switch): Only call c_do_switch_warnings when not processing templates. 2005-10-16 Mark Mitchell PR c++/22173 * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro. (check_template_keyword): New function. (finish_id_expression): Change prototoype. (finish_qualified_id_expr): Change prototype. (build_qualified_name): New function. (finish_class_member_access_expr): Change prototype. * init.c (build_offset_ref): Use build_qualified_name. * mangle.c (write_expression): Likewise. * parser.c (cp_parser_primary_expression): Remove qualifying_class parameter. Add address_p and template_arg_p. Use build_qualified_name. (cp_parser_id_expression): Default *template_p to template_keyword_p. Check for invalid uses of the template keyword. (cp_parser_postfix_expression): Eliminate special handling for qualified names. Adjust call to cp_parser_primary_expression. (cp_parser_postfix_dot_deref_expression): Adjust call to cp_parser_id_expression and finish_class_member_access_expr. (cp_parser_template_argument_list): Add comment. (cp_parser_template_argument): Adjust use of cp_parser_primary_expression. Remove call to finish_qualified_id_expr. (cp_parser_lookup_name): Use build_qualified_name. * pt.c (tsubst): Use build_qualified_name. (tsubst_qualified_id): Likewise. Adjust call to finish_qualified_id_expr. (tsubst_copy): Use build_qualified_name. (tsubst_copy_and_build): Adjusts call to finish_id_expression and finish_class_member_access_expr. * semantics.c (finish_non_static_data_member): Use build_qualified_name. (finish_qualified_id_expr): Add template_p and template_arg_p parameters. (finish_id_expression): Remove qualifiying_class parameter. Add template_p, done, address_p, and template_arg_p. Use build_qualified_name. Adjust calls to finish_class_member_acess_expr. * tree.c (build_qualified_name): New function. * typeck.c (check_template_keyword): New function. (finish_class_member_access_expr): Add template_p argument. Check for invalid uses of the template keyword. 2005-10-15 Mark Mitchell PR c++/21347 * class.c (maybe_warn_about_overly_private_class): Lazy constructors are public. 2005-10-14 Mark Mitchell PR c++/19565 * call.c (convert_like_real): Rely on convert_and_check to issue warnings about overflow and conversion to unsigned. * decl.c (finish_enum): Use the location of the enumerators, not the closing brace of the enumeration, when reporting warnings about conversions. (build_enumerator): Use error_mark_node for erroneous values. * typeck2.c (digest_init): Remove reference to "signature pointer" from comment. 2005-10-14 Nathan Sidwell PR c++/17796 * optimize.c (update_cloned_parm): Add FIRST parameter. Use it. (maybe_clone_body): Track the first clone. 2005-10-13 Nathan Sidwell PR c++/23984 * class.c (build_base_path): The vtable is always the first thing in the vtt. 2005-10-13 Mark Mitchell PR c++/20721 * cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro. * decl.c (duplicate_decls): Merge it into new declarations. (decl_jump_unsafe): Use it, rather than DECL_INITIAL. (cp_finish_decl): Set it, when appropriate. PR c++/22180 * call.c (build_new_method_call): Correct pretty-printing of destructor names. * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an identifier. PR c++/23694 * decl.c (start_method): Return error_mark_node for errors. PR c++/23307 * pt.c (push_template_decl_real): Complain about attempts to declare template variables. PR c++/22352 * pt.c (tsubst_template_parms): Set processing_template_decl while processing the parameters. (tsubst_decl): Set processing_template_decl when substituting into a TEMPLATE_DECL. PR c++/22405 * pt.c (most_specialized_instantiation): Robustify. PR c++/22464 * semantics.c (finish_id_expression): Issue errors about uses of local variables in containing functions even in templates. 2005-10-12 Danny Smith PR target/21801 PR target/23589 * class.c (finish_struct_1): Call targetm.cxx.adjust_class_at_definition. 2005-10-12 Nathan Sidwell PR c++/21592 * pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF with already looked up member functions. Assert we're not returning a NON_DEPENDENT_EXPR with unknown type. * typeck.c (finish_class_member_access_expr): We can get non-template-id-expr baselinks. If the lookup finds a baselink, remember it even inside templates. PR c++/23797 * parser.c (cp_parser_functional_cast): Cope when TYPE is not a TYPE_DECL. Use dependent_type_p to check type. * pt.c (uses_template_parms_p): Use dependent_type_p for a TYPE_DECL. (type_dependent_expression_p): Assert we've not been given a TYPE_DECL. PR c++/21117 * decl.c (check_function_type): Correctly overwrite incomplete return type with void type. * typeck.c (check_return_expr): If the function's return type is void, don't try and convert a return expr. 2005-10-12 David Edelsohn PR c++/23730 * call.c (build_object_call): If BINFO is NULL, bypass lookup_fnfields and set fns to NULL_TREE. 2005-10-12 Paolo Bonzini PR c++/24052 * error.c (dump_expr): Pass LABEL_DECL to dump_decl. Print an ADDR_EXPR of a LABEL_DECL as &&. 2005-10-12 Nathan Sidwell PR c++/19964 * class.c (walk_subobject_offsets): Don't walk error_mark_node. 2005-10-11 Ian Lance Taylor PR c++/8057 * cvt.c (convert_to_void): Don't warn about unused values when processing a template declaration. 2005-10-11 Mark Mitchell PR c++/21089 * call.c (convert_like_real): Use decl_constant_value, not integral_constant_value. * init.c (constant_value_1): New function. (integral_constant_value): Use it. (decl_constant_value): Likewise. * typeck.c (decay_conversion): Use decl_constant_value, not integral_constant_value. PR c++/21369 * parser.c (cp_parser_elaborated_type_specifier): Don't treat class types as templates if the type is not appearing as part of a type definition or declaration. 2005-10-10 Mark Mitchell PR c++/24277 * pt.c (instantiate_decl): Call finish_static_data_member_decl for static data members. 2005-10-10 Giovanni Bajo Mark Mitchell PR c++/23437 * parser.c (cp_parser_template_argument_list): Do not treat contents of argument list as part of a constant expression. 2005-10-10 Mark Mitchell PR c++/24139 * decl.c (grokdeclarator): Do not require template parameter lists for explicitly specialized class. * error.c (dump_aggr_type): Do not dump template arguments for non-primary specializations. (dump_function_name): Likewise. PR c++/24275 * pt.c (instantiate_decl): Instantiate the initializer of a static data member in the namespace containing the class containing the static data member. 2005-10-08 James A. Morrison PR c++/22172 * parser.c (cp_parser_postfix_expression) : Treat nontype scopes as nondependent. 2005-10-06 Volker Reichelt * call.c (resolve_args): Remove redundant test. 2005-10-05 Paolo Bonzini PR tree-optimization/21419 PR tree-optimization/24146 PR tree-optimization/24151 * semantics.c (finish_asm_stmt): Call readonly_error if outputs are read-only. Set ASM_VOLATILE_P for asms without outputs. 2005-10-05 Nathan Sidwell PR c++/23513 * call.c (joust): Adjust length count to more_specialized_fn. * pt.c (more_specialized_fn): Cope with non-static member vs non-member. 2005-10-04 Andrew Pinski PR middle-end/23125 * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name instead of change_decl_assembler_name. 2005-10-03 Alexandre Oliva * error.c (dump_type) : Print reworded message. 2005-10-03 Mark Mitchell PR c++/17775 * repo.c: Include flags.h. (finish_repo): Add -frandom-seed to the arguments. 2005-10-02 Mark Mitchell PR c++/22621 * parser.c (cp_parser_template_argument): Don't turn "T::f" into "(*this).T::f". * pt.c (convert_nontype_argument): Remove ??? comment. PR c++/23840 * tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue, when class rvalues are lvalues. 2005-09-28 Mark Mitchell PR c++/16782 * decl.c (grokdeclarator): Always pedwarn about overqualified member names. 2005-09-27 Mark Mitchell PR c++/22147 * name-lookup.c (maybe_process_template_type_declaration): Don't treat forward declarations of classes as templates just because we're processing_template_decl. * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend functions. 2005-09-26 Jason Merrill PR c++/13764 * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro. * name-lookup.c (pushdecl_maybe_friend): Check it. * decl.c (begin_function_body): Do nothing if it's false. (finish_function_body): Ditto. (outer_curly_brace_block): New fn. (finish_function): Use it. 2005-09-26 Richard Guenther PR middle-end/15855 * decl2.c (do_static_destruction): Remove. (finish_static_initialization_or_destruction): Likewise. (DECL_EFFECTIVE_INIT_PRIORITY): New macro. (NEEDS_GUARD_P): Likewise. (do_static_initialization): Rename to do_static_initialization_or_destruction. Process all initializers/destructors and handle common conditionalizing. (start_static_initialization_or_destruction): Rename to one_static_initialization_or_destruction. Handle only decl-specific conditionalizing. (cp_finish_file): Call do_static_initialization_or_destruction. 2005-09-22 Jakub Jelinek PR c++/21983 * class.c (find_final_overrider): Move diagnostic about no unique final overrider to... (update_vtable_entry_for_fn): ... here. 2005-09-21 Mark Mitchell PR c++/23993 * init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P. 2005-09-21 Volker Reichelt PR c++/23965 * call.c (resolve_args): Return error_mark_node on arguments whose TREE_TYPE is error_mark_node. 2005-09-20 Jakub Jelinek PR c++/23947 * rtti.c (get_pseudo_ti_init): Recompute ti pointer after get_tinfo_ptr calls. 2005-09-16 Mark Mitchell PR c++/23914 * parser.c (cp_parser_enclosed_template_argument_list): Make sure skip_evaluation is false when processing template arguments. PR c++/21514 * pt.c (check_instantiated_args): Treat uses of anonymous types as causing type-deduction failure. 2005-09-15 Jason Merrill PR c++/23357 * cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to tcc_expression. 2005-09-15 Mark Mitchell PR c++/23896 * pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when processing template arguments. * pt.c (check_explicit_instantiation_namespace): Fix typo. PR c++/13140 * decl.c (check_class_member_definition_namespace): New function. (grokfndecl): Use it. (grokvardecl): Likewise. (grokdecl): Improve documentation. * pt.c (check_explicit_instantiation_namespace): New function. (register_specialization): Call check_specialization_namespace when replacing an implicitly instantiated function. (check_explicit_specialization): Ensure that DECL_CONTEXT is set correctly for namespace-scope specializations. (do_decl_instantiation): Use check_explicit_instantiation_namespace. (do_type_instantiation): Likewise. 2005-09-15 Nathan Sidwell PR c++/23725 * error.c (dump_decl): Use USING_DECL_SCOPE. 2005-09-13 Bastian Blank PR c++/16171 * mangle.c (find_substitution): Do not use special substitutions for identifiers not in std::. 2005-09-13 Mark Mitchell PR c++/23839 * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER for VAR_DECLs. 2005-09-13 Mark Mitchell PR c++/23842 * pt.c (tsubst_default_argument): Do treat default argument expressions as occurring in the context of the function called. 2005-09-12 Mark Mitchell PR c++/23841 * parser.c (cp_parser_primary_expression): Recognize the closing ">" of a template-argument-list after a floating-point literal as the end of a cast expression. 2005-09-12 Mark Mitchell PR c++/23789 * cvt.c (perform_qualification_conversions): Don't create unnecessary NOP_EXPRs. * pt.c (tsubst_template_arg): Use fold_non_dependent_expr. 2005-09-12 Ian Lance Taylor PR g++/7874 * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p bitfield. Make dummy bitfield one bit smaller. (DECL_HIDDEN_FRIEND_P): Define. (pushdecl_maybe_friend): Declare. (pushdecl_top_level_maybe_friend): Declare. * decl.c (duplicate_decls): Add newdecl_is_friend parameter. Change prototype and all callers. Add assertion that a DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P. Set DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if appropriate. * name-lookup.c (supplement_binding): Don't ignore a DECL_HIDDEN_FRIEND_P. (pushdecl_maybe_friend): Break out contents of pushdecl. Add is_friend parameter. Set DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P for a friend function. (pushdecl): Just call pushdecl_maybe_friend. (pushdecl_with_scope): Add is_friend parameter. Change prototype and all callers. (pushdecl_namespace_level): Likewise. (push_overloaded_decl): Likewise. Check DECL_HIDDEN_FRIEND_P as well as DECL_ANTICIPATED when checking for a builtin. (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as DECL_ANTICIPATED when checking for a builtin. (do_nonmember_using_decl): Likewise. (pushdecl_top_level_1): Add is_friend parameter. Change all callers. (pushdecl_top_level_maybe_friend): New function. (remove_hidden_names): New function. (struct arg_lookup): Add args field. (friend_of_associated_class_p): New static function. (arg_assoc_namespace): Ignore hidden functions which are not friends of an associated class of some argument. (lookup_arg_dependent): Remove hidden functions from list passed in. Initialize k.args. * name-lookup.h (remove_hidden_names): Declare. * friend.c (do_friend): Call pushdecl_maybe_friend instead of pushdecl. * call.c (add_function_candidate): Change DECL_ANTICIPATED test to an assertion, with a check for DECL_HIDDEN_FRIEND_P. (build_new_function_call): Add koenig_p parameter. Change prototype and callers. * pt.c (register_specialization): Add is_friend parameter. Change all callers. (push_template_decl_real): Change is_friend parameter to bool. Change prototype and all callers. (tsubst_friend_class): Call pushdecl_top_level_maybe_friend instead of pushdecl_top_level. 2005-09-11 Richard Henderson * decl2.c (build_anon_union_vars): Copy attributes from the base addr. * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR. 2005-09-09 Gabriel Dos Reis * parser.c (cp_parser_translation_unit): Simplify. The while-block was actually executed at most once. 2005-09-09 Richard Henderson PR debug/20998 * cp-tree.def (ALIAS_DECL): Remove. * cp-lang.c (cp_init_ts): Remove support for it. * error.c (dump_decl): Likewise. * name-lookup.c (pushdecl): Likewise. * semantics.c (finish_id_expression): Likewise. * decl2.c (build_anon_union_vars): Use a VAR_DECL with DECL_VALUE_EXPR instead. 2005-09-09 Mark Mitchell PR c++/22252 * decl.c (start_preparsed_function): Do not pay attention to #pragma interface for implicitly-defined methods. * decl2.c (cp_finish_file): Do not complain about uses of inline functions that have bodies, even if we decided not to emit the body in this translation unit. * semantics.c (note_decl_for_pch): Do not mess with linkage. (expand_or_defer_fn): Make inline, non-template functions COMDAT at this point. 2005-09-08 Richard Henderson PR debug/23190 * decl.c (wrapup_globals_for_namespace): Call emit_debug_global_declarations. * decl2.c (cp_finish_file): Likewise. 2005-09-08 Mark Mitchell PR c++/23691 * decl2.c (mark_used): Instantiate static data members initialized by constants, even in a template. 2005-09-08 Andrew Pinski PR obj-c++/16816 * parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as two CPP_COLON. 2005-09-07 Richard Guenther * cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR for EMPTY_CLASS_EXPR. 2005-09-06 Jakub Jelinek PR c/23075 * typeck.c (check_return_expr): Add no_warning argument. Set *no_warning to true if "return-statement with no value, in function returning" warning has been issued. * cp-tree.h (check_return_expr): Adjust prototype. * semantics.c (finish_return_stmt): Set TREE_NO_WARNING if check_return_expr set *no_warning to true. 2005-09-06 Mark Mitchell * cp-tree.h (rvalue): New function. * call.c (build_conditional_expr): Use it. * init.c (build_new_1): Likewise. * rtti.c (build_dynamic_cast_1): Likewise. * tree.c (rvalue): New function. * typeck.c (build_unary_op): Use it. (build_static_cast_1): Likewise. PR c++/9782 * init.c (build_new_1): Make sure the entire array type is complete, not just its element types. 2005-09-06 Volker Reichelt * decl.c (check_elaborated_type_specifier): Remove redundant check. 2005-09-06 Jakub Jelinek PR c++/23056 * typeck.c (ignore_overflows): New helper function. (build_static_cast_1): Use it. 2005-09-06 Kazu Hirata * cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos. Follow spelling conventions. 2005-09-05 Mark Mitchell PR c++/23667 * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when copying a VAR_DECL. 2005-09-05 Mark Mitchell PR c++/21440 * semantics.c (finish_stmt_expr_expr): Add an explicit initialization to the last statement in the statement-expression. * (finish_stmt_expr): Adjust accordingly. 2005-09-03 Mark Mitchell PR c++/23699 * decl2.c (mark_used): Always instantiate static data members initialized by constant expressions. * pt.c (instantiate_decl): Instantiate the initializers for static data members initialized by constant expressions. PR c++/21687 * semantics.c (expand_or_defer_fn): Do not call ggc_collect when finishing processing for a template function in a local class. Revert: 2005-09-02 Mark Mitchell * parser.c (cp_parser_class_specifier): Push/pop GC contexts around functions in local classes. 2005-09-02 Mark Mitchell PR c++/21687 * parser.c (cp_parser_class_specifier): Push/pop GC contexts around functions in local classes. 2005-08-31 Andrew Pinski PR obj-c++/23640 * decl2.c (cp_finish_file): If this is obj-c++ and we need a static init, call generate_ctor_or_dtor_function. 2005-08-31 Volker Reichelt PR c++/13377 * parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to lookup_name_real on final parse. 2005-08-31 Volker Reichelt PR c++/23639 * semantics.c (qualified_name_lookup_error): Do not complain again on invalid scope. 2005-08-30 Volker Reichelt PR c++/23586 * parser.c (cp_parser_namespace_name): Move diagnostic for invalid namespace-name to here from ... * name-lookup.c (do_namespace_alias): ... here and ... (do_using_directive): ... here. Remove dead code. 2005-08-28 Mark Mitchell PR c++/23099 * cp-tree.h (saved_scope): Add skip_evaluation. * decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not DECL_INITIAL, to determine whether or not a static data member was initialized in the class-specifier. (cp_finish_decl): Add comment. * init.c (integral_constant_value): Subtitute into the initializers for static data members in templates. * name-lookup.c (push_to_top_level): Save skip_evaluation. (pop_from_top_level): Restore it. * pt.c (instantiate_class_template): Do not substitute into the intializers of static data members when instantiating a class. (regenerate_decl_from_template): Simplify. (instantiate_decl): Tidy. Substitute into the initializer for a static data member even when the definition of the data member is not available. 2005-08-26 Mark Mitchell PR c++/19004 * pt.c (uses_template_parms): Handle IDENTIFIER_NODE. (type_dependent_expression_p): Allow BASELINKs whose associated functions are simply a FUNCTION_DECL. PR c++/23491 * cp-tree.h (build_vec_init): Adjust prototype. * init.c (perform_member_init): Adjust call to build_vec_init. (build_aggr_init): Likewise. (build_new_1): Do not call build_default_init for array types. (build_vec_init): Add explicit_default_init_p parameter. Perform default initialization of vector elements when set. * typeck.c (build_modify_expr): Adjust call to build_vec_init. 2005-08-25 Nathan Sidwell PR c++/20817 * typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a ->*. 2005-08-24 Nathan Sidwell PR c++/22454 * parser.c (cp_lexer_peek_nth_token): Relax assert. 2005-08-23 Nathan Sidwell PR c++/23044 * pt.c (tsubst_qualified_id): A SCOPE_REF can still remain. 2005-08-22 James E Wilson PR tree-optimization/23426 * decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for array size check. 2005-08-22 Volker Reichelt PR c++/22233 * pt.c (push_template_decl_real): Return error_mark_node if the number of template parameters does not match previous definition. 2005-08-22 Volker Reichelt PR c++/23089 * decl.c (require_complete_types_for_parms): Mark incomplete types as invalid. 2005-08-19 Volker Reichelt * parser.c (cp_parser_nth_token_starts_template_argument_list_p): Fix typo in leading comment. 2005-08-15 Kaveh R. Ghazi * name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF. 2005-08-15 Fariborz Jahanian * cp-tree.h (can_convert_arg, fn_type_unification): New argument. * call.c (add_template_candidate_real): Pass down 'flags' to fn_type_unification. (can_convert_arg): New 'flags' argument. Pass it to call to implicit_conversion instead of LOOKUP_NORMAL. (can_convert): Add LOOKUP_NORMAL to call to can_convert_arg. * class.c (resolve_address_of_overloaded_function): Ditto. (resolve_address_of_overloaded_function): Ditto. * decl.c (reshape_init, check_default_argument): Ditto. * typeck.c (build_ptrmemfunc): Ditto. * pt.c (type_unification_real): Add 'flags' argument. (fn_type_unification): Pass 'flags' to type_unification_real. (type_unification_real): Pass new 'flags' argument to call to can_convert_arg. 2005-08-12 Giovanni Bajo Nathan Sidwell PR c++/21799 PR c++/8271 * pt.c (unify) : Check this-pointer cv-qualifiers explicitly. 2005-08-12 Nathan Sidwell PR c++/21799 Revert my 2005-07-08 patch * pt.c (type_unification_real): Remove is_method_argument and assoicated checks. (fn_type_unification, unify): Adjust type_unification_real calls. 2005-08-11 Volker Reichelt PR c++/23266 * decl2.c (grokfield): Check that method is not static before marking it as pure. 2005-08-11 Nathan Sidwell PR c++/23219 * name-lookup.c (pushtag): Process the template type before altering the identifier lookup fields. Remove unreachable code creating an empty stub decl. 2005-08-10 Volker Reichelt PR c++/20646 * decl.c (grokdeclarator): Reset storage_class after error. 2005-08-08 Volker Reichelt PR c++/22508 * init.c (build_new_1): Check for empty candidate list. 2005-08-06 Volker Reichelt PR c++/23191 * pt.c (tsubst) : Check for error_mark_node before calling build_exception_variant. 2005-08-06 Volker Reichelt PR c++/19498 * pt.c (tsubst_decl) : Return ERROR_MARK_NODE if substitution of template args did not succeed. 2005-08-06 Michael Matz * method.c (use_thunk): Call init_insn_lengths. 2005-08-05 James A. Morrison PR c++/22514 * name-lookup.c (cp_emit_debug_info_for_using): Do nothing if sorrycount or errorcount are nonzero. 2005-08-05 Mark Mitchell * name-lookup.c (pushtag): Remove accidental commit from: 2004-12-21 Mark Mitchell PR c++/19063 * decl.c (grokdeclarator): Return error_mark_node, not void_type_node, to indicate errors. * parser.c (cp_parser_template_parameter_list): Robustify. (cp_parser_template_parameter): Likewise. 2005-08-01 Kazu Hirata * class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c: Fix comment typos. 2005-07-29 Kazu Hirata * method.c: Fix a comment typo. 2005-07-28 Mark Mitchell PR c++/22545 * call.c (add_builtin_candidate): Adjust for changes in representation of pointer-to-member types. 2005-07-28 Mike Stump * pt.c (check_explicit_specialization): Add visibility logic. (lookup_template_class): Likewise. (instantiate_class_template): Likewise. 2005-07-27 Devang Patel * name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit. 2005-07-25 Ian Lance Taylor * ptree.c (cxx_print_identifier): Print a leading space if the indent level is 0. 2005-07-24 Kaveh R. Ghazi * call.c (convert_for_arg_passing): Check function pointers when -Wmissing-format-attribute is activated. * typeck.c (convert_for_assignment): Likewise. 2005-07-22 Manfred Hollstein * parser.c (cp_parser_declaration): Fix unitialised warnings. 2005-07-21 Andrew Pinski * class.c (build_base_path): Fix typo. 2005-07-21 Andrew Pinski PR C++/22358 * class.c (build_base_path): Convert BINFO_OFFSET to the correct type. 2005-07-21 Volker Reichelt * call.c: Fix comment typo(s). * cxx-pretty-print.h: Likewise. * name-lookup.c: Likewise. * parser.c: Likewise. 2005-07-20 Douglas Gregor PR c++/2922 * semantics.c (perform_koenig_lookup): For dependent calls, just return the set of functions we've found so far. Later, it will be augmented by those found through argument-dependent lookup. * name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing the optimization that skips namespaces where the functions were originally found. 2005-07-20 Giovanni Bajo Make CONSTRUCTOR use VEC to store initializers. * call.c (convert_default_arg): Update call to digest_init. * class.c (dump_class_hierarchy, dump_array): Update to cope with VEC in CONSTRUCTOR_ELTS. * cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise. (finish_compound_literal, digest_init): Update declaration. * decl.c (struct reshape_iter): New data type. (reshape_init_array): Rename to... (reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS. (reshape_init): Rewrite from scratch. Split parts into... (reshape_init_array, reshape_init_vector, reshape_init_class, reshape_init_r): New functions. (check_initializer): Update call to reshape_init. Remove obsolete code. (initialize_artificial_var, cp_complete_array_type): Update to cope with VEC in CONSTRUCTOR_ELTS. * decl2.c (grokfield): Update calls to digest_init. (mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS. * error.c (dump_expr_init_vec): New function. (dump_expr): Use dump_expr_init_vec. * init.c (build_zero_init, build_vec_init): Update to cope with VEC in CONSTRUCTOR_ELTS. (expand_default_init): Update call to digest_init. * parser.c (cp_parser_postfix_expression): Use a VEC for the initializers. (cp_parser_initializer_list): Build a VEC of initializers. * pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC in CONSTRUCTOR_ELTS. * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer, ptm_initializer, class_initializer, get_pseudo_ti_init): Use build_constructor_from_list instead of build_constructor. * semantics.c (finish_compound_literal): Update call to digest_init. * tree.c (stabilize_init): Update to cope with VEC in CONSTRUCTOR_ELTS. * typeck.c (build_ptrmemfunc1): Likewise. * typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1): Likewise. (store_init_value): Use build_constructor_from_list and update call to digest_init. (digest_init): Rewrite. (process_init_constructor): Rewrite from scratch. Split into... (process_init_constructor_array, picflag_from_initializer, process_init_constructor_record, process_init_constructor_union): New functions. (PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE): New macros. (build_functional_cast): Use build_constructor_from_list instead of build_constructor. 2005-07-18 Mark Mitchell PR c++/22263 * cp-tree.h (instantiate_decl): Change prototype. * decl2.c (mark_used): Adjust accordingly. * pt.c (do_decl_instantiation): Likewise. (instantiate_class_member): Likewise. (instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p. Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template that has no definition available. (instantiate_pending_templates): Adjust call to instantiate_decl. 2005-07-17 Mark Mitchell PR c++/22139 * cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation. * decl.c (duplicate_decls): Re-register template specializations for functions that have DECL_TEMLPLATE_INFO, even if they do not have DECL_TEMPLATE_INSTANTIATION set. 2005-07-16 Kaveh R. Ghazi * call.c (diagnostic_fn_t): New. (build_temp, convert_like_real): Use diagnostic_fn_t. 2005-07-15 Mark Mitchell PR c++/22204 * repo.c (repo_emit_p): Robustify. 2005-07-14 Daniel Berlin Fix PR c++/22452 * tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL. 2005-07-15 Mark Mitchell PR c++/22132 * call.c (implicit_conversion): Add c_cast_p parameter. (standard_conversion): Likewise. Allow conversions between differently-qualified pointer types when performing a C-style cast. (add_function_candidate): Adjust callee. (build_builtin_candidate): Likewise. (build_user_type_conversion_1): Likewise. (conditional_conversion): Likewise. (can_convert_arg): Likewise. (can_convert_arg_bad): Likewise. (perform_implicit_conversion): Likewise. * cp-tree.h (comp_ptr_ttypes_const): Declare. * typeck.c (comp_ptr_ttypes_const): Give it external linkage. Return bool. 2005-07-12 Volker Reichelt Nathan Sidwell PR c++/20172 * pt.c (tsubst_template_parms): Check for invalid non-type parameters. 2005-07-09 Andrew Pinski * cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Move over to cp-objcp-common.c. (cp_init_ts): Call init_shadowed_var_for_decl. Remove include of gt-cp-cp-lang.h. * cp-objcp-common.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from cp-lang.c. (init_shadowed_var_for_decl): New function to initialize shadowed_var_for_decl. Include gt-cp-cp-objcp-common.h. * Make-lang.in (gt-cp-lang.h): Remove. (gt-cp-cp-objcp-common.h): Add. (cp/cp-lang.o): Remove dependancy on gt-cp-lang.h. (cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h. * config-lang.in (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c. * cp-tree (init_shadowed_var_for_decl): Add prototype. 2005-07-08 Daniel Berlin * Make-lang.in: Add gt-cp-lang.h. (cp-lang.o): Ditto. * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on the field. * config-lang.in: Add cp-lang.c to gtfiles. * cp-lang.c: Include hashtab.h. (cp_init_ts): New function. (LANG_HOOK_INIT_TS): Use macro. (decl_shadowed_for_var_lookup): New function. (decl_shadowed_for_var_insert): Ditto. * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common. (NON_THUNK_FUNCTION_CHECK): Ditto. (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common. (DECL_INIT_PRIORITY): Ditto. (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto. (DECL_SHADOWED_FOR_VAR): Use hashtable. (SET_DECL_SHADOWED_FOR_VAR): Ditto. * decl.c (duplicate_decls): Update for new/updated structures. (poplevel): Use SET_DECL_SHADOWED_FOR_VAR. * decl2.c (start_static_initialization_or_destruction): Deal with priority. * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing SET_DECL_RTL. * tree.c (handle_init_priority_attribute): Handle priority. 2005-07-08 Nathan Sidwell PR c++/21799 * pt.c (type_unification_real): Add is_method argument. Use it for this pointer unification. (fn_type_unification): Adjust type_unification_real call. (unify): Likewise. 2005-07-07 Nathan Sidwell * pt.c (type_unification_real): Remove allow_incomplete argument. Remove unreachable code. (fn_type_unification): Adjust call to type_unification_real. (unify): Likewise. 2005-07-05 Paolo Bonzini * Makefile.in (class.o, decl2.o): Adjust dependencies. * class.c: Include tree-dump.h. * decl2.c: Include tree-dump.h. 2005-07-02 Gabriel Dos Reis * dump.c: Use dump_string_field. 2005-07-03 Joseph S. Myers * cp-tree.h (GCC_DIAG_STYLE): #undef before defining. Change minimum GCC version for format checking to 4.1. 2005-07-02 Kazu Hirata * Make-lang.in (cc1plus-checksum.c): Use build/genchecksum$(build_exeext), not build/genchecksum$(exeext). 2005-07-02 Joseph S. Myers * name-lookup.c, parser.c: Use %q, %< and %> to quote in diagnostics. 2005-07-02 Zack Weinberg Joseph S. Myers * error.c (location_of): Add comment. (locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove. * cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove. * call.c, class.c, decl.c, decl2.c, friend.c, init.c, name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c, typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at or cp_pedwarn_at. Mark up some diagnostic strings with N_. 2005-06-30 Daniel Berlin * decl.c (require_complete_types_for_parms): Call relayout_decl instead of layout_decl. 2005-06-30 Zack Weinberg Jakub Jelinek * cp-lang.c: No need to include cxx-pretty-print.h. * error.c (cp_printer): Update signature. No need to process flags. (print_instantiation_partial_context): Output last newline with pp_base_newline. * Make-lang.in: Update dependencies. 2005-06-30 Steven Bosscher * decl.c (start_decl): Replace DECL_THREAD_LOCAL with DECL_THREAD_LOCAL_P. (cp_finish_decl): Likewise. (grokvardecl): Set the default DECL_TLS_MODEL here. 2005-06-28 Joseph S. Myers * cvt.c (ocp_convert): Use invalid_conversion hook. * typeck.c (build_binary_op): Use invalid_binary_op hook. (build_unary_op): Use invalid_unary_op hook. 2005-06-28 Paul Brook * Make-lang.in (cp/except.o): Depend on $(TARGET_H) * except.c: Include target.h. (init_exception_processing): Initialize unwind_resume_libfunc. * doc/tm.texi: Document TARGET_ASM_TTYPE 2005-06-26 Kaveh R. Ghazi * call.c (build_over_call): Pass in named argument list to `check_function_arguments'. * typeck.c (build_function_call): Likewise. 2005-06-26 Kaveh R. Ghazi * cp-tree.h (lang_check_failed): Add noreturn attribute. 2005-06-25 Kelley Cook * all files: Update FSF address in copyright headers. 2005-06-23 Jason Merrill PR c++/19317 * semantics.c (simplify_aggr_init_expr): Use CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR. 2005-06-23 Volker Reichelt * pt.c (register_specialization): Remove superfluous assertion. 2005-06-18 Kaveh R. Ghazi * call.c (convert_like_real): Add format attribute. * typeck.c (check_for_casting_away_constness, build_static_cast_1): Likewise. * typeck2.c (readonly_error, cxx_incomplete_type_diagnostic): Likewise. 2005-06-17 Geoffrey Keating PR c++/17413 * pt.c (type_unification_real): Apply template type deduction even to procedure parameters that are not dependent on a template parameter. 2005-06-16 Nathan Sidwell * rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might change. (create_pseudo_type_info): First parameter is an int. 2005-06-15 Nathan Sidwell PR c++/20678 * error.c (dump_expr) : Check DECL_NAME is not null. * Make-lang.in: Reformat some long lines. (gt-cp-rtti.h): New target. (cp/rtti.o): Add dependency. * config-lang.in (gtfiles): Add cp/rtti.c. * cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE, CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE, CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE, CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove. (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node, ary_desc_type_node, func_desc_type_node, enum_desc_type_node, class_desc_type_node, si_class_desc_type_node, vmi_class_desc_type_node, ptm_desc_type_node, base_desc_type_node): Remove. * decl.c: Adjust documentation of global trees. * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL, TINFO_REAL_NAME): Remove. (struct tinfo_s): New. (enum tinfo_kind): New. (tinfo_descs): New. (get_tinfo_decl): Adjust use of tinfo descriptor. (tinfo_base_init, generic_initializer, ptr_initializer, ptm_initializer, class_initializer): Likewise. (get_pseudo_ti_init): Take descriptor index. Adjust. (create_pseudo_type_info): Likewise. (get_pseudo_ti_desc): Return descriptor index. Adjust. (create_tinfo_types): Adjust use of create_pseudo_type_info. (emit_tinfo_decl): Adjust use of tinfo descriptor. 2005-06-14 Roger Sayle * decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST. 2005-06-13 Geoffrey Keating * Make-lang.in (c++.install-man): Doesn't really depend on installdirs. (rule for installing g++.1 manpage): Does depend on installdirs. 2005-06-13 Nathan Sidwell PR c++/20789 * decl.c (cp_finish_decl): Clear runtime runtime initialization if in-class decl's initializer is bad. PR c++/21929 * parser.c (struct cp_parser): Document that scope could be error_mark. (cp_parser_diagnose_invalid_type_name): Cope with error_mark for scope. (cp_parser_nested_name_specifier): Return NULL_TREE on error. (cp_parser_postfix_expression): Deal with null or error_mark scope. (cp_parser_elaborated_type_specifier): Adjust cp_parser_nested_name_specifier call. * parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup. 2005-06-12 Roger Sayle PR c++/21930 * error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types. Treat CONVERT_EXPR identically to NOP_EXPR. 2005-06-10 Aldy Hernandez PR c++/10611 * cvt.c (build_expr_type_conversion): Same. * typeck.c (build_binary_op): Handle vectors. (common_type): Same. (type_after_usual_arithmetic_conversions): Same. 2005-06-08 Nathan Sidwell PR c++/19497 * cp-tree.def (USING_DECL): Update documentation. * cp-tree.h (DECL_DEPENDENT_P): New. (USING_DECL_DECLS, USING_DECL_SCOPE): New. * class.c (handle_using_decl): Move most of the processing to ... * name-lookup.c (do_class_using_decl): ... here. Make stricter. (push_using_decl): Use USING_DECL_SCOPE. (cp_emit_debug_info_for_using): Make extern. * cxx-pretty-print.c (pp_cxx_statement) : Adjust. * name-lookup.h (cp_emit_debug_info_for_using): Declare. * pt.c (tsubst_decl) : Use do_class_using_decl when tsubsting. (tsubst_expr): Use USING_DECL_SCOPE. * search.c (lookup_field_1): Use DECL_DEPENDENT_P. * semantics.c (finish_member_declaration): Likewise. 2005-06-08 Volker Reichelt PR c++/19894 * pt.c (tsubst): Reject pointer-to-member of type void. PR c++/20563 * parser.c (cp_parser_label_declaration): Deal with invalid/missing identifiers. 2005-06-07 Nathan Sidwell * cp-tree.def (DEFAULT_ARG): Adjust documentation. * cp-tree.h (DEFARG_INSTANTIATIONS): New. (struct tree_default_arg): Add instantiations member. * parser.c (cp_parser_late_parsing_default_args): Adjust to use a VEC. * pt.c (tsubst_arg_types): Likewise. * parser.c (cp_parser_late_parsing_default_args): Fix overeager assert in previous patch. 2005-06-06 Jakub Jelinek * error.c (locate_error): Use gmsgid instead of msgid for argument name. (cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise. 2005-06-06 Nathan Sidwell PR 21903 * cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use. * parser.c (cp_parser_late_parsing_default_args): Propagate parsed argument to any early instantiations. * pt.c (tsubst_arg_types): Chain early instantiation of default arg. PR c++/20637 * cp-tree.h (add_method): Add using_decl parameter. * class.c (add_method): Add using_decl parameter. Adjust error messages. (handle_using_decl): Pass the using decl to add_method. (clone_function_decl): Adjust add_member calls. * decl2.c (check_classfn): Likewise. * method.c (lazily_declare_fn): Likewise. * semantics.c (finish_member_declaration): Likewise. * method.c (synthesize_method): Use inform, not warning. 2005-06-06 Hans-Peter Nilsson * config-lang.in (target_libs): Remove target-gperf. 2005-06-05 Mark Mitchell PR c++/21619 * cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro. * parser.c (cp_parser_postfix_expression): Allow non-constant expressions as arguments to __builtin_constant_p. * tree.c (builtin_valid_in_constant_expr_p): Use DECL_IS_BUILTIN_CONSTANT_P. 2005-06-03 Mark Mitchell PR c++/21853 * typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on the pointed-to type for a pointer-to-member. PR c++/21336 * cp-tree.h (grok_op_properties): Remove friendp parameter. * decl.c (grokfndecl): Adjust call. (grok_op_properties): Determine the class of which the function is a member by looking at its DECL_CONTEXT, not current_class_type. * pt.c (tsubst_decl): Adjust call to grok_op_properties. 2005-06-02 Nathan Sidwell * method.c (synthesize_method): Add addtional arg to warning call. PR c++/21280 * Make-lang.in (method.o): Add diagnostic.h * decl.c (start_preparsed_function): Use decl's location for file info. * decl2.c (cp_finish_file): Set input_location before synthesizing a function. (mark_used): When deferring a synthesized function, save current location. Do not set function's location when actually synthesizing it. * method.c: #include diagnostic.h. (synthesize_method): Set the functions source location. Show needed location if errors are emitted. * decl.c (start_decl): Simplify specialization handling. Remove unneeded CLASSTYPE_TEMPLATE_INSTANTIATION check. * mangle.c (discriminator_for_local_entity): Use VEC_index. PR c++/20350 * decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE. PR c++/21151 * name-lookup.c (pushtag): Push local class even in a template. 2005-05-31 Nathan Sidwell PR c++/21165 * init.c (integral_constant_value): Check the type of the initializer, not the decl. 2005-05-30 Mark Mitchell PR c++/21784 * name-lookup.c (do_nonmember_using_decl): Ignore builtin functions, even when the used name is not a function. 2005-05-30 Kazu Hirata * operators.def, optimize.c: Update copyright. 2005-05-28 Mark Mitchell PR c++/21210 * call.c (standard_conversion): Permit conversions to complex types if conversion to the corresponding scalar type would be permitted. PR c++/21340 * method.c (implicitly_declare_fn): Clear processing_template_decl when generating implicit declaration. 2005-05-27 Mark Mitchell PR c++/21614 * typeck.c (get_member_function_from_ptrfunc): Do not attempt conversions to base classes of incomplete types. 2005-05-27 Ian Lance Taylor * semantics.c (add_stmt): Add C++ frontend specific version. * cp-tree.h (STMT_IS_FULL_EXPR_P): Define. (stmts_are_full_exprs_p): Declare. 2005-05-27 Roger Sayle Giovanni Bajo * cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code. * parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead of CONVERT_EXPR. (cp_parser_unary_expression): Likewise. * typeck.c (build_unary_op): Likewise. * call.c (add_builtin_candidate, build_new_op): Likewise. * error.c (dump_expr): Likewise. * pt.c (tsubst_copy, tsubst_copy_and_build): Likewise. * decl.c (ambi_op_p, grok_op_properties): Likewise. * dump.c (dump_op): Likewise. * lex.c (init_operators): Likewise. * operators.def ("+"): Likewise. * cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a conversion, if the result and argument types differ. * tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much like a NOP_EXPR when !processing_template_decl. * cxx-pretty-print.c (pp_cxx_cast_expression): Prototype. (pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code. 2005-05-27 Nathan Sidwell PR c++/21455 * typeck.c (get_delta_difference): Cope with incomplete but equal classes. Reorder if. PR c++/21681 * parser.c (cp_parser_late_parsing_for_member): Disable access checking for template functions. 2005-05-26 Volker Reichelt PR c++/21768 * pt.c (redeclare_class_template): Change error message according to coding conventions. 2005-05-26 Volker Reichelt * call.c (build_op_delete_call): Fix quoting in error message. 2005-05-25 Richard Henderson PR libgcj/21692 * cp-tree.h (make_alias_for): Declare. * decl2.c (build_java_method_aliases): New. (cp_finish_file): Call it. * method.c (make_alias_for): Split out from ... (make_alias_for_thunk): ... here. 2005-05-25 Volker Reichelt PR c++/21686 * semantics.c (finish_id_expression): Fix quoting in error message. 2005-05-25 DJ Delorie * decl.c (duplicate_decls): Move warning control from if() to warning(OPT_*). * name-lookup.c (parse_using_directive): Likewise. * parser.c (cp_parser_elaborated_type_specifier): Likewise. (cp_parser_init_declarator): Likewise. * tree.c (handle_com_interface_attribute): Likewise. 2005-05-24 Ziemowit Laski * class.c (layout_class_type): Do not issue C++ ABI warnings for ObjC structs. * decl.c (objc_mark_locals_volatile): Streamline by calling objc_volatilize_decl(). * parser.c (cp_parser_objc_message_expression): Allow simple type specifiers (instead of merely type names) as message receivers. * pt.c (template_args_equal): Do not call objc_comptypes(). * typeck.c (composite_pointer_type): If both pointers are ObjC-esque, arbitrarily choose the first; do not call objc_comptypes(). (comptypes): Do not call objc_comptypes(). (convert_for_assignment): Call objc_compare_types(). (comp_ptr_ttypes_real): Call objc_type_quals_match() before concluding that types do not match. 2005-05-24 Andrew Pinski PR C++/21645 * optimize.c (update_cloned_parm): Copy the TYPE also from the original one. 2005-05-19 Jakub Jelinek PR c++/21495 * decl.c (grokdeclarator): Fix "storage class specified for" error reporting. 2005-05-19 Kazu Hirata * parser.c: Fix comment typos. 2005-05-18 Geoffrey Keating * Make-lang.in (cc1plus-dummy): New. (cc1plus-checksum.c): New. (cc1plus-checksum.o): New. (cc1plus): Add cc1plus-checksum.o. 2005-05-17 H.J. Lu PR C++/19664 * decl2.c (determine_visibility): Don't set visibility to hidden if it has been set explicitly by user. 2005-05-17 Ziemowit Laski Mike Stump Yet more Objective-C++... * cp-objcp-common.h (cxx_get_alias_set): Move from here... (cxx_warn_unused_global_decl): Likewise. (cp_expr_size): Likewise. (cp_tree_size): Likewise. (cp_var_mod_type_p): Likewise. (cxx_initialize_diagnostics): Likewise. (cxx_types_compatible_p): Likewise. * cp-tree.h: to here. (do_poplevel): Add. * lex.c (D_OBJC): Add. (init_reswords): Add. * Make-lang.in (cp/pt.o): Add cp/cp-objcp-common.h. * parser.c: Add c-common.h include. * pt.c: Add c-common.h and cp-objcp-common.h includes. (template_args_equal): Use objc_comptypes as well. (tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well. * semantics.c (do_poplevel): Remove static. * decl.c (objc_mark_locals_volatile): Don't change decls that are already ok. * decl2.c (generate_ctor_or_dtor_function): Add code to initialize Objective C++ early enough. * lex.c (struct resword reswords): Add Objective-C++ support. * parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++. (cp_parser_objc_message_receiver): Add. (cp_parser_objc_message_args): Likewise. (cp_parser_objc_message_expression): Likewise. (cp_parser_objc_encode_expression): Likewise. (cp_parser_objc_defs_expression): Likewise. (cp_parser_objc_protocol_expression): Likewise. (cp_parser_objc_selector_expression): Likewise. (cp_parser_objc_expression): Likewise. (cp_parser_objc_visibility_spec): Likewise. (cp_parser_objc_method_type): Likewise. (cp_parser_objc_protocol_qualifiers): Likewise. (cp_parser_objc_typename): Likewise. (cp_parser_objc_selector_p): Likewise. (cp_parser_objc_selector): Likewise. (cp_parser_objc_method_keyword_params): Likewise. (cp_parser_objc_method_tail_params_opt): Likewise. (cp_parser_objc_interstitial_code): Likewise. (cp_parser_objc_method_signature): Likewise. (cp_parser_objc_method_prototype_list): Likewise. (cp_parser_objc_method_definition_list): Likewise. (cp_parser_objc_class_ivars): Likewise. (cp_parser_objc_identifier_list): Likewise. (cp_parser_objc_alias_declaration): Likewise. (cp_parser_objc_class_declaration): Likewise. (cp_parser_objc_protocol_declaration): Likewise. (cp_parser_objc_protocol_refs_opt): Likewise. (cp_parser_objc_superclass_or_category): Likewise. (cp_parser_objc_class_interface): Likewise. (cp_parser_objc_class_implementation): Likewise. (cp_parser_objc_end_implementation): Likewise. (cp_parser_objc_declaration): Likewise. (cp_parser_objc_try_catch_finally_statement): Likewise. (cp_parser_objc_synchronized_statement): Likewise. (cp_parser_objc_throw_statement): Likewise. (cp_parser_objc_statement): Likewise. (cp_parser_primary_expression): Add Objective-C++. (cp_parser_statement): Likewise. (cp_parser_declaration): Likewise. (cp_parser_simple_type_specifier): Likewise. (cp_parser_type_name): Likewise. (cp_parser_parameter_declaration_list): Likewise. (cp_parser_member_declaration) Likewise. * tree.c: Include debug.h. * typeck.c (composite_pointer_type): Add Objective-C++ support. (finish_class_member_access_expr): Likewise. (build_function_call): Allow objc to rewrite FUNCTION_DECLs. (build_modify_expr): Allow objc to generate write barriers. * Make-lang.in (cp/tree.o): Add debug.h. * tree.c (lvalue_p_1, case CONST_DECL): Add. 2005-05-18 Jan Hubicka * method.c: Include tree-pass.h (use_thunk): Lower body before expanding. 2005-05-17 Jakub Jelinek PR c++/21454 * decl.c (maybe_deduce_size_from_array_init): Call cp_apply_type_quals_to_decl after completing array type. 2005-05-16 Richard Henderson * decl.c (build_library_fn_1): Move setting TREE_NOTHROW ... (build_library_fn): ... here. 2005-05-12 Ian Lance Taylor * cp-tree.h (cp_stmt_codes): Don't define. (statement_code_p): Declare. (STATEMENT_CODE_P): Define. * lex.c (statement_code_p): Define. (cxx_init): Use actual codes in stmt_codes initializer, not cp_stmt_codes macro. Initialize statement_code_p directly, rather than using INIT_STATEMENT_CODES. 2005-05-09 Mark Mitchell * typeck.c (build_unary_op): Do not resort to address arithmetic when taking the address of a COMPONENT_REF. 2005-05-08 Kazu Hirata * class.c (vtbl_init_data_s): Change the type of fns to VEC(tree,gc)*. (build_vtbl_initializer, add_vcall_offset, add_vcall_offset): Use VEC instead of VARRAY. 2005-05-07 Richard Sandiford * mangle.c: Remove a reference to the MIPS -mint64 option. 2005-05-07 Kazu Hirata * decl.c (wrapup_globals_for_namespace): Use VEC instead of VARRAY. * name-lookup.c (add_decl_to_level, begin_scope): Likewise. * name-lookup.h (cp_binding_level): Change the type of static_decls to VEC(tree,gc)*. * mangle.c (globals): Change the type of substitutions to VEC(tree,gc)*. (dump_substitution_candidates, add_substitution, find_substitution, finish_mangling, init_mangle): Use VEC instead of VARRAY. 2005-05-06 Kazu Hirata * decl2.c (spew_debug): Remove. * decl2.c (ssdf_decls, start_static_storage_duration_function, generate_ctor_or_dtor_function): Use VEC instead of VARRAY. * decl2.c (pending_statics, note_vague_linkage_var, cp_finish_file): Use VEC instead of VARRAY. (pending_statics_used): Remove. 2005-05-05 Kazu Hirata * decl2.c (deferred_fns, note_vague_linkage_fn, cp_finish_file): Use VEC instead of VARRAY. 2005-05-05 Mark Mitchell PR c++/21352 * pt.c (build_non_dependent_expr): Use is_overloaded_fn. 2005-05-05 Kazu Hirata * pt.c: Fix a comment typo. 2005-05-04 Kazu Hirata * cp-tree.h (language_function): Change the type of x_local_names to VEC. * decl.c (push_local_name): Adjust uses of local_names. 2005-05-03 Kazu Hirata * friend.c, lex.c, mangle.c, repo.c: Update copyright. 2005-05-02 Kazu Hirata * class.c (local_classes, init_class_processing): Use VEC instead of VARRAY. * cp-tree.h (local_classes): Likewise. * mangle.c (discriminator_for_local_entity): Likewise. * name-lookup.c (pushtag): Likewise. * class.c (current_lang_depth, push_lang_context, pop_lang_context): Use VEC instead of VARRAY. * cp-tree.h (saved_scope): Use VEC for lang_base instead of VARRAY. * name-lookup.c (push_to_top_level): Use VEC instead of VARRAY. 2005-05-02 Paolo Bonzini * semantics.c (finish_call_expr): Call resolve_overloaded_builtin for BUILT_IN_MD built-ins. 2005-05-02 Michael Matz PR c++/19542 * cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C common frontend. (null_node): Remove. * lex.c (cxx_init): Move null_node initialisation to C common frontend. 2005-04-25 Ian Lance Taylor * cp-tree.def: Add EXPR_STMT. * cp-tree.h (cp_stmt_codes): Add EXPR_STMT. (EXPR_STMT_EXPR): Define. * cp-gimplify.c: Include "flags.h". (gimplify_expr_stmt): New static function. (cp_gimplify_expr): Handle EXPR_STMT. * cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression rather than pp_expression. (pp_cxx_statement): Handle EXPR_STMT. * dump.c (cp_dump_tree): Handle EXPR_STMT. * lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes initializer. 2005-04-25 Andrew Pinski PR C++/21188 * rtti.c (ifnonnull): Cast the zero comparison operand to the correct type. 2005-04-24 Jakub Jelinek PR middle-end/20991 * class.c: Include cgraph.h. (cp_fold_obj_type_ref): Set node->local.vtable_method. * Make-lang.in (cgraph.o): Depend on $(CGRAPH_H). 2005-04-12 Markus F.X.J. Oberhumer * mangle.c (write_builtin_type): Handle integer types which are not one of the shared integer type nodes and emit a "vendor extended builtin type" with an encoding in the form of "u5int96". 2005-04-24 Ian Lance Taylor * cp-tree.def (USING_STMT): Change class to tcc_statement. (TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise. (IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise. (BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise. 2005-04-23 DJ Delorie * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c, init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c, repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning() callers. 2005-04-22 Per Bothner * decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__. 2005-04-22 Alexandre Oliva PR c++/21087 * name-lookup.c (push_overloaded_decl): Do not overload with non-duplicate anticipated built-in. 2005-04-21 Kazu Hirata * cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT, VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove. 2005-04-21 Nathan Sidwell * cp-tree.h: Adjust for new VEC API. Define VEC(tree_pair_s,gc). (struct save_scope): Adjust. (struct lang_type_class): Adjust. (unemitted_tinfo_decls): Adjust. * class.c (add_method, resort_type_method_vec, finish_struct_methods, struct find_final_overrider_data, dfs_find_final_overrider_pre, find_final_overrider, get_vcall_index, warn_hidden, walk_subobject_offsets, check_methods, fixup_inline_methods, end_of_class, warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer, add_vcall_offset): Adjust. * decl.c (xref_basetypes, finish_method): Adjust. * decl2.c (check_classfn): Adjust. * init.c (sort_mem_initializers, push_base_cleanups): Adjust. * method.c (do_build_copy_constructor): Adjust. * name-lookup.c (new_class_binding, store_binding, store_bindings, store_class_bindings): Adjust. * name-lookup.h: Define VEC(cxx_saved_binding,gc), VEC(cp_class_binding,gc). (struct cp_binding_level): Adjust. * parser.c: Define VEC(cp_token_position,heap). (struct cp_lexer): Adjust. (cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy, cp_lexer_save_tokens): Adjust. * pt.c (retrieve_specialization, check_explicit_specialization): Adjust. * rtti.c (unemitted_tinfo_decls): Adjust. (init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init, get_pseudo_ti_desc): Adjust. * search.c (dfs_access_in_type, lookup_conversion_operator, lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible, dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust. * semantics.c: Define VEC(deferred_access,gc). (push_deferring_access_checks): Adjust. * typeck2.c (abstract_virtuals_error): Adjust. 2005-04-20 Ian Lance Taylor * cp-tree.def: Add STMT_EXPR. * cp-tree.h (STMT_EXPR_NO_SCOPE): Define. (STMT_EXPR_STMT): Define. * cxx-pretty-print.c (pp_cxx_primary_expression): Handle STMT_EXPR. (pp_cxx_expression): Likewise. (pp_cxx_statement): Call pp_cxx_statement, not pp_statement. * dump.c (cp_dump_tree): Handle STMT_EXPR. 2005-04-18 Kazu Hirata * decl.c (expand_static_init): Call build2 and build3 instead of build. * cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove. 2005-04-17 Ian Lance Taylor * cp-tree.def: Add SIZEOF_EXPR, ARROW_EXPR and ALIGNOF_EXPR. * cxx-pretty-print.c (pp_cxx_postfix_expression): Handle ARROW_EXPR. (pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR. (pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and ALIGNOF_EXPR. * typeck.c (cxx_sizeof_or_alignof_type): Update call to c_sizeof_or_alignof_type for change in parameter type. 2005-04-16 Mark Mitchell PR c++/21025 * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to which sizeof/alignof is dependent, rather than just whether we are processing_template_decl. 2005-04-17 Kazu Hirata * cp-tree.h (LOOKUP_GLOBAL): Remove. (LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION, LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust their values. 2005-04-15 Richard Henderson PR middle-end/14311 * semantics.c (finish_call_expr): Call resolve_overloaded_builtin. 2005-04-15 Kazu Hirata * cp-tree.h (lang_type_class): Remove redefined. Move java_interface into where redefined was. Increment the width of dummy. (TYPE_REDEFINED): Remove. 2005-04-14 Kazu Hirata * cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS, CLASSTYPE_TEMPLATE_LEVEL): Remove. 2005-04-11 Mark Mitchell * decl2.c (determine_visibility): Don't use export_class_data. (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY. 2005-04-09 Kazu Hirata * cp-tree.h (cxx_alignof): Remove. * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove. * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST, CONV_STATIC_CAST): Remove. * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove. * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove. * cp-tree.h (cp_deprecated): Remove. 2005-04-08 Ian Lance Taylor * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT, CONTINUE_STMT, SWITCH_STMT. * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT, CONTINUE_STMT, SWITCH_STMT. (WHILE_COND, WHILE_BODY): Define. (DO_COND, DO_BODY): Define. (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define. (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define. * cp-gimplify.c (enum bc_t): Define. (struct cp_gimplify_ctx, ctxp): Define. (push_context, pop_context): New static functions. (begin_bc_block, finish_bc_block): New static functions. (build_bc_goto): New static function. (gimplify_cp_loop, gimplify_for_stmt): New static functions. (gimplify_while_stmt, gimplify_do_stmt): Likewise. (gimplify_switch_stmt): Likewise. (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT, SWITCH_STMT, CONTINUE_STMT, BREAK_STMT. (cp_genericize): Call push_context and pop_context. * semantics.c (finish_break_stmt): Just call build_stmt (BREAK_STMT) rather than build_break_stmt. (finish_continue_stmt): Corresponding change. * decl.c (pop_switch): Update call to c_do_switch_warnings for new parameters. * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT, WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT. * dump.c (cp_dump_tree): Likewise. 2005-04-08 Mark Mitchell PR c++/20905 * parser.c (cp_parser_type_specifier_seq): Add is_condition parameter. (cp_parser_new_type_id): Pass it. (cp_parser_condition): Likewise. (cp_parser_conversion_type_id): Likewise. (cp_parser_type_id): Likewise. (cp_parser_type_specifier_seq): In a condition, do not allow invalid type-specifier combinations. (cp_parser_exception_declaration): Adjust call to cp_parser_type_specifier_seq. * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P. * cp-tree.h (struct tinst_level): Add in_system_header_p. (TINST_IN_SYSTEM_HEADER_P): New macro. (make_tinst_level): Remove. * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on the instantiated class. (push_tinst_level): Do not use make_tinst_level. Set TINST_IN_SYSTEM_HEADER_P. (pop_tinst_level): Likewise. (instantiate_class_template): Set in_system_header. (instantiate_pending_templates): Likewise. * tree.c (make_tinst_level): Remove. 2005-04-06 Joseph S. Myers * decl.c (start_decl): Apply pending #pragma weak regardless of scope. 2005-04-06 Mark Mitchell PR c++/20212 * pt.c (regenerate_decl_from_template): Copy attributes for parameters from the pattern to the instantiation. 2005-04-05 Mark Mitchell PR c++/20734 * cp-tree.def (OFFSET_REF): Correct comments. * init.c (build_offset_ref): Remove misleading comment. * typeck.c (build_unary_op): Handle pointer-to-member creation here, rather than ... (unary_complex_lvalue): ... here. 2005-04-06 Jason Merrill PR c++/19312 * tree.c (stabilize_init): Don't bother trying to stabilize something with no side-effects. 2005-04-05 Mark Mitchell PR c++/20763 * decl.c (grokdeclarator): Correct attribute handling. 2005-04-05 Mark Mitchell PR c++/19159 * decl2.c (import_export_decl): Use non-COMDAT external linkage for virtual tables, typeinfo, etc. that will be emitted in only one translation unit on systems without weak symbols. 2005-04-04 Mark Mitchell PR c++/20679 * parser.c (cp_parser_template_name): Fix thinko. 2005-04-04 Nathan Sidwell PR c++/20746 * method.c (use_thunk): Protect covariant pointer return adjustments from NULL pointers. 2005-04-04 Jan Hubicka * decl2.c (finish_objects): Revert my previous patch. (cp_finish_file): Likewise. 2005-04-03 Kazu Hirata * pt.c: Fix comment typos. 2005-04-03 Nathan Sidwell PR c++/20723 * pt.c (more_specialized_fn): Member functions are unordered wrt non-members. Conversion operators are unordered wrt other functions. 2005-04-01 Nathan Sidwell * call.c (add_template_candidates_real): Remove length parameter from fn_type_unification call. * class.c (resolve_address_of_overloaded_function): Likewise * cp-tree.h (fn_type_unification): Remove length parameter. * pt.c (get_bindings_overload): Remove. (get_bindings_real): Rename to ... (get_bindings): ... here. Remove length and strict parameters. Change return type flag to boolean. Remove original forwarding function. (determine_specialization): Adjust get_bindings call. (fn_type_unification): Remove length parameter. Adjust. (type_unification_real): Remove length parameter. Adjust. (resolve_overloaded_unification): Adjust get_bindings call. (try_one_overload): Simplify confusing cascaded if control flow. (unify): Remove length paramter from type_unification_real call. (most_specialized_instantiation): Adjust get_bindings calls. (most_specialized): Likewise. 2005-03-31 Nathan Sidwell PR c++/19203, implement DR 214 * call.c (joust): Use more_specialized_fn. * cp-tree.h (DEDUCE_ORDER): Remove. (more_specialized): Replace with ... (more_specialized_fn): ... this. * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER case. (type_unification_real): Remove DEDUCE_ORDER case. (more_specialized): Replace with ... (more_specialized_fn): ... this. Implement DR 214. (most_specialized_instantiation): Use get_bindings_real directly. 2005-03-31 Gabriel Dos Reis PR c++/18644 * call.c (build_new_op): Remove check for -Wsynth. 2005-03-31 Jan Hubicka * decl2.c (finish_objects): Mark ctor as needed. (cp_finish_file): Output variables only in nonunit-at-a-time. 2005-03-29 Richard Henderson PR c/20519 * decl.c (cp_complete_array_type): Rename from complete_array_type. Use the new complete_array_type in c-common.c. Update all callers. * cp-tree.h (cp_complete_array_type): Update to match. 2005-03-24 Geoffrey Keating * typeck.c (build_static_cast_1): Allow scalar_cast between any integral, floating, or enumeration type. 2005-03-24 Steven Bosscher * typeck.c (comptypes): First determine if the types are compatible from a target-independent point of view. Check target attributes last. * class.c (build_base_path): (build_vbase_offset_vtbl_entries): (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN. * error.c (dump_expr): Likewise. * init.c (build_zero_init, expand_cleanup_for_base, build_vec_delete_1): Likewise. * mangle.c (write_integer_cst): Likewise. * method.c (thunk_adjust): Likewise. * pt.c (convert_nontype_argument, tsubst, unify): Likewise. * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise. * typeck.c (build_ptrmemfunc_access_expr, (get_member_function_from_ptrfunc): Likewise. 2005-03-23 Joseph S. Myers * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove. 2005-03-23 Joseph S. Myers * cp-tree.h (perform_integral_promotions): Remove. (default_conversion): Add. 2005-03-22 Mark Mitchell * parser.c (cp_parser_warn_min_max): New function. (cp_parser_binary_expression): Use it. (cp_parser_assignment_operator_opt): Likewise. (cp_parser_operator): Likewise. 2005-03-22 Volker Reichelt PR c++/19980 * decl.c (start_preparsed_function): Robustify. 2005-03-22 Volker Reichelt PR c++/20499 * parser.c (cp_parser_class_head): Return NULL_TREE when encountering a redefinition. 2005-03-22 Nathan Sidwell PR c++/20465 PR c++/20381 * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a template. 2005-03-21 Paolo Carlini PR c++/20461 PR c++/20536 * init.c (emit_mem_initializers): Don't crash on undefined types. 2005-03-21 Paolo Carlini PR c++/20147 * semantics.c (finish_stmt_expr_expr): Return immediately if error_operand_p (expr). 2005-03-21 Joseph S. Myers * cp-tree.h (lvalue_or_else, lvalue_p): New. * typeck.c (lvalue_or_else): New. Call lvalue_error. 2005-03-19 Kriang Lerdsuwanakij PR c++/20240 * decl.c (decls_match): Compare context of VAR_DECL. 2005-03-19 Kriang Lerdsuwanakij PR c++/20333 * parser.c (cp_parser_postfix_expression) : Check the return value of cp_parser_nested_name_specifier. 2005-03-18 Dale Johannesen * cp/tree.c (cp_tree_equal): Handle SSA_NAME. 2005-03-18 Paolo Carlini PR c++/20463 * parser.c (cp_parser_diagnose_invalid_type_name): Check TYPE_BINFO (current_class_type) before attempting to emit inform messages. 2005-03-17 Paolo Carlini PR c++/19966 * cp-tree.h (grok_op_properties): Change return type to void. * decl.c (grok_op_properties): Return early - don't check the arity - in case of a static member or an operator that cannot be non-member; tidy a bit. 2005-03-17 Nathan Sidwell PR c++/20186 * pt.c (contains_dependent_cast_p): Remove. (fold_non_dependent_expr): Don't use it. (value_dependent_expression_p): Use a switch statement. reference_exprs can be dependent. 2005-03-14 Kriang Lerdsuwanakij PR c++/4403 PR c++/9783, DR433 * name-lookup.c (pushtag): Skip template parameter scope when scope is ts_global. Don't push tag into template parameter scope. * pt.c (instantiate_class_template): Reorder friend class template substitution to handle non-dependent friend class that hasn't been previously declared. 2005-03-14 Kriang Lerdsuwanakij Friend class name lookup 5/n PR c++/1016 * cp-tree.h (pushtag): Adjust declaration. * decl.c (lookup_and_check_tag): Call lookup_type_scope if lookup_name fails. (xref_tag): Adjust call to pushtag. Make hidden class visible. (start_enum): Adjust call to pushtag. * name-lookup.c (ambiguous_decl): Ignore hidden names. (qualify_lookup): Change return type to bool. (hidden_name_p): New function. (lookup_namespace_name, unqualified_namespace_lookup, lookup_name_real): Use it. (lookup_type_scope): Update comments. (maybe_process_template_type_declaration): Change parameter name from globalize to is_friend. (pushtag): Change globalize parameter of type int to tag_scope. Hide name if introduced by friend declaration. * name-lookup.h (hidden_name_p): Add declaration. * parser.c (cp_parser_lookup_name): Don't deal with hidden name here. * pt.c (push_template_decl_real): Make hidden class template visible. (lookup_template_class, instantiate_class_template): Adjust call to pushtag. * semantics.c (begin_class_definition): Likewise. * rtti.c (init_rtti_processing, build_dynamic_cast_1, tinfo_base_init, emit_support_tinfos): Use ts_current instead of ts_global. 2005-03-13 Mark Mitchell PR c++/20157 * pt.c (determine_specialization): Reject non-specializations. 2005-03-11 Per Bothner * cp-tree.h (struct cp_declarator): New id_loc field. * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's location using c_lex_with_flags, instead of input_location. (cp_parser_direct_declarator): Set declarator's id_loc from cp_token's id_loc. 2005-03-10 Jakub Jelinek PR c++/18384, c++/18327 * decl.c (reshape_init_array): Use UHWI type for max_index_cst and index. Convert max_index to size_type_node if it isn't host_integerp (, 1). 2005-03-09 Mark Mitchell PR c++/20208 * pt.c (tsubst_decl): Apply array-to-pointer and function-to-pointer conversions to function arguments. (regenerate_decl_from_template): Likewise. 2005-03-09 Paolo Carlini PR c++/16859 * decl.c (complete_array_type): In pedantic mode, return 3 for an empty initializer list as the initializer for an array of unknown bound (8.5.1/4). (maybe_deduce_size_from_array_init): Fix final test to use the above. 2005-03-08 Nathan Sidwell PR c++/20186 * pt.c (contains_dependent_cast_p): New. (fold_non_dependent_expr): Call it. 2005-03-08 Mark Mitchell PR c++/20142 * cp-tree.h (target_type): Remove. * decl.c (layout_var_decl): Remove #if 0'd code. (cp_finish_decl): Remove dead code. * init.c (build_vec_init): When determining whether or not the element type has an asignment operator, look through all array dimensions. * typeck.c (target_type): Remove. 2005-03-07 Mark Mitchell * class.c (finish_struct_1): Do not warn about non-virtual destructors in Java classes. 2005-03-05 Kriang Lerdsuwanakij PR c++/19311 * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF. * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR for OFFSET_TYPE. * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF. Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR. (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside template. 2005-03-02 Alexandre Oliva * name-lookup.c (push_overloaded_decl): Don't error if the new decl matches the old one. * decl.c (redeclaration_error_message): Likewise. 2005-03-01 Per Bothner * decl.c (finish_function): Use SET_EXPR_LOCATION instead of unavailable annotate_with_file_line, if USE_MAPPED_LOCATION. 2005-03-01 Nathan Sidwell PR c++/20232 * class.c (update_vtable_entry_for_fn): Don't crash on invalid covariancy. * cp-tree.g (THUNK_TARGET): Expand comment. * method.c (use_thunk): Make sure we also use the target, if that is a thunk. 2005-02-27 Jakub Jelinek PR c++/20206 * decl.c (cxx_comdat_group): Put thunks for TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same comdat group as the thunk target. 2005-02-24 Volker Reichelt * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c, parser.c: Fix comment typo(s). 2005-02-24 Jakub Jelinek PR c++/20175 * decl.c (reshape_init): Don't warn about missing braces if STRING_CST initializes a char/wchar_t array. 2005-02-23 Mark Mitchell PR c++/19878 * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations with internal linkage. 2005-02-23 Alexandre Oliva * decl.c (grokvardecl): Don't exempt anonymous types from having linkage for variables that have linkage other than "C". 2005-02-23 Kazu Hirata * cp-objcp-common.h, error.c: Update copyright. 2005-02-22 Mark Mitchell PR c++/20073 * decl.c (start_decl_1): Don't clear TREE_READONLY. (cp_finish_decl): Likewise. (complete_vars): Call cp_apply_type_quals_to_decl. * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in cases where that's not valid. PR c++/19991 * init.c (integral_constant_value): Iterate if the value of a decl is itself a constant. PR c++/20152 * parser.c (cp_parser_class_head): Check for redefintions here. * semantics.c (begin_class_definition): Not here. PR c++/20153 * decl2.c (build_anon_union_vars): Add type parameter. (finish_anon_union): Pass it. PR c++/20148 * error.c (dump_expr): Do not print the body of a BIND_EXPR. Handle STATEMENT_LIST. PR c++/19883 * parser.c (cp_parser_direct_declarator): Always complain about non-constant array bounds when in a function scope. * semantics.c (finish_id_expression): Do not mark dependent names as non-constant. 2005-02-21 Douglas Gregor PR c++/19076 PR c++/6628 * cp-tree.h (cp_apply_type_quals_to_decl): Declared. * decl.c (grokdeclarator): Pedwarn about qualifying a function type. Add qualifiers when declaring a typedef of a function type. Member function pointers pick up the qualifiers of the typedef used to declare them. Don't complain about creating cv-qualified function types. Complain about qualified function typedefs that are used to declare non-static member functions or free functions. Use cp_apply_type_quals_to_decl. (start_preparsed_function): Use cp_apply_type_quals_to_decl. (grokclassfn): Use cp_apply_type_quals_to_decl. * error.c (dump_type_suffix): Print qualifiers for function types. * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl. (tsubst): When substituting a function type into a member pointer type, pass along the qualifiers. (unify): Unify member pointers to member function pointers. * tree.c (cp_build_qualified_type_real): Function types may be qualified. This includes restrict qualifiers. * typeck.c (cp_apply_type_quals_to_decl): New function to replace use of c_apply_type_quals_to_decl. Drops qualifiers that are being added to function types. 2005-02-20 Zack Weinberg PR 18785 * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to c_common_to_target_charset. Delete bogus comment. 2005-02-18 Richard Henderson PR libstdc++/10606 * except.c (do_get_exception_ptr): New. (expand_start_catch_block): Use it. 2005-02-19 Jakub Jelinek * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING if type is not error_mark_node. 2005-01-20 Giovanni Bajo PR c++/19508 * decl2.c (grokfield): Do not apply attributes to template parameters as they are ignored by tsubst anyway. 2005-02-18 Jakub Jelinek PR c++/19813 * decl.c (start_decl_1): Clear TREE_READONLY flag if its type has TYPE_NEEDS_CONSTRUCTING. (complete_vars): Likewise. 2005-02-17 Alexandre Oliva PR c++/20028 * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a template along with TYPE_SIZE. PR c++/20022 * semantics.c (perform_deferred_access_checks): Use get_deferred_access_checks to get the top of the stack. 2005-02-15 Alexandre Oliva PR c++/17788 * class.c (add_implicitly_declared_members, check_field_decl) (check_field_decls, check_bases): Remove arguments, tests and assignments of cant_have_default_ctor-related variables. 2005-02-15 Alexandre Oliva * decl2.c (mark_used): Set the source location of the used decl to the current input location here... * method.c (synthesize_method): ... not here. Set input_location from the decl instead. 2005-02-14 Nathan Sidwell PR c++/19608 * parser.c (cp_parser_late_parsing_for_member): Use current_function_decl as scope to push to and from. PR c++/19884 * pt.c (check_explicit_specialization): Make sure namespace binding lookup found an overloaded function. (lookup_template_function): Just assert FNS is an overloaded function. PR c++/19895 * decl.c (grokdeclarator): Check for error mark node in ptrmem construction. 2005-02-14 Alexandre Oliva PR c++/17816 * decl.c (redeclaration_error_message): Report redefinition of pure virtual function. 2005-02-14 Nathan Sidwell PR c++/19891 * class.c (build_simple_base_path): Build the component_ref directly. (update_vtable_entry_for_fn): Walk the covariant's binfo chain rather than using lookup_base. * search.c (dfs_walk_once): Add non-recursive assert check. * typeck.c (build_class_member_access_expr): It is possible for the member type to be both const and volatile. 2005-02-12 Kriang Lerdsuwanakij PR c++/14479 PR c++/19487 * pt.c (maybe_check_template_type): Remove. * cp-tree.h (maybe_check_template_type): Remove prototype. * name-lookup.c (maybe_process_template_type_declaration): Don't use maybe_check_template_type. 2005-02-11 Richard Henderson PR c++/19632 * pt.c (get_mostly_instantiated_function_type): Save and restore flag_access_control instead of push/pop_access_scope. 2005-02-10 Mark Mitchell PR c++/19755 * decl.c (reshape_init): Issue warnings about missing braces. 2005-02-11 Kazu Hirata * cp-tree.def, except.c, ptree.c: Update copyright. 2005-02-09 Mark Mitchell PR c++/19811 * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before attempting name lookup. * parser.c (cp_parser_unqualified_id): Initialize type_decl. PR c++/19787 * call.c (initialize_reference): Robustify. PR ++/19732 * decl.c (grokdeclarator): Check for invalid use of destructor names. PR c++/19762 * parser.c (cp_parser_unqualified_id): Avoid creating destructor names with invalid types. PR c++/19826 * parser.c (cp_parser_direct_declarator): Allow type-dependent expressions as array bounds. PR c++/19739 * parser.c (cp_parser_attributes_list): Allow empty lists. 2005-02-08 Mark Mitchell PR c++/19733 * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR. (check_bases): Give warnings about a base class with a non-virtual destructor, even if it is implicit. (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR. (maybe_warn_about_overly_private_class): Don't use TYPE_HAS_DESTRUCTOR. (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR. (check_for_override): Give it external linkage. (add_implicitly_declared_members): Generate destructors lazily. (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not TYPE_HAS_DESTRUCTOR. (check_bases_and_members): Call check_methods before check_field_decls. (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not TYPE_HAS_DESTRUCTOR. (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR. * cp-tree.def (PSEUDO_DTOR_EXPR): Document. * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove. (lang_type_class): Add lazy_destructor. (CLASSTYPE_LAZY_DESTRUCTOR): New macro. (CLASSTYPE_DESTRUCTORS): Robustify. (TYPE_HAS_DESTRUCTOR): Remove. (check_for_override): Declare. (build_vbase_delete): Remove. * cvt.c (convert_to_void): Issue errors about pseudo-destructor expressions. * decl.c (cxx_maybe_build_cleanup): Remove dead code. * except.c (dtor_nothrow): Lazily create destructors if necessary. (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR. * init.c (build_delete): Lazily create destructors, if necessary. (build_vbase_delete): Remove. * method.c (locate_dtor): Simplify. (implicitly_declare_fn): Add support for destructors. * parser.c (cp_parser_lookup_name): Lazily create destructors, if necessary. * pt.c (check_explicit_specialization): Don't use TYPE_HAS_DESTRUCTOR. (instantiate_class_template): Likewise. * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR. * rtti.c (emit_support_tinfos): Robustify. * search.c (lookup_fnfields_1): Lazily create destructors. * typeck.c (build_class_member_access_expr): Remove PSEUDO_DTOR_EXPR handling. (lookup_destructor): Likewise. 2005-02-08 Kazu Hirata * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update copyright. 2005-02-07 Mark Mitchell * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations on boolean variables. (cp_lexer_stop_debugging): Likewise. 2005-02-03 Giovanni Bajo PR c++/17401 * parser.c (cp_parser_pure_specifier): Emit a specific error message with an invalid pure specifier. * decl2.c (grok_function_init): Remove. (grokfield): An initializer for a method is a always a pure specifier. 2005-02-02 Matt Austern PR c++/19628 * cp-tree.h (builtin_valid_in_constant_expr_p): Declare. * parser.c (cp_parser_postfix_expression): Accept function call in constant expression if builtin_valid_in_constant_expr_p is true for that function. * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly. * semantics.c (finish_id_expression): Accept function call in constant expression if builtin_valid_in_constant_expr_p is true for that function. * tree.c (builtin_valid_in_constant_expr_p): New. 2005-02-02 Volker Reichelt PR c++/17413 * pt.c (check_instantiated_args): Improve error message. Fix logic when to print its second part. 2005-02-02 Volker Reichelt * cp-tree.h (complete_type_or_else): Remove macro. (complete_type_or_diagnostic): Rename to complete_type_or_else and remove last argument. * typeck.c (complete_type_or_diagnostic): Rename to complete_type_or_else and remove last argument. 2005-02-02 Volker Reichelt * cp-tree.h (commonparms): Remove prototype. (convert_arguments): Likewise. (PFN_FROM_PTRMEMFUNC): Remove. * typeck.c (commonparms): Make static. (convert_arguments): Add prototype. Make static. (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc. 2005-01-31 Mark Mitchell * parser.c (cp_parser_primary_expression): Don't complain about floating-point literals in integral constant expressions when !pedantic. 2005-02-01 Alexandre Oliva * parser.c (cp_parser_template_id): Revert comment patch too. PR c++/18757 PR c++/19366 PR c++/19499 * parser.c (cp_parser_template_id): Revert 2004-12-09's patch. Issue an error when creating the template id. * pt.c (fn_type_unification): Return early if the explicit template arg list is an error_mark_node. 2005-01-31 Mark Mitchell * decl.c (build_enumerator): Do not issue duplicate error messages about invalid enumeration constants. * parser.c (cp_parser_non_integral_constant_expression): Always set parser->non_integral_constant_expression_p. (cp_parser_primary_expression): Add cast_p parameter. Issue errors about invalid uses of floating-point literals in cast-expressions. (cp_parser_postfix_expression): Add cast_p parameter. (cp_parser_open_square_expression): Pass it. (cp_parser_parenthesized_expression_list): Add cast_p parameter. (cp_parser_unary_expression): Likewise. (cp_parser_new_placement): Pass it. (cp_parser_direct_new_declarator): Likewise. (cp_parser_new_initializer): Likewise. (cp_parser_cast_expression): Add cast_p parameter. (cp_parser_binary_expression): Likewise. (cp_parser_question_colon_clause): Likewise. (cp_parser_assignment_expression): Likewise. (cp_parser_expression): Likewise. (cp_parser_constant_expression): If an integral constant expression is invalid, return error_mark_node. (cp_parser_expression_statement): Pass cast_p. (cp_parser_condition): Likewise. (cp_parser_iteration_statement): Likewise. (cp_parser_jump_statement): Likewise. (cp_parser_mem_initializer): Likewise. (cp_parser_template_argument): Likewise. (cp_parser_parameter_declaration): Likewise. (cp_parser_initializer): Likewise. (cp_parser_throw_expression): Likewise. (cp_parser_attribute_list): Likewise. (cp_parser_simple_cast_expression): Likewise. (cp_parser_functional_cast): Likewise. (cp_parser_late_parsing_default_args): Likewise. (cp_parser_sizeof_operand): Save/restore non_integral_constant_expression_p. 2005-01-31 Mike Stump * parser.c (cp_lexer_new_main): Get the first token, first, before doing anything. 2005-01-31 Mark Mitchell * decl.c (start_decl): Add missing parentheses. 2005-01-30 Mark Mitchell PR c++/19555 * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation. * decl.c (duplicate_decls): Do not discard DECL_IMPLICIT_INSTANTIATION when merging declarations. (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for variables that do not have DECL_USE_TEMPLATE. PR c++/19395 * decl.c (grokdeclarator): Refactor code so that qualified names are never allowed as the declarator in a typedef. PR c++/19367 * name-lookup.c (do_nonmember_using_decl): Avoid overloading builtin declarations. PR c++/19457 * call.c (convert_like_real): Inline call to dubious_conversion_warnings here. * cp-tree.h (dubious_conversion_warnings): Remove. * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before setting TREE_NEGATED_INT. * typeck.c (dubious_conversion_warnings): Remove. PR c++/19349 * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd memory. 2005-01-28 Mark Mitchell PR c++/19253 * parser.c (cp_parser_diagnose_invalid_type_name): Commit to tentative parses. PR c++/19667 * pt.c (redeclare_class_template): Robustify. 2005-01-27 Steven Bosscher * decl.c (finish_case_label): Use SWITCH_STMT accessor macros instead of SWITCH_EXPR ones. * pt.c (tsubst_expr): Likewise. * semantics.c (begin_switch_stmt, finish_switch_cond, finish_switch_stmt): Likewise. 2005-01-26 J"orn Rennecke PR c++/18370 * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p. 2005-01-25 Andrew Pinski * class.c (abort_fndecl_addr): New variable. (build_vtbl_initializer): If we have a pure virtual function share the abort function's address. Include gt-cp-class.h at the end. * config-lang.in (gtfiles): Add cp/class.c. 2005-01-25 Volker Reichelt * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static. (pp_cxx_function_definition): Make static. * cxx-pretty-print.h (pp_cxx_statement): Remove prototype. (pp_cxx_function_definition): Likewise. 2005-01-25 Volker Reichelt * name-lookup.c (print_binding_level): Make static. (constructor_name_full): Make static inline. (current_decl_namespace): Make static. * name-lookup.h (constructor_name_full): Remove prototype. (print_binding_level): Likewise. (current_decl_namespace): Likewise. 2005-01-25 Volker Reichelt * decl.h (debug_bindings_indentation): Remove. 2005-01-23 Kazu Hirata * typeck.c: Fix a comment typo. 2005-01-21 Giovanni Bajo PR c++/19208 * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr at least once. (tsubst): Use fold_decl_constant_value in place of a bare call to integral_constant_value. 2005-01-20 Kazu Hirata * typeck.c (more_qualified_p): Remove. * cp-tree.h: Remove the corresponding prototype. 2005-01-19 Matt Austern * typeck.c (comptypes): Handle return code from objc_comptypes correctly. 2005-01-19 Kazu Hirata * cp-tree.h, name-lookup.h: Remove unused prototypes. 2005-01-19 Kriang Lerdsuwanakij PR c++/19375 * semantics.c (finish_id_expression): Disable access checking for already lookuped FIELD_DECL. 2005-01-18 Kazu Hirata * decl.c (delete_block): Remove. * cp-tree.h: Remove the corresponding prototype. * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data, walk_vtables_r, walk_vtables, walk_globals_r, walk_globals): Remove. * cp-tree.h: Remove the corresponding prototypes. * tree.c (count_functions, bound_pmf_p, cp_is_overload_p, cp_update_decl_after_saving, name_p): Remove. * cp-tree.h: Remove the corresponding prototypes. 2005-01-18 Andrew Pinski PR c/19472 * semantics.c (finish_asm_stmt): Strip nops off input memory operands. 2005-01-18 Kazu Hirata * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c, typeck2.c: Update copyright. 2005-01-16 Kazu Hirata * class.c (get_enclosing_class): Remove. * cp-tree.h: Remove the corresponding prototypes. * cvt.c (convert_lvalue): Remove. * cp-tree.h: Remove the corresponding prototype. * pt.c (tinst_for_decl): Remove. * cp-tree.h: Remove the corresponding prototypes. * tree.c (hash_chainon): Remove. * cp-tree.h: Remove the corresponding prototypes. 2005-01-15 Jakub Jelinek PR c++/19263 * typeck2.c (split_nonconstant_init_1) : Put a copy of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified. 2005-01-12 Kaveh R. Ghazi * Make-lang.in (cp-warn): Don't append $(WERROR). 2005-01-10 Kazu Hirata * cp-tree.h: Fix a comment typo. 2005-01-07 Nathan Sidwell PR c++/19298 * pt.c (tsubst_qualified_id): Call convert_from_reference. 2005-01-06 Mark Mitchell PR c++/19244 * class.c (add_implicitly_declared_members): Remove dead code. * decl.c (grokfndecl): Add sfk parameter. Use it do set DECL_CONSTRUCTOR_P. (grokdeclarator): Adjust calls to grokfndecl. * method.c (implicitly_declare_fn): Improve documentation. * parser.c (cp_parser_direct_declarator): Do not consider a function to be a constructor if the containing class was originally anonymous. 2005-01-06 Kriang Lerdsuwanakij PR c++/17154 * search.c (lookup_field_1): Handle using declaration in class template partial specialization. 2005-01-06 Kriang Lerdsuwanakij PR c++/19258 * pt.c (push_access_scope): Handle friend defined in class. (pop_access_scope): Likewise. 2005-01-06 Nathan Sidwell PR c++/19270 * pt.c (tsubst_copy) : Handle separately. (tsubst_copy_and_build) : Remove obsolete array-new handling code. Use build_x_binary_op. 2005-01-05 Nathan Sidwell PR c++/19030 * cp-tree.h (start_decl): Take pointer to pushed scope, not bool. * name-lookup.h (push_scope): Return pushed scope, not flag. * name-lookup.c (push_scope): Return scope that should be popped, not a flag. * decl.c (start_decl): Adjust. (grokfndecl): Adjust scope push and pop. * decl2.c (check_classfn): Likewise. * parser.c (cp_parser_condition, cp_parser_conversion_function_id, cp_parser_init_declarator, cp_parser_direct_declarator, cp_parser_class_specifier, cp_parser_class_head, cp_parser_lookup_name, cp_parser_constructor_declarator_p): Likewise. * pt.c (instantiate_class_template, resolve_typename_type): Likewise. 2005-01-03 Volker Reichelt PR c++/14136 * parser.c (cp_parser_unqualified_id): Do not issue error message for typedef-name as destructor declarator when performing an uncommitted tentative parse. 2005-01-01 Steven Bosscher PR middle-end/17544 * decl.c (finish_function): Fix comment. Annotate the compiler generated return with the current file name and line 0.