X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fcp%2FChangeLog;h=0746d6af30b0e644c29b95cd08cab634ccad1a01;hp=e7bf59f5a14bfedda1107f3e162f465eec3e8e82;hb=92fccaaa535d5555bda8058c165fe3b2e0528c88;hpb=1a358480f30b961e7c0e4c164ad47f67dc5f1db6 diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e7bf59f5a14..0746d6af30b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,7 +1,629 @@ +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 + * typeck.c (build_unary_op): Use same_type_p when comparing to boolean type. 2006-10-29 Dirk Mueller @@ -31,27 +653,27 @@ * rtti.c (tinfo_base_init): The type info string is always global. 2006-10-20 Lee Millward - Mark Mitchell + Mark Mitchell + + PR c++/28053 + * decl2.c (grokbitfield): Detect invalid non-integral + types earlier when possible. - 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 +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. - 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 @@ -125,7 +747,7 @@ 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 @@ -135,17 +757,17 @@ 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. + * 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 @@ -206,31 +828,31 @@ 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. + 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. + 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 + * decl.c (xref_tag): Return error_mark_node if redeclare_class_template returned false. PR c++/27667 - * cp-tree.h (begin_specialization): Return bool + * cp-tree.h (begin_specialization): Return bool instead of void. - * pt.c (check_specialization_scope): Likwise. - Adjust comment. Return false if a specialization + * 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 + (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 @@ -241,12 +863,12 @@ PR c++/28861 * decl.c (shadow_tag): Return error_mark_node - if maybe_process_partial_specialization failed. + if maybe_process_partial_specialization failed. PR c++/28303 - * decl.c (grokdeclarator): Return error_mark_node on - declaration with two or more data types. - + * decl.c (grokdeclarator): Return error_mark_node on + declaration with two or more data types. + 2006-09-20 Danny Smith PR target/27650 @@ -342,7 +964,7 @@ * tree.c (build_cplus_new): Set it. PR c++/26696 - * cvt.c (convert_to_void): Replace a subexpression with no side + * 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. @@ -355,13 +977,13 @@ 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. + * 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. + * pt.c (type_dependent_expression_p): A USING_DECL is dependent. PR c++/19809 * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl. @@ -438,7 +1060,7 @@ fields can't be packed. PR c++/26577 - * cvt.c (convert_to_void): Don't automatically load from volatiles + * cvt.c (convert_to_void): Don't automatically load from volatiles of TREE_ADDRESSABLE type. 2006-08-28 Volker Reichelt @@ -459,13 +1081,13 @@ 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 @@ -490,7 +1112,7 @@ 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 @@ -556,7 +1178,7 @@ 2006-08-23 Jason Merrill PR c++/27714 - * pt.c (push_template_decl_real): A friend template with class + * pt.c (push_template_decl_real): A friend template with class scope isn't primary. 2006-08-23 Benjamin Smedberg @@ -568,7 +1190,7 @@ 2006-08-22 Jason Merrill PR c++/23372 - * call.c (build_over_call): Don't make a copy here if build_call + * call.c (build_over_call): Don't make a copy here if build_call will make one too. 2006-08-22 Andrew Pinski @@ -587,7 +1209,7 @@ 2006-08-22 Jason Merrill PR c++/28659 - * typeck.c (merge_types): If either of the types have the right + * 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 @@ -618,7 +1240,7 @@ PR c++/28741 * tree.c (decl_anon_ns_mem_p): Robustify. * decl2.c (determine_visibility): Likewise. - + 2006-08-20 Mark Mitchell PR c++/28341 @@ -649,7 +1271,7 @@ PR c++/28346 * pt.c (tsubst_qualified_id): Do not strip references from - OFFSET_REFs. + OFFSET_REFs. 2006-08-17 Volker Reichelt @@ -692,7 +1314,7 @@ PR c++/28594 * pt.c (process_template_parm): Robustify. - + 2006-08-14 Steve Ellcey PR c++/28288 @@ -725,13 +1347,13 @@ 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 @@ -808,7 +1430,7 @@ (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. @@ -866,15 +1488,15 @@ * tree.c (decl_linkage): Only return lk_external if it's set. PR c++/28409 - * decl2.c (constrain_visibility): Ignore the anonymous namespace + * 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 + * 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 + (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from template. - (determine_visibility_from_class): Reverse sense of + (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 @@ -911,7 +1533,7 @@ PR c++/28260 * decl.c (duplicate_decls): Return error_mark_node on ambiguous declaration. - + 2006-07-18 Steve Ellcey PR c++/27495 @@ -951,13 +1573,13 @@ * 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 + 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 @@ -1001,7 +1623,7 @@ * 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 @@ -1029,13 +1651,13 @@ 2006-07-01 Jason Merrill PR c++/28215 - * method.c (make_thunk): Unset DECL_USE_TEMPLATE and + * 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 + * call.c (build_new_method_call): Force evaluation of the instance pointer, not the object. 2006-06-30 Kazu Hirata @@ -1045,7 +1667,7 @@ 2006-06-30 Jason Merrill PR c++/18698 - * decl2.c (grokfield): Only try to treat the decl as an access + * decl2.c (grokfield): Only try to treat the decl as an access declaration if the scope is a class. 2006-06-29 Jason Merrill @@ -1099,7 +1721,7 @@ 2006-06-28 Jason Merrill PR c++/27424 - * pt.c (convert_template_argument): Pass all template arguments + * pt.c (convert_template_argument): Pass all template arguments on to coerce_template_template_parms. 2006-06-25 Lee Millward @@ -1110,7 +1732,7 @@ 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 @@ -1118,7 +1740,7 @@ 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 @@ -1154,7 +1776,7 @@ 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