OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [cp/] [ChangeLog-2006] - Diff between revs 283 and 338

Only display areas with differences | Details | Blame | View Log

Rev 283 Rev 338
2006-12-31  Simon Martin  
2006-12-31  Simon Martin  
        PR c++/29731
        PR c++/29731
        * parser.c (cp_parser_primary_expression): Return error_mark_node when
        * parser.c (cp_parser_primary_expression): Return error_mark_node when
        a statement-expression is found outside of a function body.
        a statement-expression is found outside of a function body.
2006-12-28  Kazu Hirata  
2006-12-28  Kazu Hirata  
        * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
        * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
        Remove.
        Remove.
        * decl2.c: Fix a comment typo.
        * decl2.c: Fix a comment typo.
2006-12-21  Andrew Pinski  
2006-12-21  Andrew Pinski  
        PR C++/30225
        PR C++/30225
        * decl.c (cxx_builtin_function): Only copy the decl if adding
        * decl.c (cxx_builtin_function): Only copy the decl if adding
        it to the std namespace.
        it to the std namespace.
2006-12-21  Andrew Pinski  
2006-12-21  Andrew Pinski  
        PR C++/30168
        PR C++/30168
        * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
        * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
2006-12-22  Kazu Hirata  
2006-12-22  Kazu Hirata  
        * decl.c: Fix a coment typo.
        * decl.c: Fix a coment typo.
2006-12-18  Ian Lance Taylor  
2006-12-18  Ian Lance Taylor  
        * decl.c (start_preparsed_function): Add support for
        * decl.c (start_preparsed_function): Add support for
        -Wmissing-declarations.
        -Wmissing-declarations.
2006-12-16  Simon Martin  
2006-12-16  Simon Martin  
        PR c++/29475
        PR c++/29475
        * cp-tree.h (struct deferred_access_check): New structure to represent a
        * cp-tree.h (struct deferred_access_check): New structure to represent a
        deferred access check. It replaces the previous representation as a tree.
        deferred access check. It replaces the previous representation as a tree.
        (get_deferred_access_checks): Return a vector of struct
        (get_deferred_access_checks): Return a vector of struct
        deferred_access_check instead of a tree list.
        deferred_access_check instead of a tree list.
        (perform_access_checks): Take a vector of struct deferred_access_check
        (perform_access_checks): Take a vector of struct deferred_access_check
        instead of a tree list.
        instead of a tree list.
        * semantics.c (struct deferred_access): Store the deferred access checks
        * semantics.c (struct deferred_access): Store the deferred access checks
        as a vector of struct deferred_access_check instead of a tree list.
        as a vector of struct deferred_access_check instead of a tree list.
        (push_deferring_access_checks): Handle the change in struct
        (push_deferring_access_checks): Handle the change in struct
        deferred_access.
        deferred_access.
        (get_deferred_access_checks): Likewise.
        (get_deferred_access_checks): Likewise.
        (pop_to_parent_deferring_access_checks): Likewise.
        (pop_to_parent_deferring_access_checks): Likewise.
        (perform_or_defer_access_check): Likewise.
        (perform_or_defer_access_check): Likewise.
        (perform_access_checks): Take a vector of struct deferred_access_check
        (perform_access_checks): Take a vector of struct deferred_access_check
        instead of a tree list.
        instead of a tree list.
        * parser.c (struct tree_check): New structure to store various data
        * parser.c (struct tree_check): New structure to store various data
        associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
        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
        (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
        a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
        tokens and a tree field for all other tokens.
        tokens and a tree field for all other tokens.
        (eof_token): Adjusted due to the change in struct cp_token.
        (eof_token): Adjusted due to the change in struct cp_token.
        (cp_lexer_get_preprocessor_token): Likewise.
        (cp_lexer_get_preprocessor_token): Likewise.
        (cp_lexer_purge_token): Likewise.
        (cp_lexer_purge_token): Likewise.
        (cp_lexer_purge_tokens_after): Likewise.
        (cp_lexer_purge_tokens_after): Likewise.
        (cp_lexer_print_token): Likewise.
        (cp_lexer_print_token): Likewise.
        (cp_parser_error): Likewise.
        (cp_parser_error): Likewise.
        (cp_parser_identifier): Likewise.
        (cp_parser_identifier): Likewise.
        (cp_parser_string_literal): Likewise.
        (cp_parser_string_literal): Likewise.
        (cp_parser_primary_expression): Likewise.
        (cp_parser_primary_expression): Likewise.
        (cp_parser_unqualified_id): Likewise.
        (cp_parser_unqualified_id): Likewise.
        (cp_parser_parenthesized_expression_list): Likewise.
        (cp_parser_parenthesized_expression_list): Likewise.
        (cp_parser_storage_class_specifier_opt): Likewise.
        (cp_parser_storage_class_specifier_opt): Likewise.
        (cp_parser_function_specifier_opt): Likewise.
        (cp_parser_function_specifier_opt): Likewise.
        (cp_parser_type_specifier): Likewise.
        (cp_parser_type_specifier): Likewise.
        (cp_parser_simple_type_specifier): Likewise.
        (cp_parser_simple_type_specifier): Likewise.
        (cp_parser_initializer_list): Likewise.
        (cp_parser_initializer_list): Likewise.
        (cp_parser_member_specification_opt): Likewise.
        (cp_parser_member_specification_opt): Likewise.
        (cp_parser_attribute_list): Likewise.
        (cp_parser_attribute_list): Likewise.
        (cp_parser_objc_expression): Likewise.
        (cp_parser_objc_expression): Likewise.
        (cp_parser_objc_protocol_qualifiers): Likewise.
        (cp_parser_objc_protocol_qualifiers): Likewise.
        (cp_parser_objc_selector): Likewise.
        (cp_parser_objc_selector): Likewise.
        (cp_parser_objc_declaration): Likewise.
        (cp_parser_objc_declaration): Likewise.
        (cp_parser_objc_statement): Likewise.
        (cp_parser_objc_statement): Likewise.
        (cp_parser_omp_clause_name): Likewise.
        (cp_parser_omp_clause_name): Likewise.
        (cp_parser_omp_clause_default): Likewise.
        (cp_parser_omp_clause_default): Likewise.
        (cp_parser_omp_clause_schedule): Likewise.
        (cp_parser_omp_clause_schedule): Likewise.
        (cp_parser_omp_parallel): Likewise.
        (cp_parser_omp_parallel): Likewise.
        (cp_parser_initial_pragma): Likewise.
        (cp_parser_initial_pragma): Likewise.
        (pragma_lex): Likewise.
        (pragma_lex): Likewise.
        (cp_parser_pre_parsed_nested_name_specifier): Likewise.
        (cp_parser_pre_parsed_nested_name_specifier): Likewise.
        (cp_parser_nested_name_specifier_opt): Likewise.
        (cp_parser_nested_name_specifier_opt): Likewise.
        Use cp_token::u::tree_check_value to save the token's value, the
        Use cp_token::u::tree_check_value to save the token's value, the
        associated deferred checks and its qualifying scope.
        associated deferred checks and its qualifying scope.
        (cp_parser_template_id): Likewise.
        (cp_parser_template_id): Likewise.
        (cp_parser_template_declaration_after_export): Adjusted the call to
        (cp_parser_template_declaration_after_export): Adjusted the call to
        get_deferred_access_checks.
        get_deferred_access_checks.
        (cp_parser_init_declarator): Take the access checks as a vector of struct
        (cp_parser_init_declarator): Take the access checks as a vector of struct
        deferred_access_check instead of a tree list.
        deferred_access_check instead of a tree list.
        (cp_parser_single_declaration): Likewise.
        (cp_parser_single_declaration): Likewise.
        (cp_parser_perform_template_parameter_access_checks): Likewise.
        (cp_parser_perform_template_parameter_access_checks): Likewise.
        (cp_parser_simple_declaration): Adjusted the call to
        (cp_parser_simple_declaration): Adjusted the call to
        cp_parser_init_declarator.
        cp_parser_init_declarator.
        (cp_parser_explicit_specialization): Adjusted the call to
        (cp_parser_explicit_specialization): Adjusted the call to
        cp_parser_single_declaration.
        cp_parser_single_declaration.
2006-12-13  Ian Lance Taylor  
2006-12-13  Ian Lance Taylor  
        PR c++/19564
        PR c++/19564
        PR c++/19756
        PR c++/19756
        * parser.c (cp_parser_expression_stack_entry): Add field
        * parser.c (cp_parser_expression_stack_entry): Add field
        lhs_type.
        lhs_type.
        (cp_parser_binary_expression): Track tree code of left hand side
        (cp_parser_binary_expression): Track tree code of left hand side
        of expression.  Use it when calling build_x_binary_op.
        of expression.  Use it when calling build_x_binary_op.
        (cp_parser_selection_statement): Add if_p parameter.  Change all
        (cp_parser_selection_statement): Add if_p parameter.  Change all
        callers.  Warn about ambiguous else.
        callers.  Warn about ambiguous else.
        (cp_parser_statement): Add if_p parameter.  Change all callers.
        (cp_parser_statement): Add if_p parameter.  Change all callers.
        (cp_parser_implicitly_scoped_statement): Likewise.
        (cp_parser_implicitly_scoped_statement): Likewise.
        * typeck.c (build_x_binary_op): Add parameters arg1_code and
        * typeck.c (build_x_binary_op): Add parameters arg1_code and
        arg2_code.  Change all callers.  Call warn_about_parentheses.
        arg2_code.  Change all callers.  Call warn_about_parentheses.
        * cp-tree.h (build_x_binary_op): Update declaration.
        * cp-tree.h (build_x_binary_op): Update declaration.
2006-12-12  Manuel Lopez-Ibanez  
2006-12-12  Manuel Lopez-Ibanez  
        * decl.c (build_enumerator): Update error message to match C
        * decl.c (build_enumerator): Update error message to match C
        front-end.
        front-end.
2006-12-11  Jan Hubicka  
2006-12-11  Jan Hubicka  
        * decl2.c (var_finalized_p): Update for renamed varpool functions.
        * decl2.c (var_finalized_p): Update for renamed varpool functions.
2006-12-09  Zack Weinberg  
2006-12-09  Zack Weinberg  
        * parser.c (yydebug, enum pragma_omp_clause): Delete.
        * parser.c (yydebug, enum pragma_omp_clause): Delete.
2006-12-07  Mark Mitchell  
2006-12-07  Mark Mitchell  
        PR c++/29732
        PR c++/29732
        * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
        * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
        (explicit_class_specialization_p): Declare.
        (explicit_class_specialization_p): Declare.
        * pt.c (explicit_class_specialization_p): New function.
        * pt.c (explicit_class_specialization_p): New function.
        * parser.c (cp_parser_init_declarator): Check correct number of
        * parser.c (cp_parser_init_declarator): Check correct number of
        template parameters for in-class function definitions.
        template parameters for in-class function definitions.
        (cp_parser_check_declrator_template_parameters): Stop looking for
        (cp_parser_check_declrator_template_parameters): Stop looking for
        template classes when we find an explicit specialization.
        template classes when we find an explicit specialization.
2006-12-07  Lee Millward  
2006-12-07  Lee Millward  
        PR c++/29980
        PR c++/29980
        * cp_parser_elaborated_type_specifier: Check
        * cp_parser_elaborated_type_specifier: Check
        the return value of check_elaborated_type_specifier.
        the return value of check_elaborated_type_specifier.
2006-12-06  Mark Mitchell  
2006-12-06  Mark Mitchell  
        PR c++/29730
        PR c++/29730
        * parser.c (cp_parser_init_declarator): Reject initialization of
        * parser.c (cp_parser_init_declarator): Reject initialization of
        functions.
        functions.
2006-12-05  Mark Mitchell  
2006-12-05  Mark Mitchell  
        PR c++/29729
        PR c++/29729
        * decl2.c (check_member_template): Move check for member
        * decl2.c (check_member_template): Move check for member
        templates in local classes to ...
        templates in local classes to ...
        * parser.c (cp_parser_template_declaration_after_export):
        * parser.c (cp_parser_template_declaration_after_export):
        ... here.
        ... here.
        PR c++/29728
        PR c++/29728
        * decl.c (check_array_designated_initializer): New function.
        * decl.c (check_array_designated_initializer): New function.
        (maybe_deduce_size_from_array_init): Use it.
        (maybe_deduce_size_from_array_init): Use it.
        (reshape_init_array): Likewise.
        (reshape_init_array): Likewise.
2006-12-05  Aldy Hernandez  
2006-12-05  Aldy Hernandez  
        Merge from gimple-tuples-branch.
        Merge from gimple-tuples-branch.
        2006-10-05  Aldy Hernandez  
        2006-10-05  Aldy Hernandez  
        * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
        * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
        (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
        (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
        (cxx_omp_clause_copy_ctor): Same.
        (cxx_omp_clause_copy_ctor): Same.
        (cxx_omp_clause_assign_op): Same.
        (cxx_omp_clause_assign_op): Same.
        2006-09-28  Aldy Hernandez  
        2006-09-28  Aldy Hernandez  
        * cp-tree.h (union lang_tree_node): Gimple statements do not
        * cp-tree.h (union lang_tree_node): Gimple statements do not
        have a TREE_CHAIN.
        have a TREE_CHAIN.
        (TREE_INDIRECT_USING): Look in base.
        (TREE_INDIRECT_USING): Look in base.
2006-12-04  Jan Hubicka  
2006-12-04  Jan Hubicka  
        * cp-objcp-common.c (cp_expr_size): Return NULL in the case
        * cp-objcp-common.c (cp_expr_size): Return NULL in the case
        size is undefined.
        size is undefined.
2006-12-04  Mark Mitchell  
2006-12-04  Mark Mitchell  
        PR c++/29733
        PR c++/29733
        * pt.c (tsubst_decl): Disallow variables of function type.
        * pt.c (tsubst_decl): Disallow variables of function type.
        PR c++/29632
        PR c++/29632
        * call.c (add_builtin_candidate): Do not permit NULL pointer
        * call.c (add_builtin_candidate): Do not permit NULL pointer
        constants to be compared with template parameters.
        constants to be compared with template parameters.
2006-12-04  Eric Botcazou  
2006-12-04  Eric Botcazou  
        * pt.c (for_each_template_parm_r) : New case.
        * pt.c (for_each_template_parm_r) : New case.
        Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
        Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
2006-12-03  Richard Henderson  
2006-12-03  Richard Henderson  
            Andrew Pinski  
            Andrew Pinski  
        PR C++/14329
        PR C++/14329
        * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
        * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
2006-12-02  Andrew Pinski  
2006-12-02  Andrew Pinski  
        PR C++/30033
        PR C++/30033
        * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
        * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
2006-12-02  Kazu Hirata  
2006-12-02  Kazu Hirata  
        * name-lookup.c: Follow spelling conventions.
        * name-lookup.c: Follow spelling conventions.
2006-12-01  Geoffrey Keating  
2006-12-01  Geoffrey Keating  
        * decl.c (poplevel): Check DECL_INITIAL invariant.
        * decl.c (poplevel): Check DECL_INITIAL invariant.
        (duplicate_decls): Preserve DECL_INITIAL when eliminating
        (duplicate_decls): Preserve DECL_INITIAL when eliminating
        a new definition in favour of an old declaration.
        a new definition in favour of an old declaration.
        (start_preparsed_function): Define and document value of
        (start_preparsed_function): Define and document value of
        DECL_INITIAL before and after routine.
        DECL_INITIAL before and after routine.
        (finish_function): Check DECL_INITIAL invariant.
        (finish_function): Check DECL_INITIAL invariant.
        * parser.c
        * parser.c
        (cp_parser_function_definition_from_specifiers_and_declarator):
        (cp_parser_function_definition_from_specifiers_and_declarator):
        Skip duplicate function definitions.
        Skip duplicate function definitions.
2006-12-01  Volker Reichelt  
2006-12-01  Volker Reichelt  
        PR c++/30022
        PR c++/30022
        * typeck.c (type_after_usual_arithmetic_conversions):
        * typeck.c (type_after_usual_arithmetic_conversions):
        Fix assertion for vector types.
        Fix assertion for vector types.
        (build_binary_op): Use temporary for inner type of vector types.
        (build_binary_op): Use temporary for inner type of vector types.
2006-12-01  Ryan Mansfield  
2006-12-01  Ryan Mansfield  
        PR c++/29066
        PR c++/29066
        * typeck.c (build_binary_op):  Fix pointer to member function
        * typeck.c (build_binary_op):  Fix pointer to member function
        comparison for ptrmemfunc_vbit_in_delta targets.
        comparison for ptrmemfunc_vbit_in_delta targets.
2006-12-01  Dirk Mueller  
2006-12-01  Dirk Mueller  
        PR c++/18313
        PR c++/18313
        * decl.c (grokdeclarator): Warn for type qualifiers on return
        * decl.c (grokdeclarator): Warn for type qualifiers on return
        type for non-dependent types.
        type for non-dependent types.
        * pt.c (tsubst_function_type): Warn for type qualifiers on
        * pt.c (tsubst_function_type): Warn for type qualifiers on
        return type for dependent types.
        return type for dependent types.
2006-11-30  Geoffrey Keating  
2006-11-30  Geoffrey Keating  
        * rtti.c (get_tinfo_decl): Handle return value from
        * rtti.c (get_tinfo_decl): Handle return value from
        pushdecl_top_level_and_finish.
        pushdecl_top_level_and_finish.
2006-11-29  Lee Millward  
2006-11-29  Lee Millward  
        PR c++/29022
        PR c++/29022
        * parser.c (cp_parser_class_head): Move processing
        * parser.c (cp_parser_class_head): Move processing
        of any base classes to...
        of any base classes to...
        (cp_parser_class_specifier) ...here. Take an extra
        (cp_parser_class_specifier) ...here. Take an extra
        tree* parameter for any base classes. Only process
        tree* parameter for any base classes. Only process
        them if the opening brace was found.
        them if the opening brace was found.
2006-11-28  Jakub Jelinek  
2006-11-28  Jakub Jelinek  
        PR c++/29735
        PR c++/29735
        * decl.c (grokfndecl): Check main's type after applying
        * decl.c (grokfndecl): Check main's type after applying
        attributes, not before.
        attributes, not before.
2006-11-27  Mark Mitchell  
2006-11-27  Mark Mitchell  
        * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
        * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
        entries for a primary construction virtual table.
        entries for a primary construction virtual table.
2006-11-26  Mark Mitchell  
2006-11-26  Mark Mitchell  
        PR c++/29886
        PR c++/29886
        * parser.c (cp_parser): Add in_function_body.
        * parser.c (cp_parser): Add in_function_body.
        (cp_parser_new): Initialize it.
        (cp_parser_new): Initialize it.
        (cp_parser_primary_expression): Use parser->in_function_body
        (cp_parser_primary_expression): Use parser->in_function_body
        instead of at_function_scope_p.
        instead of at_function_scope_p.
        (cp_parser_asm_definition): Likewise.
        (cp_parser_asm_definition): Likewise.
        (cp_parser_direct_declarator): Likewise.
        (cp_parser_direct_declarator): Likewise.
        (cp_parser_class_specifier): Clear parser->in_function_body.
        (cp_parser_class_specifier): Clear parser->in_function_body.
        (cp_parser_constructor_declarator_p): Use parser->in_function_body
        (cp_parser_constructor_declarator_p): Use parser->in_function_body
        instead of at_function_scope_p.
        instead of at_function_scope_p.
        (cp_parser_function_body_after_declarator): Set
        (cp_parser_function_body_after_declarator): Set
        parser->in_function_body.
        parser->in_function_body.
2006-11-21      Douglas Gregor 
2006-11-21      Douglas Gregor 
        * cp-tree.def (STATIC_ASSERT): New.
        * cp-tree.def (STATIC_ASSERT): New.
        * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
        * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
        * error.c (dump_decl): Handle STATIC_ASSERT.
        * error.c (dump_decl): Handle STATIC_ASSERT.
        * cp-tree.h (STATIC_ASSERT_CONDITION): New.
        * cp-tree.h (STATIC_ASSERT_CONDITION): New.
        (STATIC_ASSERT_MESSAGE): New.
        (STATIC_ASSERT_MESSAGE): New.
        (STATIC_ASSERT_SOURCE_LOCATION): New.
        (STATIC_ASSERT_SOURCE_LOCATION): New.
        (struct tree_static_assert): New.
        (struct tree_static_assert): New.
        (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
        (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
        (union lang_tree_node): Add static_assertion.
        (union lang_tree_node): Add static_assertion.
        (finish_static_assert): Declare.
        (finish_static_assert): Declare.
        * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
        * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
        (pp_cxx_declaration): Handle STATIC_ASSERT.
        (pp_cxx_declaration): Handle STATIC_ASSERT.
        * pt.c (instantiate_class_template): Handle
        * pt.c (instantiate_class_template): Handle
        STATIC_ASSERT members.
        STATIC_ASSERT members.
        (tsubst_expr): Handle STATIC_ASSERT statements.
        (tsubst_expr): Handle STATIC_ASSERT statements.
        * semantics.c (finish_static_assert): New.
        * semantics.c (finish_static_assert): New.
        * lex.c (D_CPP0X): New.
        * lex.c (D_CPP0X): New.
        (reswords): Add static_assert keyword.
        (reswords): Add static_assert keyword.
        (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
        (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
        * parser.c (cp_parser_block_declaration): Parse static
        * parser.c (cp_parser_block_declaration): Parse static
        assertions.
        assertions.
        (cp_parser_static_assert): New.
        (cp_parser_static_assert): New.
        (cp_parser_member_declaration): Parse static assertions.
        (cp_parser_member_declaration): Parse static assertions.
2006-11-21  Jakub Jelinek  
2006-11-21  Jakub Jelinek  
        PR c++/29570
        PR c++/29570
        * decl.c (cp_finish_decl): Check for value dependent brace enclosed
        * decl.c (cp_finish_decl): Check for value dependent brace enclosed
        scalar initializer.
        scalar initializer.
        PR c++/29734
        PR c++/29734
        * cp-tree.h (WANT_VECTOR): Define.
        * cp-tree.h (WANT_VECTOR): Define.
        (WANT_ARITH): Add WANT_VECTOR.
        (WANT_ARITH): Add WANT_VECTOR.
        * cvt.c (build_expr_type_conversion): Handle vector types.
        * cvt.c (build_expr_type_conversion): Handle vector types.
        * typeck.c (build_unary_op): Add WANT_VECTOR to
        * typeck.c (build_unary_op): Add WANT_VECTOR to
        build_expr_type_conversion flags.
        build_expr_type_conversion flags.
2006-11-20  Simon Martin  
2006-11-20  Simon Martin  
        PR c++/29475
        PR c++/29475
        * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
        * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
        extra argument that represents the declaration to use to print
        extra argument that represents the declaration to use to print
        potential error messages.
        potential error messages.
        * init.c (build_offset_ref): Adjusted the call to
        * init.c (build_offset_ref): Adjusted the call to
        perform_or_defer_access_check.
        perform_or_defer_access_check.
        * class.c (alter_access, resolve_address_of_overloaded_function):
        * class.c (alter_access, resolve_address_of_overloaded_function):
        Likewise.
        Likewise.
        * decl.c (make_typename_type, make_unbound_class_template): Likewise.
        * decl.c (make_typename_type, make_unbound_class_template): Likewise.
        * search.c (lookup_member): Likewise.
        * search.c (lookup_member): Likewise.
        * friend.c (add_friend): Likewise.
        * friend.c (add_friend): Likewise.
        * parser.c (cp_parser_template_id,
        * parser.c (cp_parser_template_id,
        cp_parser_pre_parsed_nested_name_specifier): Likewise.
        cp_parser_pre_parsed_nested_name_specifier): Likewise.
        * semantics.c (finish_non_static_data_member,
        * semantics.c (finish_non_static_data_member,
        check_accessibility_of_qualified_id, finish_id_expression): Likewise.
        check_accessibility_of_qualified_id, finish_id_expression): Likewise.
        (pop_to_parent_deferring_access_checks, perform_access_checks,
        (pop_to_parent_deferring_access_checks, perform_access_checks,
        perform_or_defer_access_check): Adjusted the call to enforce_access.
        perform_or_defer_access_check): Adjusted the call to enforce_access.
        * call.c (enforce_access): Use the new extra argument to build the
        * call.c (enforce_access): Use the new extra argument to build the
        error message.
        error message.
        (build_op_delete_call): Adjusted the call to
        (build_op_delete_call): Adjusted the call to
        perform_or_defer_access_check.
        perform_or_defer_access_check.
        (build_over_call): Likewise.
        (build_over_call): Likewise.
2006-11-16  Dirk Mueller  
2006-11-16  Dirk Mueller  
        * name-lookup.c (begin_scope): Use GGC_CNEW instead of
        * name-lookup.c (begin_scope): Use GGC_CNEW instead of
        GGC_NEW and memset.
        GGC_NEW and memset.
2006-11-13  Roger Sayle  
2006-11-13  Roger Sayle  
        * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
        * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
        base type info initializer has the correct type.
        base type info initializer has the correct type.
2006-11-13  Mark Mitchell  
2006-11-13  Mark Mitchell  
        PR c++/29518
        PR c++/29518
        * pt.c (coerce_template_parms): Do not skip_evaluation while
        * pt.c (coerce_template_parms): Do not skip_evaluation while
        substituting template arguments.
        substituting template arguments.
2006-11-11  Richard Guenther  
2006-11-11  Richard Guenther  
        * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
        * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
        FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
        FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
2006-11-03  Roger Sayle  
2006-11-03  Roger Sayle  
        * call.c (build_op_delete_call): Test user-visible type against
        * call.c (build_op_delete_call): Test user-visible type against
        size_type_node, instead of against the internal type, sizetype.
        size_type_node, instead of against the internal type, sizetype.
        * class.c (type_requires_array_cookie): Likewise.
        * class.c (type_requires_array_cookie): Likewise.
        * mangle.c (write_builtin_type) : Remove special
        * mangle.c (write_builtin_type) : Remove special
        handling of TYPE_IS_SIZETYPE.
        handling of TYPE_IS_SIZETYPE.
        * typeck.c (type_after_usual_arithmetic_conversions): Remove
        * typeck.c (type_after_usual_arithmetic_conversions): Remove
        special case handling of TYPE_IS_SIZETYPE.
        special case handling of TYPE_IS_SIZETYPE.
        (comptypes): Likewise.
        (comptypes): Likewise.
2006-11-01  Danny Smith  
2006-11-01  Danny Smith  
        * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
        * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
        if targetm.cxx.use_atexit_for cxa_atexit.
        if targetm.cxx.use_atexit_for cxa_atexit.
        (start_cleanup_fn): Likewise.
        (start_cleanup_fn): Likewise.
        (register_dtor_fn): Likewise.
        (register_dtor_fn): Likewise.
2006-09-25  Geoffrey Keating  
2006-09-25  Geoffrey Keating  
        * decl2.c (cp_write_global_declarations): Rename from
        * decl2.c (cp_write_global_declarations): Rename from
        cp_finish_file.
        cp_finish_file.
        * cp-lang.c (finish_file): Don't call cp_finish_file.
        * cp-lang.c (finish_file): Don't call cp_finish_file.
        * cp-tree.h (cp_write_global_declarations): Rename from
        * cp-tree.h (cp_write_global_declarations): Rename from
        cp_finish_file.
        cp_finish_file.
        * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
        * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
        cp_write_global_declarations.
        cp_write_global_declarations.
2006-10-31  Geoffrey Keating  
2006-10-31  Geoffrey Keating  
        * name-lookup.c (get_anonymous_namespace_name): New.
        * name-lookup.c (get_anonymous_namespace_name): New.
        (push_namespace_with_attribs): Use get_anonymous_namespace_name.
        (push_namespace_with_attribs): Use get_anonymous_namespace_name.
        * decl2.c (start_objects): Update for rename of
        * decl2.c (start_objects): Update for rename of
        get_file_function_name_long.
        get_file_function_name_long.
2006-10-30  Dirk Mueller  
2006-10-30  Dirk Mueller  
        PR c++/28704
        PR c++/28704
        * decl.c (grokdeclarator): Duplicate diagnostic message
        * decl.c (grokdeclarator): Duplicate diagnostic message
        for easier translation.
        for easier translation.
        * decl.c (grokdeclarator): Fix line-wrapping.
        * decl.c (grokdeclarator): Fix line-wrapping.
2006-10-30  Dirk Mueller  
2006-10-30  Dirk Mueller  
        PR c++/6321
        PR c++/6321
        * decl.c (grokfndecl): Use check_main_parameter_types.
        * decl.c (grokfndecl): Use check_main_parameter_types.
2006-10-30  Dirk Mueller  
2006-10-30  Dirk Mueller  
        PR c++/28669
        PR c++/28669
        * decl.c (grokfndecl): Duplicate warning message for
        * decl.c (grokfndecl): Duplicate warning message for
        easier translation.
        easier translation.
2006-10-30  Dirk Mueller  
2006-10-30  Dirk Mueller  
        * typeck.c (build_unary_op): Fix indenting. Use G_().
        * typeck.c (build_unary_op): Fix indenting. Use G_().
2006-10-29  Dirk Mueller  
2006-10-29  Dirk Mueller  
        PR c++/29089
        PR c++/29089
        * typeck.c (build_unary_op): Duplicate warning message
        * typeck.c (build_unary_op): Duplicate warning message
        for easier translation.
        for easier translation.
2006-10-29  Dirk Mueller  
2006-10-29  Dirk Mueller  
        PR c++/16307
        PR c++/16307
        * typeck.c (build_array_ref): Warn for char subscriptions
        * typeck.c (build_array_ref): Warn for char subscriptions
        on pointers.
        on pointers.
2006-10-29  Kazu Hirata  
2006-10-29  Kazu Hirata  
        * decl.c: Fix a comment typo.
        * decl.c: Fix a comment typo.
2006-10-28  Andrew Pinski  
2006-10-28  Andrew Pinski  
        PR C++/29295
        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.
        boolean type.
2006-10-29  Dirk Mueller  
2006-10-29  Dirk Mueller  
        PR c++/29033
        PR c++/29033
        * typeck.c (build_binary_op): Duplicate warning message
        * typeck.c (build_binary_op): Duplicate warning message
        for better translation.
        for better translation.
2006-10-23  Rafael Ávila de Espíndola  
2006-10-23  Rafael Ávila de Espíndola  
        * decl.c (builtin_function_1): Move common code to
        * decl.c (builtin_function_1): Move common code to
        add_builtin_function.
        add_builtin_function.
        (builtin_function): Rename to cxx_builtin_function.
        (builtin_function): Rename to cxx_builtin_function.
        Change the signature.
        Change the signature.
        * call.c: Include langhooks.h.
        * call.c: Include langhooks.h.
        (build_java_interface_fn_ref):  Replace calls to
        (build_java_interface_fn_ref):  Replace calls to
        builtin_function with add_builtin_function.
        builtin_function with add_builtin_function.
        * Make-lang.in (cp/call.o): Depend on langhooks.h.
        * Make-lang.in (cp/call.o): Depend on langhooks.h.
        * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
        * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
        cxx_builtin_function.
        cxx_builtin_function.
        * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
        * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
        Change the signature.
        Change the signature.
2006-10-22  Nathan Sidwell  
2006-10-22  Nathan Sidwell  
        PR c++/20647
        PR c++/20647
        * rtti.c (tinfo_base_init): The type info string is always global.
        * rtti.c (tinfo_base_init): The type info string is always global.
2006-10-20  Lee Millward  
2006-10-20  Lee Millward  
            Mark Mitchell 
            Mark Mitchell 
        PR c++/28053
        PR c++/28053
        * decl2.c (grokbitfield): Detect invalid non-integral
        * decl2.c (grokbitfield): Detect invalid non-integral
        types earlier when possible.
        types earlier when possible.
2006-10-18  Mark Shinwell  
2006-10-18  Mark Shinwell  
        PR c++/26884
        PR c++/26884
        * typeck2.c (digest_init): Raise error upon attempts to
        * typeck2.c (digest_init): Raise error upon attempts to
        initialize arrays with variables.
        initialize arrays with variables.
2006-10-17  Lee Millward  
2006-10-17  Lee Millward  
        PR c++/27952
        PR c++/27952
        * cp-tree.h (xref_basetypes): Return bool instead of void.
        * cp-tree.h (xref_basetypes): Return bool instead of void.
        * decl.c (xref_basetypes): Adjust definition. Return false
        * decl.c (xref_basetypes): Adjust definition. Return false
        if the class bases are invalid.
        if the class bases are invalid.
        * parser.c (cp_parser_class_head): Check the return value
        * parser.c (cp_parser_class_head): Check the return value
        from xref_basetypes.
        from xref_basetypes.
2006-10-17  Mark Mitchell  
2006-10-17  Mark Mitchell  
        PR c++/28261
        PR c++/28261
        * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
        * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
        comment.
        comment.
        PR c++/28261
        PR c++/28261
        * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
        * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
        function.
        function.
        (cp_parser_constructor_declarator_p): Use it.
        (cp_parser_constructor_declarator_p): Use it.
        (cp_parser_check_type_definition): Return a value indicating
        (cp_parser_check_type_definition): Return a value indicating
        whether or not the definition is valid.
        whether or not the definition is valid.
        (cp_parser_enum_specifier): Skip invalid enum definitions.
        (cp_parser_enum_specifier): Skip invalid enum definitions.
2006-10-17  Mark Mitchell  
2006-10-17  Mark Mitchell  
        PR c++/29039
        PR c++/29039
        * typeck2.c (build_functional_cast): Don't zero-initialize
        * typeck2.c (build_functional_cast): Don't zero-initialize
        non-PODs; instead, call their constructors.
        non-PODs; instead, call their constructors.
        * method.c (synthesize_method): Always build mem-initializers, if
        * method.c (synthesize_method): Always build mem-initializers, if
        we're synthesizing the default constructor.
        we're synthesizing the default constructor.
2006-10-17  Mark Mitchell  
2006-10-17  Mark Mitchell  
        PR c++/27270
        PR c++/27270
        * decl.c (reshape_init_class): Move check for designated
        * decl.c (reshape_init_class): Move check for designated
        to ...
        to ...
        * parser.c (cp_parser_initializer_list): ... here.
        * parser.c (cp_parser_initializer_list): ... here.
        * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
        * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
2006-10-16  Mark Mitchell  
2006-10-16  Mark Mitchell  
        PR c++/27270
        PR c++/27270
        * typeck2.c (process_init_constructor_array): Reword comment.
        * typeck2.c (process_init_constructor_array): Reword comment.
        * pt.c (tsubst_copy_and_built): Call reshape_init before calling
        * pt.c (tsubst_copy_and_built): Call reshape_init before calling
        digest_init.
        digest_init.
        PR c++/29408
        PR c++/29408
        * parser.c (cp_parser_using_declaration): Stop parsing when
        * parser.c (cp_parser_using_declaration): Stop parsing when
        something goes wrong with an access declaration.
        something goes wrong with an access declaration.
        PR c++/29435
        PR c++/29435
        * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
        * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
        types when their sizes are required.  Refine test for VLAs.
        types when their sizes are required.  Refine test for VLAs.
        PR c++/28211
        PR c++/28211
        * parser.c (cp_parser_template_argument): Don't consider "&var" a
        * parser.c (cp_parser_template_argument): Don't consider "&var" a
        possible constant-expression.
        possible constant-expression.
        * pt.c (convert_nontype_argument): Refine handling of arguments of
        * pt.c (convert_nontype_argument): Refine handling of arguments of
        pointer type.
        pointer type.
2006-10-13  Mark Mitchell  
2006-10-13  Mark Mitchell  
        PR c++/28506
        PR c++/28506
        * parser.c (function_declarator_p): New function.
        * parser.c (function_declarator_p): New function.
        (cp_parser_init_declarator): Use it.
        (cp_parser_init_declarator): Use it.
        (cp_parser_member_declaration): Likewise.
        (cp_parser_member_declaration): Likewise.
2006-10-12  Mark Mitchell  
2006-10-12  Mark Mitchell  
        PR c++/29318
        PR c++/29318
        * rtti.c (get_tinfo_decl): Refuse to create type info objects for
        * rtti.c (get_tinfo_decl): Refuse to create type info objects for
        variably modified types.
        variably modified types.
2006-10-12 Lee Millward 
2006-10-12 Lee Millward 
       PR c++/27961
       PR c++/27961
       * decl.c (start_decl): Return error_mark_node if a
       * decl.c (start_decl): Return error_mark_node if a
       function is initialized like a variable.
       function is initialized like a variable.
       (check_var_type): If a variable of field is declared void,
       (check_var_type): If a variable of field is declared void,
       set the type to error_mark_node.
       set the type to error_mark_node.
       (grokdeclarator): Check the return type of check_var_type.
       (grokdeclarator): Check the return type of check_var_type.
       * class.c (finish_struct_1): Robustify.
       * class.c (finish_struct_1): Robustify.
2006-10-11  Mark Mitchell  
2006-10-11  Mark Mitchell  
        PR c++/29175
        PR c++/29175
        * decl.c (check_initializer): Issue errors about trying to
        * decl.c (check_initializer): Issue errors about trying to
        initialize arrays whose elements have variable size.
        initialize arrays whose elements have variable size.
2006-10-11  Lee Millward  
2006-10-11  Lee Millward  
        PR c++/29024
        PR c++/29024
        * cp-tree (struct cp_decl_specifier_seq): Rename to
        * cp-tree (struct cp_decl_specifier_seq): Rename to
        conflicting_specifiers_p
        conflicting_specifiers_p
        * parser.c (cp_parser_set_storage_class): Set
        * parser.c (cp_parser_set_storage_class): Set
        conflicting_specifiers_p for the input decl specifier
        conflicting_specifiers_p for the input decl specifier
        if a typedef specifier is present. Rename uses of
        if a typedef specifier is present. Rename uses of
        multiple_specifiers_p to conflicting_specifiers_p.
        multiple_specifiers_p to conflicting_specifiers_p.
        (cp_parser_decl_specifier_seq) : If a storage
        (cp_parser_decl_specifier_seq) : If a storage
        class specifier has already been set for this declaration,
        class specifier has already been set for this declaration,
        set conflicting_specifiers_p to true on the decl_specs.
        set conflicting_specifiers_p to true on the decl_specs.
        * decl.c (grokdeclarator): Rename uses of
        * decl.c (grokdeclarator): Rename uses of
        multiple_specifiers_p to conflicting_specifiers_p.
        multiple_specifiers_p to conflicting_specifiers_p.
2006-10-10  Brooks Moses  
2006-10-10  Brooks Moses  
        * Make-lang.in: Added "c++.pdf" target support.
        * Make-lang.in: Added "c++.pdf" target support.
2006-10-10  Richard Guenther  
2006-10-10  Richard Guenther  
        PR rtl-optimization/29323
        PR rtl-optimization/29323
        * decl.c (finish_function): Set TREE_NOTHROW only for
        * decl.c (finish_function): Set TREE_NOTHROW only for
        functions that bind local.
        functions that bind local.
2006-10-09  Richard Henderson  
2006-10-09  Richard Henderson  
        Revert emutls patch.
        Revert emutls patch.
2006-10-04  Richard Henderson  
2006-10-04  Richard Henderson  
            Jakub Jelinek  
            Jakub Jelinek  
        * decl.c (grokvardecl): Don't error if !have_tls.
        * decl.c (grokvardecl): Don't error if !have_tls.
        (grokdeclarator): Likewise.
        (grokdeclarator): Likewise.
        * parser.c (cp_parser_omp_threadprivate): Likewise.
        * parser.c (cp_parser_omp_threadprivate): Likewise.
2006-10-03  Mark Mitchell  
2006-10-03  Mark Mitchell  
        PR c++/29020
        PR c++/29020
        * friend.c (do_friend): Improve comments; add assertion.
        * friend.c (do_friend): Improve comments; add assertion.
        * parser.c (cp_parser_nested_name_specifier_opt): Resolve
        * parser.c (cp_parser_nested_name_specifier_opt): Resolve
        typenames for qualified names used in declarations, even when
        typenames for qualified names used in declarations, even when
        caching qualified name lookup.
        caching qualified name lookup.
        PR c++/29138
        PR c++/29138
        * decl2.c (grokfield): Don't handle access declarations here.
        * decl2.c (grokfield): Don't handle access declarations here.
        * parser.c (cp_parser_using_declaration): Handle access
        * parser.c (cp_parser_using_declaration): Handle access
        declarations too.
        declarations too.
        (cp_parser_block_declaration): Adjust calls to
        (cp_parser_block_declaration): Adjust calls to
        cp_parser_using_declaration.
        cp_parser_using_declaration.
        (cp_parser_member_declaration): Likewise.  Use
        (cp_parser_member_declaration): Likewise.  Use
        cp_parser_using_declaration to look for access_declarations.
        cp_parser_using_declaration to look for access_declarations.
2006-10-03  Volker Reichelt  
2006-10-03  Volker Reichelt  
        PR c++/29291
        PR c++/29291
        * init.c (build_new): Check for invalid init.
        * init.c (build_new): Check for invalid init.
2006-10-02  Mark Mitchell  
2006-10-02  Mark Mitchell  
        PR c++/29226
        PR c++/29226
        * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
        * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
        not try to actually evaluate sizeof for a VLA type.
        not try to actually evaluate sizeof for a VLA type.
2006-10-01  Mark Mitchell  
2006-10-01  Mark Mitchell  
        PR c++/29105
        PR c++/29105
        * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
        * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
        * semantics.c (baselink_for_fns): Build a baselink, even when
        * semantics.c (baselink_for_fns): Build a baselink, even when
        processing a template.
        processing a template.
        PR c++/29080
        PR c++/29080
        * parser.c (cp_parser_postfix_dot_deref_expression): Use
        * parser.c (cp_parser_postfix_dot_deref_expression): Use
        BASELINK_ACCESS_BINFO as the qualifying scope when calling
        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  
2006-09-25  Lee Millward  
        PR c++/27329
        PR c++/27329
        PR c++/26938
        PR c++/26938
        * cp-tree.h (redeclare_class_template): Adjust declaration
        * cp-tree.h (redeclare_class_template): Adjust declaration
        to return bool instead of void.
        to return bool instead of void.
        * pt.c (redeclare_class_template): Update definition.
        * pt.c (redeclare_class_template): Update definition.
        Return false on error.
        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.
        redeclare_class_template returned false.
        PR c++/27667
        PR c++/27667
        * cp-tree.h (begin_specialization): Return bool
        * cp-tree.h (begin_specialization): Return bool
        instead of void.
        instead of void.
        * pt.c (check_specialization_scope): Likwise.
        * pt.c (check_specialization_scope): Likwise.
        Adjust comment. Return false if a specialization
        Adjust comment. Return false if a specialization
        isn't permitted in the current scope.
        isn't permitted in the current scope.
        (begin_specialization): Use the return value of
        (begin_specialization): Use the return value of
        check_specialization_scope.
        check_specialization_scope.
        * parser.c (cp_parser_explicit_specialization): If
        * parser.c (cp_parser_explicit_specialization): If
        begin_specialization returned false, skip the rest
        begin_specialization returned false, skip the rest
        of the specialization.
        of the specialization.
2006-09-21  Mark Mitchell  
2006-09-21  Mark Mitchell  
        PR c++/29016
        PR c++/29016
        * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
        * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
        BASELINK.
        BASELINK.
2006-09-21  Lee Millward  
2006-09-21  Lee Millward  
        PR c++/28861
        PR c++/28861
        * decl.c (shadow_tag): Return error_mark_node
        * decl.c (shadow_tag): Return error_mark_node
        if maybe_process_partial_specialization failed.
        if maybe_process_partial_specialization failed.
        PR c++/28303
        PR c++/28303
        * decl.c (grokdeclarator): Return error_mark_node on
        * decl.c (grokdeclarator): Return error_mark_node on
        declaration with two or more data types.
        declaration with two or more data types.
2006-09-20  Danny Smith  
2006-09-20  Danny Smith  
        PR target/27650
        PR target/27650
        * class.c (check_for_override): Remove dllimport from virtual
        * class.c (check_for_override): Remove dllimport from virtual
        methods.
        methods.
2006-09-18  Steven Bosscher  
2006-09-18  Steven Bosscher  
        PR c++/29087
        PR c++/29087
        * parser.c (cp_parser_labeled_statement): Return nothing.  Do
        * parser.c (cp_parser_labeled_statement): Return nothing.  Do
        not take in_statement_expr and in_compound as arguments.  Rename
        not take in_statement_expr and in_compound as arguments.  Rename
        to cp_parser_label_for_labeled_statement.  Parse only the label,
        to cp_parser_label_for_labeled_statement.  Parse only the label,
        not the statement.
        not the statement.
        (cp_parser_statement): Parse the statement of a labeled-statement
        (cp_parser_statement): Parse the statement of a labeled-statement
        from here, using tail recursion.
        from here, using tail recursion.
2006-09-14  Andrew Pinski  
2006-09-14  Andrew Pinski  
        PR C++/29002
        PR C++/29002
        * init.c (build_zero_init): If we have an error mark node for
        * init.c (build_zero_init): If we have an error mark node for
        the array size, return.
        the array size, return.
2006-09-10  Mark Mitchell  
2006-09-10  Mark Mitchell  
        PR c++/28991
        PR c++/28991
        * cp-objcp-common.c (cxx_staticp): New function.
        * cp-objcp-common.c (cxx_staticp): New function.
        * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
        * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
        * cp-tree.h (cxx_staticp): New function.
        * cp-tree.h (cxx_staticp): New function.
2006-09-09  Jason Merrill  
2006-09-09  Jason Merrill  
        PR c++/28996
        PR c++/28996
        * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
        * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
2006-09-08  Volker Reichelt  
2006-09-08  Volker Reichelt  
        PR c++/28858
        PR c++/28858
        * parser.c (cp_parser_skip_until_found): Rename to
        * parser.c (cp_parser_skip_until_found): Rename to
        cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
        cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
        parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
        parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
        Reorganize.  Adjust comment.
        Reorganize.  Adjust comment.
        (cp_parser_template_declaration_after_export): Adjust call.
        (cp_parser_template_declaration_after_export): Adjust call.
        (cp_parser_enclosed_template_argument_list): Likewise.
        (cp_parser_enclosed_template_argument_list): Likewise.
2006-09-07  Andrew Pinski  
2006-09-07  Andrew Pinski  
        PR C++/28906
        PR C++/28906
        * init.c (build_new_1): Build a distinct type copy
        * init.c (build_new_1): Build a distinct type copy
        for the array type that was returned from
        for the array type that was returned from
        build_cplus_array_type.
        build_cplus_array_type.
2006-09-07  Jason Merrill  
2006-09-07  Jason Merrill  
        PR c++/27371
        PR c++/27371
        * cvt.c (convert_to_void): Enable previous change.
        * cvt.c (convert_to_void): Enable previous change.
        PR c++/26957
        PR c++/26957
        * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
        * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
        parms.
        parms.
2006-09-07  Simon Martin  
2006-09-07  Simon Martin  
        PR c++/28284
        PR c++/28284
        * pt.c (fold_non_dependent_expr): Make sure expr is not
        * pt.c (fold_non_dependent_expr): Make sure expr is not
        dereferenced if it is NULL.
        dereferenced if it is NULL.
2006-09-06  Zak Kipling  
2006-09-06  Zak Kipling  
        PR c++/26195
        PR c++/26195
        * decl.c (make_rtl_for_nonlocal_decl),
        * decl.c (make_rtl_for_nonlocal_decl),
        (start_preparsed_function): Don't use lbasename on
        (start_preparsed_function): Don't use lbasename on
        input_filename when calling get_fileinfo.
        input_filename when calling get_fileinfo.
        * semantics.c (begin_class_definition): Likewise.
        * semantics.c (begin_class_definition): Likewise.
        * lex.c (cxx_make_type): Likewise.
        * lex.c (cxx_make_type): Likewise.
        (handle_pragma_interface): Call get_fileinfo on input_filename,
        (handle_pragma_interface): Call get_fileinfo on input_filename,
        not on the parameter to the directive.
        not on the parameter to the directive.
2006-09-06  Mark Mitchell  
2006-09-06  Mark Mitchell  
        PR c++/28903
        PR c++/28903
        * pt.c (tsubst): Use fold_non_dependent_expr to fold array
        * pt.c (tsubst): Use fold_non_dependent_expr to fold array
        dimensions.
        dimensions.
        PR c++/28886
        PR c++/28886
        * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
        * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
        dimensions.
        dimensions.
2006-09-06  Jason Merrill  
2006-09-06  Jason Merrill  
        PR c++/27371
        PR c++/27371
        * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
        * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
        * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
        * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
        * tree.c (build_cplus_new): Set it.
        * tree.c (build_cplus_new): Set it.
        PR c++/26696
        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.
        effects with void_zero_node.
        * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
        * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
        (get_first_fn): Ditto.
        (get_first_fn): Ditto.
        * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
        * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
2006-09-05  Jason Merrill  
2006-09-05  Jason Merrill  
        PR c++/26571
        PR c++/26571
        * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
        * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
        where the name is a type used incorrectly.
        where the name is a type used incorrectly.
        PR c++/26671
        PR c++/26671
        * typeck.c (maybe_warn_about_returning_address_of_local): Look
        * typeck.c (maybe_warn_about_returning_address_of_local): Look
        through COMPONENT_REF and ARRAY_REF.
        through COMPONENT_REF and ARRAY_REF.
        PR c++/26102
        PR c++/26102
        * name-lookup.c (do_class_using_decl): Try to find the base even
        * name-lookup.c (do_class_using_decl): Try to find the base even
        if bases_dependent_p.
        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
        PR c++/19809
        * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
        * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
2006-09-04  Nathan Sidwell  
2006-09-04  Nathan Sidwell  
        PR 23287 Revert my 2006-09-01 patch.
        PR 23287 Revert my 2006-09-01 patch.
        * parser.c: Reverted.
        * parser.c: Reverted.
        * pt.c: Reverted.
        * pt.c: Reverted.
2006-09-02  Lee Millward  
2006-09-02  Lee Millward  
        PR c++/27670
        PR c++/27670
        PR c++/27493
        PR c++/27493
        PR c++/27494
        PR c++/27494
        PR c++/27397
        PR c++/27397
        * parser.c (cp_parser_template_parameter_list): Add
        * parser.c (cp_parser_template_parameter_list): Add
        invalid template parameters to the parameter list as
        invalid template parameters to the parameter list as
        error_mark_node.
        error_mark_node.
2006-09-02  Jakub Jelinek  
2006-09-02  Jakub Jelinek  
        PR c++/28878
        PR c++/28878
        * except.c (build_throw): Only set current_function_returns_abnormally
        * except.c (build_throw): Only set current_function_returns_abnormally
        if cfun is not NULL.
        if cfun is not NULL.
        PR c++/26917
        PR c++/26917
        * repo.c (repo_file): Remove.
        * repo.c (repo_file): Remove.
        (open_repo_file, reopen_repo_file_for_write): Return fopened
        (open_repo_file, reopen_repo_file_for_write): Return fopened
        FILE * instead of setting global repo_file variable.
        FILE * instead of setting global repo_file variable.
        (init_repo): Adjust caller.
        (init_repo): Adjust caller.
        (finish_repo): Likewise.  Return instead of goto out before
        (finish_repo): Likewise.  Return instead of goto out before
        reopen_repo_file_for_write has been called.
        reopen_repo_file_for_write has been called.
2006-09-01  Nathan Sidwell  
2006-09-01  Nathan Sidwell  
        PR c++/28705
        PR c++/28705
        * semantics.c (finish_call_expr): Add assert.
        * semantics.c (finish_call_expr): Add assert.
        * name-lookup.c (lookup_arg_dependent): Check we found an overload
        * name-lookup.c (lookup_arg_dependent): Check we found an overload
        or an object.
        or an object.
        PR c++/23287
        PR c++/23287
        * parser.c (cp_parser_id_expression): Add member_p
        * parser.c (cp_parser_id_expression): Add member_p
        argument. Update all callers.
        argument. Update all callers.
        (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
        (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
        the object's scope, if valid.
        the object's scope, if valid.
        (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
        (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
        callers.
        callers.
        (cp_parser_postfix_dot_deref_expression): Set object_scope.
        (cp_parser_postfix_dot_deref_expression): Set object_scope.
        * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
        * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
2006-08-30  Jason Merrill  
2006-08-30  Jason Merrill  
        PR c++/26670
        PR c++/26670
        * class.c (check_field_decls): Don't unset TYPE_PACKED until all
        * class.c (check_field_decls): Don't unset TYPE_PACKED until all
        the fields have been processed.
        the fields have been processed.
2006-08-29  Andrew Pinski  
2006-08-29  Andrew Pinski  
        PR C++/28349
        PR C++/28349
        * call.c (build_x_va_arg): Remove the reference type
        * call.c (build_x_va_arg): Remove the reference type
        from the type before creating the pointer type.
        from the type before creating the pointer type.
2006-08-29  J"orn Rennecke  
2006-08-29  J"orn Rennecke  
        PR c++/28139
        PR c++/28139
        * except.c (expand_start_catch_block): Use correct types for bitwise
        * except.c (expand_start_catch_block): Use correct types for bitwise
        copy.
        copy.
2006-08-28  Jason Merrill  
2006-08-28  Jason Merrill  
        PR c++/26670
        PR c++/26670
        * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
        * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
        fields can't be packed.
        fields can't be packed.
        PR c++/26577
        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.
        of TREE_ADDRESSABLE type.
2006-08-28  Volker Reichelt  
2006-08-28  Volker Reichelt  
        PR c++/28860
        PR c++/28860
        * cp-tree.h (maybe_process_partial_specialization): Return
        * cp-tree.h (maybe_process_partial_specialization): Return
        tree instead of void.
        tree instead of void.
        * parser.c (cp_parser_class_head): Use return value of
        * parser.c (cp_parser_class_head): Use return value of
        maybe_process_partial_specialization.
        maybe_process_partial_specialization.
        * pt.c (maybe_process_partial_specialization): Return error_mark_node
        * pt.c (maybe_process_partial_specialization): Return error_mark_node
        for broken specializations, TYPE otherwise.  Check for template
        for broken specializations, TYPE otherwise.  Check for template
        template parameters.
        template parameters.
2006-08-27  Mark Mitchell  
2006-08-27  Mark Mitchell  
        PR c++/28058
        PR c++/28058
        * pt.c (register_specialization): Return error_mark_node for
        * pt.c (register_specialization): Return error_mark_node for
        specialization-after-instantiation.
        specialization-after-instantiation.
        * decl2.c (mark_used): Mark the main function used when one of its
        * decl2.c (mark_used): Mark the main function used when one of its
        clones is used.
        clones is used.
2006-08-27  Lee Millward  
2006-08-27  Lee Millward  
        PR c++/26573
        PR c++/26573
        * class.c (check_field_decls): Don't issue error about
        * class.c (check_field_decls): Don't issue error about
        local classes containing static data members.
        local classes containing static data members.
2006-08-26  Joseph S. Myers  
2006-08-26  Joseph S. Myers  
        PR c++/24009
        PR c++/24009
        * parser.c (struct cp_token): Add input_file_stack_index.
        * parser.c (struct cp_token): Add input_file_stack_index.
        (eof_token): Update.
        (eof_token): Update.
        (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
        (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
        (cp_lexer_set_source_position_from_token): Restore input file
        (cp_lexer_set_source_position_from_token): Restore input file
        stack.
        stack.
2006-08-26  Lee Millward  
2006-08-26  Lee Millward  
        PR c++/28736
        PR c++/28736
        PR c++/28737
        PR c++/28737
        PR c++/28738
        PR c++/28738
        * pt.c (process_template_parm): Store invalid template
        * pt.c (process_template_parm): Store invalid template
        parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
        parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
        (push_inline_template_parms_recursive): Check for template
        (push_inline_template_parms_recursive): Check for template
        parameters having a TREE_VALUE of error_mark_node rather than
        parameters having a TREE_VALUE of error_mark_node rather than
        check the parameter itself.
        check the parameter itself.
        (mangle_class_name_for_template): Likewise.
        (mangle_class_name_for_template): Likewise.
        (comp_template_parms): When comparing the individual template
        (comp_template_parms): When comparing the individual template
        parameters, return 1 if either is error_mark_node.
        parameters, return 1 if either is error_mark_node.
        (current_template_args): Robustify.
        (current_template_args): Robustify.
        (redeclare_class_template): Likewise.
        (redeclare_class_template): Likewise.
2006-08-26  Mark Mitchell  
2006-08-26  Mark Mitchell  
        PR c++/28588
        PR c++/28588
        * class.c (resolve_address_of_overloaded_function): Add
        * class.c (resolve_address_of_overloaded_function): Add
        access_path parameter.  Perform access checks.
        access_path parameter.  Perform access checks.
        (instantiate_type): Adjust call to
        (instantiate_type): Adjust call to
        resolve_address_of_overloaded_function.  Remove unnecessary code.
        resolve_address_of_overloaded_function.  Remove unnecessary code.
        * tree.c (is_overloaded_fn): Document.  Return 2 when there are
        * tree.c (is_overloaded_fn): Document.  Return 2 when there are
        acutally multiple functions.
        acutally multiple functions.
        (really_overloaded_fn): Use is_overloaded_fn.
        (really_overloaded_fn): Use is_overloaded_fn.
        * mangle.c (write_expression): Handle BASELINKs.
        * mangle.c (write_expression): Handle BASELINKs.
        * cp-tree.h (really_overloaded_fn): Return bool.
        * cp-tree.h (really_overloaded_fn): Return bool.
        (baselink_for_fns): Declare.
        (baselink_for_fns): Declare.
        * search.c (lookup_member): Check access for single static
        * search.c (lookup_member): Check access for single static
        functions here.
        functions here.
        * pt.c (convert_nontype_argument_function): Handle BASELINKs.
        * pt.c (convert_nontype_argument_function): Handle BASELINKs.
        (tsubst_copy_and_build): Generate BASELINKs for template-ids.
        (tsubst_copy_and_build): Generate BASELINKs for template-ids.
        * semantics.c (finish_call_expr): Use baselink_for_fns.
        * semantics.c (finish_call_expr): Use baselink_for_fns.
        (baselink_for_fns): New function.
        (baselink_for_fns): New function.
        (finish_id_expression): Use it.
        (finish_id_expression): Use it.
        * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
        * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
        PR c++/28595
        PR c++/28595
        * pt.c (tsubst): Issue errors about attempts to create VLAs at
        * pt.c (tsubst): Issue errors about attempts to create VLAs at
        template-instantiation time.
        template-instantiation time.
2006-08-25  Volker Reichelt  
2006-08-25  Volker Reichelt  
        PR c++/28853
        PR c++/28853
        * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
        * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
        template parameters.  Improve error message for template type
        template parameters.  Improve error message for template type
        parameters.
        parameters.
        PR c++/28852
        PR c++/28852
        * cp-tree.h (grok_op_properties): Return bool instead of void.
        * cp-tree.h (grok_op_properties): Return bool instead of void.
        * decl.c (grokfndecl): Discard invalid operator declarations.
        * decl.c (grokfndecl): Discard invalid operator declarations.
        (copy_fn_p): Revert change for PR 27547.
        (copy_fn_p): Revert change for PR 27547.
        (grok_op_properties): Return error status (true on success).
        (grok_op_properties): Return error status (true on success).
        * pt.c (tsubst_decl): Discard invalid operator declarations.
        * pt.c (tsubst_decl): Discard invalid operator declarations.
2006-08-25  Mark Mitchell  
2006-08-25  Mark Mitchell  
        PR c++/28056
        PR c++/28056
        * decl.c (grokdeclarator): Disallow declarations with qualified
        * decl.c (grokdeclarator): Disallow declarations with qualified
        names in local scopes.
        names in local scopes.
2006-08-25  Nathan Sidwell  
2006-08-25  Nathan Sidwell  
        PR c++/27787
        PR c++/27787
        * decl.c (make_typename_type): Only try and resolve it when
        * decl.c (make_typename_type): Only try and resolve it when
        context is not dependent.  Refactor.
        context is not dependent.  Refactor.
        * decl2.c (check_classfn): Push to class scope before looking for
        * decl2.c (check_classfn): Push to class scope before looking for
        the function.
        the function.
2006-08-24  Danny Smith   
2006-08-24  Danny Smith   
        PR driver/28528
        PR driver/28528
        * g++spec.c (lang_specific_driver): Always check if we need to
        * g++spec.c (lang_specific_driver): Always check if we need to
        swallow a space-separated  arg to '-x'.
        swallow a space-separated  arg to '-x'.
        * lang-specs.h: Don't create ouput files for '-xc++-header'
        * lang-specs.h: Don't create ouput files for '-xc++-header'
        if -fsyntax-only.
        if -fsyntax-only.
2006-08-23  Jason Merrill  
2006-08-23  Jason Merrill  
        PR c++/27714
        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.
        scope isn't primary.
2006-08-23  Benjamin Smedberg 
2006-08-23  Benjamin Smedberg 
        PR c++/28687
        PR c++/28687
        * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
        * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
        Move -fno-rtti check to be more specific.
        Move -fno-rtti check to be more specific.
2006-08-22  Jason Merrill  
2006-08-22  Jason Merrill  
        PR c++/23372
        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.
        will make one too.
2006-08-22  Andrew Pinski  
2006-08-22  Andrew Pinski  
        PR C++/28450
        PR C++/28450
        * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
        * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
        COMPLEX_TYPEs.
        COMPLEX_TYPEs.
2006-08-22  Simon Martin  
2006-08-22  Simon Martin  
        PR c++/28420
        PR c++/28420
        * parser.c (cp_parser_postfix_expression): Make sure that the
        * parser.c (cp_parser_postfix_expression): Make sure that the
        saved value for parser->type_definition_forbidden_message is
        saved value for parser->type_definition_forbidden_message is
        restored before returning to avoid an invalid free().
        restored before returning to avoid an invalid free().
2006-08-22  Jason Merrill  
2006-08-22  Jason Merrill  
        PR c++/28659
        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.
        attributes, return that one.
        * tree.c (cp_build_type_attribute_variant): Make sure we aren't
        * tree.c (cp_build_type_attribute_variant): Make sure we aren't
        doing this to class types.
        doing this to class types.
        * typeck.c (original_type): Deal with type quals properly.
        * typeck.c (original_type): Deal with type quals properly.
2006-08-21  Jason Merrill  
2006-08-21  Jason Merrill  
        PR c++/27115
        PR c++/27115
        * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
        * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
        just leave the expression as it is.
        just leave the expression as it is.
        (finish_stmt_expr): If the statement-expression has class type,
        (finish_stmt_expr): If the statement-expression has class type,
        wrap it in a TARGET_EXPR.
        wrap it in a TARGET_EXPR.
        * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
        * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
        CLEANUP_POINT_EXPR.
        CLEANUP_POINT_EXPR.
        * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
        * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
2006-08-21  Lee Millward  
2006-08-21  Lee Millward  
        PR c++/26269
        PR c++/26269
        * decl.c (duplicate_decls): Return early if either
        * decl.c (duplicate_decls): Return early if either
        newdecl or olddecl is error_mark_node.
        newdecl or olddecl is error_mark_node.
         PR c++/28505
         PR c++/28505
        * decl.c (grokdeclarator): Return early after
        * decl.c (grokdeclarator): Return early after
        issuing diagnostic about an incomplete type.
        issuing diagnostic about an incomplete type.
        PR c++/28741
        PR c++/28741
        * tree.c (decl_anon_ns_mem_p): Robustify.
        * tree.c (decl_anon_ns_mem_p): Robustify.
        * decl2.c (determine_visibility): Likewise.
        * decl2.c (determine_visibility): Likewise.
2006-08-20  Mark Mitchell  
2006-08-20  Mark Mitchell  
        PR c++/28341
        PR c++/28341
        * tree.c (cast_valid_in_integral_constant_expression_p): New
        * tree.c (cast_valid_in_integral_constant_expression_p): New
        function.
        function.
        * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
        * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
        * pt.c (tsubst_expr): Add integral_constant_expression_p
        * pt.c (tsubst_expr): Add integral_constant_expression_p
        parameter.
        parameter.
        (fold_non_dependent_expr): Adjust callers of
        (fold_non_dependent_expr): Adjust callers of
        tsubst_{expr,copy_and_build}.
        tsubst_{expr,copy_and_build}.
        (tsubst_friend_function): Likewise.
        (tsubst_friend_function): Likewise.
        (tsubst_template_arg): Likewise.
        (tsubst_template_arg): Likewise.
        (tsubst_default_argument): Likewise.
        (tsubst_default_argument): Likewise.
        (tsubst_decl): Likewise.
        (tsubst_decl): Likewise.
        (tsubst): Likewise.
        (tsubst): Likewise.
        (tsubst_omp_clasuses): Likewise.
        (tsubst_omp_clasuses): Likewise.
        (regenerate_decl_fromp_template): Likewise.
        (regenerate_decl_fromp_template): Likewise.
        (instantiate_decl): Likewise.
        (instantiate_decl): Likewise.
        (tsubst_initializer_list): Likewise.
        (tsubst_initializer_list): Likewise.
        (tsubst_enum): Likewise.
        (tsubst_enum): Likewise.
        (tsubst_expr): Use RECUR throughout.
        (tsubst_expr): Use RECUR throughout.
        (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
        (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
        invalid casts in integral constant expressions.
        invalid casts in integral constant expressions.
        * parser.c (cp_parser_postfix_expression): Use
        * parser.c (cp_parser_postfix_expression): Use
        cast_valid_in_integral_constant_expression_p.
        cast_valid_in_integral_constant_expression_p.
        (cp_parser_cast_expression): Likewise.
        (cp_parser_cast_expression): Likewise.
        (cp_parser_functional_cast): Likewise.
        (cp_parser_functional_cast): Likewise.
        PR c++/28346
        PR c++/28346
        * pt.c (tsubst_qualified_id): Do not strip references from
        * pt.c (tsubst_qualified_id): Do not strip references from
        OFFSET_REFs.
        OFFSET_REFs.
2006-08-17  Volker Reichelt  
2006-08-17  Volker Reichelt  
        PR c++/28606
        PR c++/28606
        * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
        * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
        Fix formatting.
        Fix formatting.
        (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
        (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
        for valid type-names.
        for valid type-names.
        (cp_parser_unqualified_id): Fix error handling for destructors.
        (cp_parser_unqualified_id): Fix error handling for destructors.
        PR c++/28710
        PR c++/28710
        * decl.c (xref_tag): Improve error message.  Return early on error.
        * decl.c (xref_tag): Improve error message.  Return early on error.
        PR c++/28711
        PR c++/28711
        * pt.c (tsubst_copy_and_build) : Robustify.
        * pt.c (tsubst_copy_and_build) : Robustify.
2006-08-17  Paolo Bonzini  
2006-08-17  Paolo Bonzini  
        PR c++/28573
        PR c++/28573
        * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
        * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
2006-08-16  Andrew Pinski  
2006-08-16  Andrew Pinski  
        PR c++/28302
        PR c++/28302
        * typeck.c (build_unary_op ): Don't call
        * typeck.c (build_unary_op ): Don't call
        perform_integral_promotions for non integral type.
        perform_integral_promotions for non integral type.
2006-08-16  Jason Merrill  
2006-08-16  Jason Merrill  
        PR c++/28385
        PR c++/28385
        * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
        * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
        if arg is a function.
        if arg is a function.
2006-08-16  Volker Reichelt  
2006-08-16  Volker Reichelt  
        PR c++/28593
        PR c++/28593
        * init.c (build_new): Return early on invalid placement.
        * init.c (build_new): Return early on invalid placement.
2006-08-15  Lee Millward  
2006-08-15  Lee Millward  
        PR c++/28594
        PR c++/28594
        * pt.c (process_template_parm): Robustify.
        * pt.c (process_template_parm): Robustify.
2006-08-14  Steve Ellcey  
2006-08-14  Steve Ellcey  
        PR c++/28288
        PR c++/28288
        PR c++/14556
        PR c++/14556
        * operators.def: Remove , ?= operators.
        * operators.def: Remove , ?= operators.
        * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
        * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
        (cp_parser_warn_min_max): Remove.
        (cp_parser_warn_min_max): Remove.
2006-08-11  Jason Merrill  
2006-08-11  Jason Merrill  
        PR c++/28559
        PR c++/28559
        * parser.c (cp_parser_elaborated_type_specifier): Also ignore
        * parser.c (cp_parser_elaborated_type_specifier): Also ignore
        attributes applied to a TYPENAME_TYPE.
        attributes applied to a TYPENAME_TYPE.
2006-08-09  Lee Millward  
2006-08-09  Lee Millward  
        PR c++/28637
        PR c++/28637
        * pt.c (coerce_template_parms): Copy across the
        * pt.c (coerce_template_parms): Copy across the
        invalid template arguments to the new template inner arguments.
        invalid template arguments to the new template inner arguments.
        (retrieve_specialization): Robustify.
        (retrieve_specialization): Robustify.
        PR c++/28638
        PR c++/28638
        * pt.c (coerce_template_template_parms): Robustify.
        * pt.c (coerce_template_template_parms): Robustify.
        PR c++/28639
        PR c++/28639
        * error.c (dump_template_parms): Robustify.
        * error.c (dump_template_parms): Robustify.
        PR c++/28640
        PR c++/28640
        * pt.c (redeclare_class_template): Robustify.
        * pt.c (redeclare_class_template): Robustify.
        PR c++/28641
        PR c++/28641
        * pt.c (type_unification_real): Robustify.
        * pt.c (type_unification_real): Robustify.
2006-08-03  Lee Millward  
2006-08-03  Lee Millward  
        PR c++/28347
        PR c++/28347
        * decl.c (start_decl): Return error_mark_node if a
        * decl.c (start_decl): Return error_mark_node if a
        diagnostic was issed for an invalid typedef initialization.
        diagnostic was issed for an invalid typedef initialization.
2006-08-03  Volker Reichelt  
2006-08-03  Volker Reichelt  
        PR c++/27508
        PR c++/27508
        * parser.c (cp_parser_unqualified_id): Check for invalid scopes
        * parser.c (cp_parser_unqualified_id): Check for invalid scopes
        when parsing destructor names.
        when parsing destructor names.
        PR c++/28274
        PR c++/28274
        * decl.c (duplicate_decls): Call check_default_args here.
        * decl.c (duplicate_decls): Call check_default_args here.
        (start_preparsed_function): Do not call check_default_args.
        (start_preparsed_function): Do not call check_default_args.
        * name-lookup.c (pushdecl_maybe_friend): Only call
        * name-lookup.c (pushdecl_maybe_friend): Only call
        check_default_args if duplicate_decls got bypassed.
        check_default_args if duplicate_decls got bypassed.
2006-08-02  Richard Guenther  
2006-08-02  Richard Guenther  
        PR c++/28479
        PR c++/28479
        Revert
        Revert
        2006-07-05  Richard Guenther  
        2006-07-05  Richard Guenther  
        Andrew Pinski  
        Andrew Pinski  
        PR c++/27084
        PR c++/27084
        * cp-objcp-common.c (cxx_types_compatible_p): Ignore
        * cp-objcp-common.c (cxx_types_compatible_p): Ignore
        top level qualifiers for pointer type comparisons.
        top level qualifiers for pointer type comparisons.
2006-08-02  Mark Mitchell  
2006-08-02  Mark Mitchell  
        PR c++/28557
        PR c++/28557
        * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
        * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
2006-07-31  Mark Mitchell  
2006-07-31  Mark Mitchell  
        PR c++/28523
        PR c++/28523
        * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
        * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
        (stabilize_call): Tweak documentation.
        (stabilize_call): Tweak documentation.
        (stabilize_init): Only call stabilize_call for calls.
        (stabilize_init): Only call stabilize_call for calls.
2006-08-01  Steve Ellcey  
2006-08-01  Steve Ellcey  
        PR c++/28432
        PR c++/28432
        * decl2.c (check_classfn): Remove early return.
        * decl2.c (check_classfn): Remove early return.
        * search.c (lookup_member): Return NULL with bad type.
        * search.c (lookup_member): Return NULL with bad type.
2006-08-01  Steve Ellcey  
2006-08-01  Steve Ellcey  
        PR c++/28256
        PR c++/28256
        * decl.c (check_initializer): Check for 1 initializer on scalar types.
        * decl.c (check_initializer): Check for 1 initializer on scalar types.
2006-08-01  Daniel Jacobowitz  
2006-08-01  Daniel Jacobowitz  
        PR debug/23336
        PR debug/23336
        * pt.c (tsubst_copy_and_build): Mark used enum types.
        * pt.c (tsubst_copy_and_build): Mark used enum types.
        * semantics.c (finish_id_expression): Likewise.
        * semantics.c (finish_id_expression): Likewise.
2006-07-31  Volker Reichelt  
2006-07-31  Volker Reichelt  
        PR c++/6634
        PR c++/6634
        * decl.c (grokdeclarator): Check whether "long" or "short" was
        * decl.c (grokdeclarator): Check whether "long" or "short" was
        specified for non-integral types.
        specified for non-integral types.
2006-07-28  Volker Reichelt  
2006-07-28  Volker Reichelt  
        * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
        * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
2006-07-28  Lee Millward  
2006-07-28  Lee Millward  
        PR c++/27668
        PR c++/27668
        PR c++/27962
        PR c++/27962
        * pt.c (process_template_parm) Store invalid template
        * pt.c (process_template_parm) Store invalid template
        parameters as error_mark_node in the paramater list.
        parameters as error_mark_node in the paramater list.
        (push_inline_template_parms_recursive): Handle invalid
        (push_inline_template_parms_recursive): Handle invalid
        template parameters.
        template parameters.
        (comp_template_parms): Likewise.
        (comp_template_parms): Likewise.
        (check_default_tmpl_arg): Likewise.
        (check_default_tmpl_arg): Likewise.
        (coerce_template_template_parms): Likewise.
        (coerce_template_template_parms): Likewise.
        (mangle_class_name_for_template): Likewise.
        (mangle_class_name_for_template): Likewise.
        (tsubst_template_parms): Likewise.
        (tsubst_template_parms): Likewise.
        * error.c (dump_template_argument_list): Likewise.
        * error.c (dump_template_argument_list): Likewise.
2006-07-28  Kazu Hirata  
2006-07-28  Kazu Hirata  
        * cp-tree.h: Fix a comment typo.
        * cp-tree.h: Fix a comment typo.
2006-07-24  Volker Reichelt  
2006-07-24  Volker Reichelt  
        PR c++/27572
        PR c++/27572
        * decl.c (grokdeclarator): Return error_mark_node after invalid
        * decl.c (grokdeclarator): Return error_mark_node after invalid
        typedef.
        typedef.
2006-07-23  Daniel Jacobowitz  
2006-07-23  Daniel Jacobowitz  
        PR c++/28460
        PR c++/28460
        * decl.c (grokvardecl): Use FROB_CONTEXT.
        * decl.c (grokvardecl): Use FROB_CONTEXT.
        * pt.c (register_specialization): Likewise.
        * pt.c (register_specialization): Likewise.
2006-07-23  Mark Mitchell  
2006-07-23  Mark Mitchell  
        PR c++/28025
        PR c++/28025
        * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
        * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
        * name-lookup.c (unqualified_namespace_lookup): There is no way to
        * name-lookup.c (unqualified_namespace_lookup): There is no way to
        have a hidden name in non-namespace scopes.
        have a hidden name in non-namespace scopes.
        * pt.c (tsubst_friend_class): Look for hidden names.
        * pt.c (tsubst_friend_class): Look for hidden names.
        * decl.c (lookup_and_check_tag): Fix typo in comment.
        * decl.c (lookup_and_check_tag): Fix typo in comment.
        * semantics.c (finish_compound_literal): Fix typo in comment.
        * semantics.c (finish_compound_literal): Fix typo in comment.
2006-07-21  Jason Merrill  
2006-07-21  Jason Merrill  
        * decl2.c (determine_visibility): Don't propagate visibility from
        * decl2.c (determine_visibility): Don't propagate visibility from
        type to decl.
        type to decl.
        (constrain_class_visibility): Don't warn in system headers.
        (constrain_class_visibility): Don't warn in system headers.
        Don't warn about pointer fields.
        Don't warn about pointer fields.
2006-07-20  Mike Stump  
2006-07-20  Mike Stump  
        * decl2.c (determine_visibility_from_class): Don't use hidden
        * decl2.c (determine_visibility_from_class): Don't use hidden
        visibility for explicit instantiations.
        visibility for explicit instantiations.
2006-07-21  Volker Reichelt  
2006-07-21  Volker Reichelt  
        PR c++/28250
        PR c++/28250
        * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
        * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
        valid decls.  Cleanup.
        valid decls.  Cleanup.
        PR c++/28363
        PR c++/28363
        * semantics.c (check_template_template_default_arg): Simplify
        * semantics.c (check_template_template_default_arg): Simplify
        error handling.
        error handling.
2006-07-20  Jason Merrill  
2006-07-20  Jason Merrill  
        PR c++/28407
        PR c++/28407
        * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
        * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
        const variables with implicit internal linkage.
        const variables with implicit internal linkage.
        * tree.c (decl_linkage): Only return lk_external if it's set.
        * tree.c (decl_linkage): Only return lk_external if it's set.
        PR c++/28409
        PR c++/28409
        * decl2.c (constrain_visibility): Ignore the anonymous namespace
        * decl2.c (constrain_visibility): Ignore the anonymous namespace
        for extern "C" decls.
        for extern "C" decls.
        (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
        (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.
        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.
        template.
        (determine_visibility_from_class): Reverse sense of
        (determine_visibility_from_class): Reverse sense of
        DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
        DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
        (constrain_class_visibility): Only complain about member visibility
        (constrain_class_visibility): Only complain about member visibility
        if the member type is another class.  Don't change visibility of the
        if the member type is another class.  Don't change visibility of the
        current class.
        current class.
2006-07-19  Mark Mitchell  
2006-07-19  Mark Mitchell  
        PR c++/28338
        PR c++/28338
        * decl.c (layout_var_decl): Don't call push_local_name here.
        * decl.c (layout_var_decl): Don't call push_local_name here.
        (initialize_artificial_var): Assert artificiality.
        (initialize_artificial_var): Assert artificiality.
        (cp_finish_decl): Call push_local_name here.
        (cp_finish_decl): Call push_local_name here.
2006-07-18  Mark Mitchell  
2006-07-18  Mark Mitchell  
        PR c++/28337
        PR c++/28337
        * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
        * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
        templates.
        templates.
2006-07-18  Mark Mitchell  
2006-07-18  Mark Mitchell  
        PR c++/28048
        PR c++/28048
        * semantics.c (check_accessibility_of_qualified_id): Robustify.
        * semantics.c (check_accessibility_of_qualified_id): Robustify.
        PR c++/28235
        PR c++/28235
        * pt.c (tsubst_decl): Handling substitutions into a static data
        * pt.c (tsubst_decl): Handling substitutions into a static data
        member from within the scope of the tempalte itself.
        member from within the scope of the tempalte itself.
2006-07-18  Lee Millward  
2006-07-18  Lee Millward  
        PR c++/28258
        PR c++/28258
        * method.c (locate_copy): Check for non_reference
        * method.c (locate_copy): Check for non_reference
        returning error_mark_node.
        returning error_mark_node.
        PR c++/28260
        PR c++/28260
        * decl.c (duplicate_decls): Return error_mark_node
        * decl.c (duplicate_decls): Return error_mark_node
        on ambiguous declaration.
        on ambiguous declaration.
2006-07-18  Steve Ellcey  
2006-07-18  Steve Ellcey  
        PR c++/27495
        PR c++/27495
        * search.c (adjust_result_of_qualified_name_lookup): Change
        * search.c (adjust_result_of_qualified_name_lookup): Change
        assert to part of if statement.
        assert to part of if statement.
2006-07-17  Steve Ellcey  
2006-07-17  Steve Ellcey  
        PR c++/28291
        PR c++/28291
        * decl.c (reshape_init_class): Return error_mark_node on error.
        * decl.c (reshape_init_class): Return error_mark_node on error.
2006-07-17  Steve Ellcey  
2006-07-17  Steve Ellcey  
        PR c++/28304
        PR c++/28304
        * decl2.c (check_classfn): Return NULL_TREE on error.
        * decl2.c (check_classfn): Return NULL_TREE on error.
2006-07-17  Volker Reichelt  
2006-07-17  Volker Reichelt  
        PR c++/28250
        PR c++/28250
        * name-lookup.c (pushdecl_maybe_friend): Return early on
        * name-lookup.c (pushdecl_maybe_friend): Return early on
        error_mark_node.
        error_mark_node.
        * except.c (expand_start_catch_block): Use error_mark_node instead
        * except.c (expand_start_catch_block): Use error_mark_node instead
        of NULL_TREE for invalid decls.
        of NULL_TREE for invalid decls.
        * parser.c (cp_parser_exception_declaration): Return error_mark_node
        * parser.c (cp_parser_exception_declaration): Return error_mark_node
        on invalid catch parameter. Simplify.
        on invalid catch parameter. Simplify.
2006-07-16  Jakub Jelinek  
2006-07-16  Jakub Jelinek  
        PR c++/28370
        PR c++/28370
        * decl2.c (note_vague_linkage_var): Removed.
        * decl2.c (note_vague_linkage_var): Removed.
        (finish_static_data_member_decl): Add decl to pending_statics vector
        (finish_static_data_member_decl): Add decl to pending_statics vector
        directly.  Do it even for non-public decls.
        directly.  Do it even for non-public decls.
2006-07-15  Lee Millward  
2006-07-15  Lee Millward  
        PR c++/28292
        PR c++/28292
        * decl2.c (acceptable_java_type): Robustify. Use
        * decl2.c (acceptable_java_type): Robustify. Use
        proper Boolean return type instead of return 1.
        proper Boolean return type instead of return 1.
        (check_java_method): Don't issue error about
        (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.
        it's error_mark_node.
        PR c++/28269
        PR c++/28269
        * parser.c (cp_parser_elaborated_type_specifier):
        * parser.c (cp_parser_elaborated_type_specifier):
        Return early if an invalid type was detected.
        Return early if an invalid type was detected.
2006-07-15  Volker Reichelt  
2006-07-15  Volker Reichelt  
        PR c++/28249
        PR c++/28249
        * parser.c (cp_parser_check_decl_spec): New function.
        * parser.c (cp_parser_check_decl_spec): New function.
        (cp_parser_decl_specifier_seq): Factor out check for repeated
        (cp_parser_decl_specifier_seq): Factor out check for repeated
        decl-specifiers into cp_parser_check_decl_spec. Use it.
        decl-specifiers into cp_parser_check_decl_spec. Use it.
        (cp_parser_type_specifier_seq): Use it.
        (cp_parser_type_specifier_seq): Use it.
        PR c++/28294
        PR c++/28294
        * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
        * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
        only.
        only.
        PR c++/28387
        PR c++/28387
        * decl2.c (cplus_decl_attributes): Check for invalid decls.
        * decl2.c (cplus_decl_attributes): Check for invalid decls.
2006-07-14  Volker Reichelt  
2006-07-14  Volker Reichelt  
        PR c++/28343
        PR c++/28343
        * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
        * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
        * decl2.c (grokfield): Likewise.
        * decl2.c (grokfield): Likewise.
2006-07-12  Geoffrey Keating  
2006-07-12  Geoffrey Keating  
        * decl2.c (determine_visibility): Don't change visibility of
        * decl2.c (determine_visibility): Don't change visibility of
        function locals because of -fvisibility-inlines-hidden.
        function locals because of -fvisibility-inlines-hidden.
2006-07-12  Jason Merrill  
2006-07-12  Jason Merrill  
        PR c++/28217
        PR c++/28217
        * semantics.c (note_decl_for_pch): Don't premangle templates.
        * semantics.c (note_decl_for_pch): Don't premangle templates.
2006-07-12  Martin Michlmayr  
2006-07-12  Martin Michlmayr  
        * typeck.c (string_conv_p): Remove spurious quotation mark in
        * typeck.c (string_conv_p): Remove spurious quotation mark in
        warning.
        warning.
2006-07-07  Lee Millward  
2006-07-07  Lee Millward  
            Andrew Pinski  
            Andrew Pinski  
        PR c++/27820
        PR c++/27820
        * decl.c (define_label): Return error_mark_node on error.
        * decl.c (define_label): Return error_mark_node on error.
        * semantics.c (finish_label_stmt): Don't call
        * semantics.c (finish_label_stmt): Don't call
        add_stmt for invalid labels.
        add_stmt for invalid labels.
2006-07-06  Jason Merrill  
2006-07-06  Jason Merrill  
        PR c++/28279
        PR c++/28279
        * decl2.c (finish_static_data_member_decl): Don't assert
        * decl2.c (finish_static_data_member_decl): Don't assert
        TREE_PUBLIC.
        TREE_PUBLIC.
2006-07-05  Jason Merrill  
2006-07-05  Jason Merrill  
        PR c++/13983
        PR c++/13983
        PR c++/17519
        PR c++/17519
        * class.c (check_field_decls): Check TYPE_PACKED after
        * class.c (check_field_decls): Check TYPE_PACKED after
        stripping array types.
        stripping array types.
        (finish_struct_bits): Don't copy TYPE_SIZE here.
        (finish_struct_bits): Don't copy TYPE_SIZE here.
        PR c++/18681
        PR c++/18681
        * friend.c (is_friend): Fix DR 45 implementation.
        * friend.c (is_friend): Fix DR 45 implementation.
2006-07-05  Richard Guenther  
2006-07-05  Richard Guenther  
        Andrew Pinski  
        Andrew Pinski  
        PR c++/27084
        PR c++/27084
        * cp-objcp-common.c (cxx_types_compatible_p): Ignore
        * cp-objcp-common.c (cxx_types_compatible_p): Ignore
        top level qualifiers for pointer type comparisons.
        top level qualifiers for pointer type comparisons.
2006-07-01  Jason Merrill  
2006-07-01  Jason Merrill  
        PR c++/28215
        PR c++/28215
        * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
        * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
        DECL_TEMPLATE_INFO.
        DECL_TEMPLATE_INFO.
2006-06-30  Jason Merrill  
2006-06-30  Jason Merrill  
        PR c++/26577
        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.
        instance pointer, not the object.
2006-06-30  Kazu Hirata  
2006-06-30  Kazu Hirata  
        * decl2.c: Fix a comment typo.
        * decl2.c: Fix a comment typo.
2006-06-30  Jason Merrill  
2006-06-30  Jason Merrill  
        PR c++/18698
        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.
        declaration if the scope is a class.
2006-06-29  Jason Merrill  
2006-06-29  Jason Merrill  
        PR c++/26905
        PR c++/26905
        PR c++/26612
        PR c++/26612
        PR c++/27000
        PR c++/27000
        PR c++/26984
        PR c++/26984
        PR c++/19134
        PR c++/19134
        * decl2.c (determine_visibility): Overhaul.
        * decl2.c (determine_visibility): Overhaul.
        (determine_visibility_from_class): Likewise.
        (determine_visibility_from_class): Likewise.
        (min_vis_r, type_visibility, constrain_visibility): New fns.
        (min_vis_r, type_visibility, constrain_visibility): New fns.
        (constrain_visibility_for_template): Likewise.
        (constrain_visibility_for_template): Likewise.
        (constrain_class_visibility): Likewise.
        (constrain_class_visibility): Likewise.
        * decl.c (cp_finish_decl): Call determine_visibility for function
        * decl.c (cp_finish_decl): Call determine_visibility for function
        decls, too.
        decls, too.
        * name-lookup.c (pushtag): Call determine_visibility.
        * name-lookup.c (pushtag): Call determine_visibility.
        * decl.c (duplicate_decls): Don't copy visibility from template to
        * decl.c (duplicate_decls): Don't copy visibility from template to
        specialization.
        specialization.
        * pt.c (check_explicit_specialization): Likewise.
        * pt.c (check_explicit_specialization): Likewise.
        (lookup_template_class, tsubst_decl): Call determine_visibility.
        (lookup_template_class, tsubst_decl): Call determine_visibility.
        * class.c (finish_struct_1): Call constrain_class_visibility.
        * class.c (finish_struct_1): Call constrain_class_visibility.
        PR c++/26905
        PR c++/26905
        PR c++/21675
        PR c++/21675
        PR c++/17470
        PR c++/17470
        * parser.c (cp_parser_explicit_instantiation): Pass the attributes
        * parser.c (cp_parser_explicit_instantiation): Pass the attributes
        to grokdeclarator.
        to grokdeclarator.
        (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
        (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
        (cp_parser_enum_specifier): Likewise.
        (cp_parser_enum_specifier): Likewise.
        (cp_parser_elaborated_type_specifier): Apply attributes if this
        (cp_parser_elaborated_type_specifier): Apply attributes if this
        declares only the class.
        declares only the class.
        (cp_parser_class_specifier): Apply leading attributes immediately.
        (cp_parser_class_specifier): Apply leading attributes immediately.
        * semantics.c (begin_class_definition): Add attributes parameter,
        * semantics.c (begin_class_definition): Add attributes parameter,
        apply them to the type.
        apply them to the type.
        PR c++/21581
        PR c++/21581
        PR c++/25915
        PR c++/25915
        * tree.c (decl_anon_ns_mem_p): New function.
        * tree.c (decl_anon_ns_mem_p): New function.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * decl2.c (determine_visibility): Make anonymous namespace
        * decl2.c (determine_visibility): Make anonymous namespace
        members static.
        members static.
        (min_vis_r, constrain_visibility): Likewise.
        (min_vis_r, constrain_visibility): Likewise.
        * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
        * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
        pseudo-types.
        pseudo-types.
        * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
        * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
        global_namespace.
        global_namespace.
        * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
        * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
        on anonymous namespaces.
        on anonymous namespaces.
2006-06-28  Jason Merrill  
2006-06-28  Jason Merrill  
        PR c++/27424
        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.
        on to coerce_template_template_parms.
2006-06-25  Lee Millward  
2006-06-25  Lee Millward  
            Mark Mitchell 
            Mark Mitchell 
        PR c++/28054
        PR c++/28054
        * decl2.c (grokbitfied): Remove check for grokdeclarator
        * decl2.c (grokbitfied): Remove check for grokdeclarator
        returning NULL_TREE, instead check for error_mark_node
        returning NULL_TREE, instead check for error_mark_node
        to indicate failure.
        to indicate failure.
        * decl.c (grokdeclarator): Adjust block comment.
        * decl.c (grokdeclarator): Adjust block comment.
2006-06-25  Lee Millward  
2006-06-25  Lee Millward  
        PR c++/28051
        PR c++/28051
        * mangle.c (mangle_conv_op_name_for_type): Check for
        * mangle.c (mangle_conv_op_name_for_type): Check for
        invalid types.
        invalid types.
        * name-lookup.c (push_class_level_binding): Robustify.
        * name-lookup.c (push_class_level_binding): Robustify.
        (do_class_using_decl): Return early if name is error_mark_node.
        (do_class_using_decl): Return early if name is error_mark_node.
2006-06-23  Steve Ellcey  
2006-06-23  Steve Ellcey  
        PR c++/28114
        PR c++/28114
        * name-lookup.c (pushtag): Return if we have error_mark_node.
        * name-lookup.c (pushtag): Return if we have error_mark_node.
2006-06-23  Steve Ellcey  
2006-06-23  Steve Ellcey  
        PR c++/27019
        PR c++/27019
        * typeck2.c (process_init_constructor_array): Set ce->value on errors.
        * typeck2.c (process_init_constructor_array): Set ce->value on errors.
2006-06-23  Volker Reichelt  
2006-06-23  Volker Reichelt  
        PR c++/28112
        PR c++/28112
        * parser.c (cp_parser_attribute_list): Skip attributes with invalid
        * parser.c (cp_parser_attribute_list): Skip attributes with invalid
        arguments.  Fix comment.
        arguments.  Fix comment.
        PR c++/11468
        PR c++/11468
        * init.c (build_new_1): Handle error_mark_nodes returned by
        * init.c (build_new_1): Handle error_mark_nodes returned by
        build_java_class_ref.
        build_java_class_ref.
        (build_java_class_ref): Do not abort compilation, but return
        (build_java_class_ref): Do not abort compilation, but return
        error_mark_node.  Improve error message.  Fix indentation.
        error_mark_node.  Improve error message.  Fix indentation.
2006-06-23  Danny Smith   
2006-06-23  Danny Smith   
        PR target/27789
        PR target/27789
        * decl.c (start_decl): Check that dllimports are not initialized.
        * decl.c (start_decl): Check that dllimports are not initialized.
2006-06-22  Lee Millward  
2006-06-22  Lee Millward  
        PR c++/27805
        PR c++/27805
        * typeck2.c (build_m_component_ref): Use error_operand_p.
        * typeck2.c (build_m_component_ref): Use error_operand_p.
        PR c++/27821
        PR c++/27821
        * decl.c (grokdeclarator): Return error_mark_node on
        * decl.c (grokdeclarator): Return error_mark_node on
        invalid uses of the scope resolution operator.
        invalid uses of the scope resolution operator.
2006-06-22  Volker Reichelt  
2006-06-22  Volker Reichelt  
        PR c++/28111
        PR c++/28111
        * pt.c (determine_specialization): Check for invalid decls.
        * pt.c (determine_specialization): Check for invalid decls.
        PR c++/28110
        PR c++/28110
        * pt.c (unify) : Check for invalid
        * pt.c (unify) : Check for invalid
        parameters.
        parameters.
        PR c++/28109
        PR c++/28109
        * rtti.c (get_tinfo_decl_dynamic): Robustify.
        * rtti.c (get_tinfo_decl_dynamic): Robustify.
2006-06-20  Volker Reichelt  
2006-06-20  Volker Reichelt  
        PR c++/28052
        PR c++/28052
        * init.c (push_base_cleanups): Skip members with invalid types.
        * init.c (push_base_cleanups): Skip members with invalid types.
        * typeck.c (build_class_member_access_expr): Robustify.
        * typeck.c (build_class_member_access_expr): Robustify.
2006-06-19  Mark Mitchell  
2006-06-19  Mark Mitchell  
        * pt.c (instantiate_template): Fix typo in comment.
        * pt.c (instantiate_template): Fix typo in comment.
2006-06-19  Richard Guenther  
2006-06-19  Richard Guenther  
        * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
        * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
        power-of-two token vector size.
        power-of-two token vector size.
2006-06-16  Mark Mitchell  
2006-06-16  Mark Mitchell  
        PR c++/28016
        PR c++/28016
        * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
        * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
        members.
        members.
        PR c++/27979
        PR c++/27979
        * call.c (standard_conversion): Strip cv-qualifiers from bitfield
        * call.c (standard_conversion): Strip cv-qualifiers from bitfield
        types.
        types.
        PR c++/27884
        PR c++/27884
        * decl.c (have_extern_spec): Remove.
        * decl.c (have_extern_spec): Remove.
        (start_decl): Do not check have_extern_spec.
        (start_decl): Do not check have_extern_spec.
        (start_function): Likewise.
        (start_function): Likewise.
        * cp-tree.h (have_extern_spec): Remove.
        * cp-tree.h (have_extern_spec): Remove.
        * parser.c (cp_parser_linkage_specification): Don't set
        * parser.c (cp_parser_linkage_specification): Don't set
        have_extern_spec.
        have_extern_spec.
        (cp_parser_init_declarator): Likewise.
        (cp_parser_init_declarator): Likewise.
        (cp_parser_parameter_declaration): Do not treat parameters as
        (cp_parser_parameter_declaration): Do not treat parameters as
        within the scope of an unbraced linkage specification.
        within the scope of an unbraced linkage specification.
2006-06-15  Mark Mitchell  
2006-06-15  Mark Mitchell  
        PR c++/27689
        PR c++/27689
        * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
        * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
        macro.
        macro.
        * pt.c (unify): Use it.
        * pt.c (unify): Use it.
        PR c++/27666
        PR c++/27666
        * call.c (build_conditional_expr): Robustify.
        * call.c (build_conditional_expr): Robustify.
        PR c++/27640
        PR c++/27640
        * pt.c (instantiate_template): Set processing_template_decl to
        * pt.c (instantiate_template): Set processing_template_decl to
        zero while performing substitutions.
        zero while performing substitutions.
2006-06-14  Mark Mitchell  
2006-06-14  Mark Mitchell  
        PR c++/27665
        PR c++/27665
        * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
        * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
        identify destructors.
        identify destructors.
        (cp_parser_nested_name_specifier_opt): Remove invalid
        (cp_parser_nested_name_specifier_opt): Remove invalid
        optimization.
        optimization.
        (cp_parser_template_id): Refine heuristic for determining whether
        (cp_parser_template_id): Refine heuristic for determining whether
        we are entering a scope.
        we are entering a scope.
        PR c++/27648
        PR c++/27648
        * parser.c (cp_parser_declarator): Robustify.
        * parser.c (cp_parser_declarator): Robustify.
        PR c++/26559
        PR c++/26559
        * pt.c (tsubst_expr): Use finish_omp_atomic.
        * pt.c (tsubst_expr): Use finish_omp_atomic.
        (value_dependent_expression_p): All CALL_EXPRs are dependent.
        (value_dependent_expression_p): All CALL_EXPRs are dependent.
        * semantics.c (finish_omp_atomic): Rework to use standard
        * semantics.c (finish_omp_atomic): Rework to use standard
        paradigms for handling non-dependent expressions.
        paradigms for handling non-dependent expressions.
2006-06-14  Gabriel Dos Reis  
2006-06-14  Gabriel Dos Reis  
        * typeck.c (build_modify_expr): Tidy diagnostic message.
        * typeck.c (build_modify_expr): Tidy diagnostic message.
2006-06-14  Mark Mitchell  
2006-06-14  Mark Mitchell  
        PR c++/28018
        PR c++/28018
        * typeck.c (build_modify_expr): Disallow array assignment.
        * typeck.c (build_modify_expr): Disallow array assignment.
2006-06-14  Gabriel Dos Reis  
2006-06-14  Gabriel Dos Reis  
        * cp-tree.def: Fix typo.
        * cp-tree.def: Fix typo.
2006-06-13  Mark Mitchell  
2006-06-13  Mark Mitchell  
        PR c++/27227
        PR c++/27227
        * decl.c (decls_match): Allow an extern "C" variable declarations
        * decl.c (decls_match): Allow an extern "C" variable declarations
        from different namespaces to match.
        from different namespaces to match.
        (duplicate_decls): Disallow redeclaring a variable with a
        (duplicate_decls): Disallow redeclaring a variable with a
        different linkage specification.
        different linkage specification.
2006-06-13  Jakub Jelinek  
2006-06-13  Jakub Jelinek  
        PR middle-end/27793
        PR middle-end/27793
        * cp-tree.h (cxx_int_tree_map): New struct.
        * cp-tree.h (cxx_int_tree_map): New struct.
        (struct language_function): Add extern_decl_map field.
        (struct language_function): Add extern_decl_map field.
        * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
        * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
        to cp_function_chain->extern_decl_map hash table instead of
        to cp_function_chain->extern_decl_map hash table instead of
        copying over DECL_UID.
        copying over DECL_UID.
        * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
        * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
        functions.
        functions.
        (cp_genericize_r): Remap DECL_EXTERN local decls using
        (cp_genericize_r): Remap DECL_EXTERN local decls using
        cp_function_chain->extern_decl_map hash table.
        cp_function_chain->extern_decl_map hash table.
        * decl.c (finish_function): Clear extern_decl_map.
        * decl.c (finish_function): Clear extern_decl_map.
2006-06-12  Volker Reichelt  
2006-06-12  Volker Reichelt  
        PR c++/27601
        PR c++/27601
        * semantics.c (finish_offsetof): Handle pseudo-destructors.
        * semantics.c (finish_offsetof): Handle pseudo-destructors.
        PR c++/27933
        PR c++/27933
        * name-lookup.c (lookup_qualified_name): Always return error_mark_node
        * name-lookup.c (lookup_qualified_name): Always return error_mark_node
        if lookup fails.
        if lookup fails.
        PR c++/27951
        PR c++/27951
        * decl2.c (finish_anon_union): Return early if build_anon_union_vars
        * decl2.c (finish_anon_union): Return early if build_anon_union_vars
        fails.
        fails.
2006-06-12  Roger Sayle  
2006-06-12  Roger Sayle  
        PR c++/21210
        PR c++/21210
        * typeck2.c (build_functional_cast): Use cp_convert to construct
        * typeck2.c (build_functional_cast): Use cp_convert to construct
        non-aggregate initializers instead of the user-level build_c_cast.
        non-aggregate initializers instead of the user-level build_c_cast.
2006-06-07  Volker Reichelt  
2006-06-07  Volker Reichelt  
        PR c++/27601
        PR c++/27601
        * cp-tree.h (finish_offsetof): Add prototype.
        * cp-tree.h (finish_offsetof): Add prototype.
        * semantics.c (finish_offsetof): New function.
        * semantics.c (finish_offsetof): New function.
        * parser.c (cp_parser_builtin_offsetof): Call it instead of
        * parser.c (cp_parser_builtin_offsetof): Call it instead of
        fold_offsetof.
        fold_offsetof.
        * pt.c (tsubst_copy_and_build): Likewise.
        * pt.c (tsubst_copy_and_build): Likewise.
2006-06-06  Mark Mitchell  
2006-06-06  Mark Mitchell  
        PR c++/27177
        PR c++/27177
        * call.c (standard_conversion): Require that the derived type be
        * call.c (standard_conversion): Require that the derived type be
        complete when performing a derived-to-base conversion.
        complete when performing a derived-to-base conversion.
2006-06-04  Mark Mitchell  
2006-06-04  Mark Mitchell  
        PR c++/27819
        PR c++/27819
        * decl.c (cp_finish_decl): Process initializers for static data
        * decl.c (cp_finish_decl): Process initializers for static data
        members with non-dependent initializers, even in templates.
        members with non-dependent initializers, even in templates.
        PR c++/27722
        PR c++/27722
        * decl.c (maybe_deduce_size_from_array_init): If the declaration
        * decl.c (maybe_deduce_size_from_array_init): If the declaration
        is erroneous, give it an erroneous type.
        is erroneous, give it an erroneous type.
        (layout_var_decl): If the type is erroneous, give up.
        (layout_var_decl): If the type is erroneous, give up.
        (check_initializer): Likewise.
        (check_initializer): Likewise.
        PR c++/27807
        PR c++/27807
        * cp-tree.h (TYPE_OBJ_P): New macro.
        * cp-tree.h (TYPE_OBJ_P): New macro.
        (TYPE_PTROB_P): Use it.
        (TYPE_PTROB_P): Use it.
        (TYPE_REF_OBJ_P): Likewise.
        (TYPE_REF_OBJ_P): Likewise.
        * semantics.c (finish_compound_literal): Do not permit compound
        * semantics.c (finish_compound_literal): Do not permit compound
        literals of non-object types.
        literals of non-object types.
        PR c++/27806
        PR c++/27806
        * typeck.c (original_type): Robustify.
        * typeck.c (original_type): Robustify.
2006-06-05  Volker Reichelt  
2006-06-05  Volker Reichelt  
        PR c++/27804
        PR c++/27804
        * init.c (constant_value_1): Return decl instead of error_mark_node
        * init.c (constant_value_1): Return decl instead of error_mark_node
        for invalid initializers.
        for invalid initializers.
2006-06-01  Andrew Pinski  
2006-06-01  Andrew Pinski  
        PR c++/27592
        PR c++/27592
        * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
        * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
        on operand of the COND_EXPR for the null pointer check.
        on operand of the COND_EXPR for the null pointer check.
2006-06-01  Andrew Pinski  
2006-06-01  Andrew Pinski  
        PR c++/26740
        PR c++/26740
        * typeck.c (build_unary_op): Mark the function as being used.
        * typeck.c (build_unary_op): Mark the function as being used.
2006-06-01  Alexandre Oliva  
2006-06-01  Alexandre Oliva  
        PR c++/26660
        PR c++/26660
        * parser.c (cp_parser_initial_pragma): Read one more token for
        * parser.c (cp_parser_initial_pragma): Read one more token for
        caller after reading PCH file in.
        caller after reading PCH file in.
2006-05-31  Mark Mitchell  
2006-05-31  Mark Mitchell  
        PR c++/27801
        PR c++/27801
        * call.c (perform_implicit_conversion): Do not actually perform
        * call.c (perform_implicit_conversion): Do not actually perform
        conversions in templates.
        conversions in templates.
        PR c++/26496
        PR c++/26496
        * call.c (resolve_args): Check for invalid uses of bound
        * call.c (resolve_args): Check for invalid uses of bound
        non-static member functions.
        non-static member functions.
        * init.c (build_offset_ref): Return error_mark_node for errors.
        * init.c (build_offset_ref): Return error_mark_node for errors.
        PR c++/27385
        PR c++/27385
        * decl.c (reshape_init): Robustify.
        * decl.c (reshape_init): Robustify.
        (reshape_init_array_1): Likewise.
        (reshape_init_array_1): Likewise.
2006-05-30  Mark Mitchell  
2006-05-30  Mark Mitchell  
        PR c++/27808
        PR c++/27808
        * parser.c (cp_parser_decl_specifier_seq): Issue errors about
        * parser.c (cp_parser_decl_specifier_seq): Issue errors about
        "friend" specifiers that do not appear in class scopes.
        "friend" specifiers that do not appear in class scopes.
        PR c++/27803
        PR c++/27803
        * class.c (check_bitfield_decl): Ensure that all bitfields have
        * class.c (check_bitfield_decl): Ensure that all bitfields have
        integral type.
        integral type.
2006-05-29  Kazu Hirata  
2006-05-29  Kazu Hirata  
        * pt.c (convert_nontype_argument): Fix a typo in an error
        * pt.c (convert_nontype_argument): Fix a typo in an error
        message.
        message.
2006-05-28  Kazu Hirata  
2006-05-28  Kazu Hirata  
        * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
        * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
        spelling conventions.
        spelling conventions.
2006-05-24  Mark Mitchell  
2006-05-24  Mark Mitchell  
        PR c++/20103
        PR c++/20103
        * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
        * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
        error_mark_node to indicate an initialization is OK.
        error_mark_node to indicate an initialization is OK.
        (start_decl): Likewise.  Adjust call to start_decl_1.
        (start_decl): Likewise.  Adjust call to start_decl_1.
        (start_decl_1): Add initialized parameter.  Simplify.
        (start_decl_1): Add initialized parameter.  Simplify.
        * except.c (initialize_handler_parm): Adjust call to
        * except.c (initialize_handler_parm): Adjust call to
        setart_decl_1.
        setart_decl_1.
        (expand_start_catch_block): Let cp_finish_decl initialize catch
        (expand_start_catch_block): Let cp_finish_decl initialize catch
        parameters.
        parameters.
        * cp-tree.h (start_decl_1): Adjust prototype.
        * cp-tree.h (start_decl_1): Adjust prototype.
        * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
        * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
        (instantiate_decl): Let cp_finish_decl handle initialization.
        (instantiate_decl): Let cp_finish_decl handle initialization.
        * semantics.c (finish_compound_literal): Create a temporary
        * semantics.c (finish_compound_literal): Create a temporary
        variable for the literal.
        variable for the literal.
        * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
        * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
        cases.
        cases.
        * decl2.c (finish_static_data_member_decl): Don't set
        * decl2.c (finish_static_data_member_decl): Don't set
        DECL_INITIAL.
        DECL_INITIAL.
        (grokfield): Do not try to initialize functions.
        (grokfield): Do not try to initialize functions.
2006-05-23  Mark Mitchell  
2006-05-23  Mark Mitchell  
        PR c++/20173
        PR c++/20173
        * pt.c (determine_specialization): Disallow partial
        * pt.c (determine_specialization): Disallow partial
        specializations of templates.
        specializations of templates.
2006-05-22  Volker Reichelt  
2006-05-22  Volker Reichelt  
        PR c++/27716
        PR c++/27716
        * typeck.c (build_modify_expr): Test arguments for error_operand_p.
        * typeck.c (build_modify_expr): Test arguments for error_operand_p.
        * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
        * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2006-05-21  Mark Mitchell  
2006-05-21  Mark Mitchell  
        PR c++/27210
        PR c++/27210
        * cp-tree.h (cp_save_expr): New function.
        * cp-tree.h (cp_save_expr): New function.
        * init.c (build_new): Correct logic for zero-element array
        * init.c (build_new): Correct logic for zero-element array
        warning.  Use cp_save_expr.
        warning.  Use cp_save_expr.
        * tree.c (cp_save_expr): New function.
        * tree.c (cp_save_expr): New function.
2006-05-21  Volker Reichelt  
2006-05-21  Volker Reichelt  
        PR c++/27398
        PR c++/27398
        * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
        * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
        or void_type_node.
        or void_type_node.
2006-05-19  Mike Stump  
2006-05-19  Mike Stump  
        * typeck.c (default_conversion): Remove static.
        * typeck.c (default_conversion): Remove static.
2006-05-19  Mark Mitchell  
2006-05-19  Mark Mitchell  
        PR c++/26433
        PR c++/26433
        * cp-tree.h (begin_function_try_block): Change prototype.
        * cp-tree.h (begin_function_try_block): Change prototype.
        (finish_function_handler_sequence): Likewise.
        (finish_function_handler_sequence): Likewise.
        * parser.c (cp_parser_function_try_block): Adjust calls.
        * parser.c (cp_parser_function_try_block): Adjust calls.
        * pt.c (tsubst_expr): Adjust calls.
        * pt.c (tsubst_expr): Adjust calls.
        * semantics.c (begin_function_try_block): Create an artificial
        * semantics.c (begin_function_try_block): Create an artificial
        outer scope.
        outer scope.
        (finish_function_handler_sequence): Close it.
        (finish_function_handler_sequence): Close it.
2006-05-18  Mark Mitchell  
2006-05-18  Mark Mitchell  
        PR c++/27471
        PR c++/27471
        PR c++/27506
        PR c++/27506
        * typeck.c (decay_conversion): Convert bitfields to their declared
        * typeck.c (decay_conversion): Convert bitfields to their declared
        types here.  Improve documentation.  Avoid use of cp_convert.
        types here.  Improve documentation.  Avoid use of cp_convert.
        (default_conversion): Make it static.  Perform integral promotions
        (default_conversion): Make it static.  Perform integral promotions
        before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
        before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
        conversions.
        conversions.
        * init.c (build_init): Remove.
        * init.c (build_init): Remove.
        (expand_default_init): Do not call rvalue.
        (expand_default_init): Do not call rvalue.
        * call.c (null_ptr_cst_p): Robustify.
        * call.c (null_ptr_cst_p): Robustify.
        (build_conditional_expr): Tidy.
        (build_conditional_expr): Tidy.
        * except.c (build_throw): Do not perform lvalue-to-rvalue
        * except.c (build_throw): Do not perform lvalue-to-rvalue
        conversion on operand before initializing temporary.
        conversion on operand before initializing temporary.
        * tree.c (convert.h): Include it.
        * tree.c (convert.h): Include it.
        (convert_bitfield_to_declared_type): Use convert_to_integer, not
        (convert_bitfield_to_declared_type): Use convert_to_integer, not
        cp_convert.
        cp_convert.
        (rvalue): Don't convert bitfields to their declared type here.
        (rvalue): Don't convert bitfields to their declared type here.
        * cp-tree.h (build_init): Remove.
        * cp-tree.h (build_init): Remove.
        (default_conversion): Likewise.
        (default_conversion): Likewise.
        * typeck2.c (build_m_component_ref): Do not perform
        * typeck2.c (build_m_component_ref): Do not perform
        lvalue-to-rvalue, function-to-pointer, or array-to-pointer
        lvalue-to-rvalue, function-to-pointer, or array-to-pointer
        conversions here.  Correct error message.
        conversions here.  Correct error message.
2006-05-17  Mark Mitchell  
2006-05-17  Mark Mitchell  
        PR c++/26122
        PR c++/26122
        * decl2.c (check_member_template): Remove checks for virtual
        * decl2.c (check_member_template): Remove checks for virtual
        functions.
        functions.
        * parser.c (cp_parser_function_specifier_opt): Complain about
        * parser.c (cp_parser_function_specifier_opt): Complain about
        virtual templates.
        virtual templates.
        (cp_parser_pure_specifier): Likewise.
        (cp_parser_pure_specifier): Likewise.
        PR c++/26068
        PR c++/26068
        * parser.c (cp_parser_set_storage_class): Check for
        * parser.c (cp_parser_set_storage_class): Check for
        invalid uses of storage classes on unbraced linkage
        invalid uses of storage classes on unbraced linkage
        specifications.
        specifications.
        (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
        (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
        to cp_parser_set_storage_class.
        to cp_parser_set_storage_class.
2006-05-17  Jakub Jelinek  
2006-05-17  Jakub Jelinek  
        PR c++/27491
        PR c++/27491
        * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
        * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
        on CONSTRUCTORs.
        on CONSTRUCTORs.
        PR middle-end/27415
        PR middle-end/27415
        * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
        * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
        on combined parallel workshare constructs.
        on combined parallel workshare constructs.
        * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
        * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2006-05-16  H.J. Lu  
2006-05-16  H.J. Lu  
        PR driver/26885
        PR driver/26885
        * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
        * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2006-05-15  Mark Mitchell  
2006-05-15  Mark Mitchell  
        PR c++/27339
        PR c++/27339
        * cp-tree.h (perform_access_checks): New function.
        * cp-tree.h (perform_access_checks): New function.
        * semantics.c (perform_access_checks): New function.
        * semantics.c (perform_access_checks): New function.
        (perform_deferred_access_checks): Use it.
        (perform_deferred_access_checks): Use it.
        * parser.c (cp_parser_simple_declaration): Adjust call to
        * parser.c (cp_parser_simple_declaration): Adjust call to
        cp_parser_init_declarator.
        cp_parser_init_declarator.
        (cp_parser_type_parameter): Do not defer checks in default
        (cp_parser_type_parameter): Do not defer checks in default
        arguments.
        arguments.
        (cp_parser_explicit_specialization): Adjust call to
        (cp_parser_explicit_specialization): Adjust call to
        cp_parser_single_declaration.
        cp_parser_single_declaration.
        (cp_parser_init_declarator): Perform template-parameter access
        (cp_parser_init_declarator): Perform template-parameter access
        checks.
        checks.
        (cp_parser_parameter_declaration): Do not defer checks for
        (cp_parser_parameter_declaration): Do not defer checks for
        template parameter default arguments.
        template parameter default arguments.
        (cp_parser_template_declaration_after_export): Gather access
        (cp_parser_template_declaration_after_export): Gather access
        checks for template parameters, and pass them to
        checks for template parameters, and pass them to
        cp_parser_single_declaration.
        cp_parser_single_declaration.
        (cp_parser_template_parameter_access_checks): New function.
        (cp_parser_template_parameter_access_checks): New function.
        (cp_parser_single_declaration): Add checks parameter.
        (cp_parser_single_declaration): Add checks parameter.
        PR c++/27505
        PR c++/27505
        * call.c (convert_like_real): Convert bitfields to their declared
        * call.c (convert_like_real): Convert bitfields to their declared
        types when forming an rvalue.
        types when forming an rvalue.
        * tree.c (convert_bitfield_to_declared_type): New function.
        * tree.c (convert_bitfield_to_declared_type): New function.
        (rvalue): Use it.
        (rvalue): Use it.
        * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
        * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
2006-05-15  Volker Reichelt  
2006-05-15  Volker Reichelt  
        PR c++/27582
        PR c++/27582
        * pt.c (any_dependent_template_arguments_p): Return early on invalid
        * pt.c (any_dependent_template_arguments_p): Return early on invalid
        argument list.
        argument list.
        PR c++/27581
        PR c++/27581
        * search.c (adjust_result_of_qualified_name_lookup): Skip on
        * search.c (adjust_result_of_qualified_name_lookup): Skip on
        invalid context_class.
        invalid context_class.
        PR c++/27315
        PR c++/27315
        * pt.c (do_decl_instantiation): Return early on invalid decl.
        * pt.c (do_decl_instantiation): Return early on invalid decl.
        PR c++/27559
        PR c++/27559
        * pt.c (push_template_decl_real): Return error_mark_node instead
        * pt.c (push_template_decl_real): Return error_mark_node instead
        of broken decl.
        of broken decl.
        PR c++/27496
        PR c++/27496
        * pt.c (tsubst_friend_class): Return early on invalid friend
        * pt.c (tsubst_friend_class): Return early on invalid friend
        declarations.
        declarations.
2006-05-14  H.J. Lu  
2006-05-14  H.J. Lu  
        * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
        * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
        (cp/decl2.o): Likewise.
        (cp/decl2.o): Likewise.
        (cp/typeck.o): Likewise.
        (cp/typeck.o): Likewise.
        (cp/cvt.o): Likewise.
        (cp/cvt.o): Likewise.
        (cp/parser.o): Likewise.
        (cp/parser.o): Likewise.
        (cp/call.o): Replace target.h with $(TARGET_H).
        (cp/call.o): Replace target.h with $(TARGET_H).
2006-05-14  Alexandre Oliva  
2006-05-14  Alexandre Oliva  
        * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
        * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
        COMPONENT_REF alone.
        COMPONENT_REF alone.
2006-05-11  Volker Reichelt  
2006-05-11  Volker Reichelt  
        PR c++/27547
        PR c++/27547
        * decl.c (copy_fn_p): Return early on non-member functions.
        * decl.c (copy_fn_p): Return early on non-member functions.
2006-05-08  Volker Reichelt  
2006-05-08  Volker Reichelt  
        PR c++/27447
        PR c++/27447
        * decl2.c (build_memfn_type): Skip invalid functions and class types.
        * decl2.c (build_memfn_type): Skip invalid functions and class types.
2006-05-06  Volker Reichelt  
2006-05-06  Volker Reichelt  
        PR c++/27427
        PR c++/27427
        * pt.c (convert_nontype_argument): Return early on invalid arguments.
        * pt.c (convert_nontype_argument): Return early on invalid arguments.
        * pt.c (process_template_parm): Remove superfluous temporary.
        * pt.c (process_template_parm): Remove superfluous temporary.
        PR c++/27430
        PR c++/27430
        * pt.c (process_template_parm): Handle erroneous non-type parameters.
        * pt.c (process_template_parm): Handle erroneous non-type parameters.
        PR c++/27423
        PR c++/27423
        * typeck.c (convert_for_initialization): Skip erroneous types.
        * typeck.c (convert_for_initialization): Skip erroneous types.
        PR c++/27422
        PR c++/27422
        * typeck.c (convert_arguments): Return early on args with
        * typeck.c (convert_arguments): Return early on args with
        invalid types.
        invalid types.
2006-05-03  Aldy Hernandez  
2006-05-03  Aldy Hernandez  
        PR/21391
        PR/21391
        * typeck.c (build_static_cast_1): Save casted types in used types
        * typeck.c (build_static_cast_1): Save casted types in used types
        hash table.
        hash table.
        (build_reinterpret_cast_1): Same.
        (build_reinterpret_cast_1): Same.
        * rtti.c (build_dynamic_cast_1): Same.
        * rtti.c (build_dynamic_cast_1): Same.
2006-05-04  Jakub Jelinek  
2006-05-04  Jakub Jelinek  
        PR c++/27359
        PR c++/27359
        * parser.c (cp_parser_omp_for_loop): Only call
        * parser.c (cp_parser_omp_for_loop): Only call
        cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
        cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
        called.
        called.
2006-05-02  Mark Mitchell  
2006-05-02  Mark Mitchell  
        PR c++/27102
        PR c++/27102
        * decl.c (grokdeclarator): Robustify checks for defining members
        * decl.c (grokdeclarator): Robustify checks for defining members
        of incomplete types.
        of incomplete types.
        PR c++/27309
        PR c++/27309
        * class.c (add_method): Call grok_special_member_properties.
        * class.c (add_method): Call grok_special_member_properties.
        * decl.c (grokdeclarator): Don't call it here.
        * decl.c (grokdeclarator): Don't call it here.
        (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
        (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
        assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
        assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
        constructor.
        constructor.
        (start_method): Don't call grok_special_member_properties.
        (start_method): Don't call grok_special_member_properties.
        * method.c (implicitly_declare_fn): Likewise.
        * method.c (implicitly_declare_fn): Likewise.
        * pt.c (instantiate_class_template): Likewise.
        * pt.c (instantiate_class_template): Likewise.
        * decl2.c (grokfield): Likewise.
        * decl2.c (grokfield): Likewise.
2006-05-02  Jakub Jelinek  
2006-05-02  Jakub Jelinek  
        PR middle-end/27337
        PR middle-end/27337
        * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
        * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
        * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
        * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
        * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
        * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2006-04-30  Mark Mitchell  
2006-04-30  Mark Mitchell  
        PR c++/27094
        PR c++/27094
        * pt.c (tsubst_default_argument): Increment function_depth around
        * pt.c (tsubst_default_argument): Increment function_depth around
        call to tsubst_expr.
        call to tsubst_expr.
        * parser.c (cp_parser_parameter_declaration): Likewise.
        * parser.c (cp_parser_parameter_declaration): Likewise.
        * decl2.c (mark_used): Tidy.
        * decl2.c (mark_used): Tidy.
2006-04-30  Volker Reichelt  
2006-04-30  Volker Reichelt  
        PR c++/27278
        PR c++/27278
        * decl.c (grok_op_properties): Skip operators with invalid args
        * decl.c (grok_op_properties): Skip operators with invalid args
        when checking for class-type or enum-type args.
        when checking for class-type or enum-type args.
2006-04-29  Volker Reichelt  
2006-04-29  Volker Reichelt  
        PR c++/27279
        PR c++/27279
        * decl.c (copy_fn_p): Skip functions with invalid first arg.
        * decl.c (copy_fn_p): Skip functions with invalid first arg.
2006-04-27  Mark Mitchell  
2006-04-27  Mark Mitchell  
        PR c++/27292
        PR c++/27292
        * tree.c (rvalue): Convert bitfields to their declared types.
        * tree.c (rvalue): Convert bitfields to their declared types.
        PR c++/27102
        PR c++/27102
        * typeck2.c (cxx_incomplete_type_diagnostic): Handle
        * typeck2.c (cxx_incomplete_type_diagnostic): Handle
        TYPENAME_TYPE.
        TYPENAME_TYPE.
2006-04-24  Mark Mitchell  
2006-04-24  Mark Mitchell  
        PR c++/27292
        PR c++/27292
        * typeck.c (decay_conversion): Don't adjust bitfield types.
        * typeck.c (decay_conversion): Don't adjust bitfield types.
        (perform_integral_promotions): Treat bitfield enums as enums, not
        (perform_integral_promotions): Treat bitfield enums as enums, not
        as short integer types.
        as short integer types.
        * tree.c (rvalue): Convert bitfields to their correct types.
        * tree.c (rvalue): Convert bitfields to their correct types.
2006-04-24  Volker Reichelt  
2006-04-24  Volker Reichelt  
        PR c++/19963
        PR c++/19963
        * class.c (layout_class_type): Skip fields with invalid types.
        * class.c (layout_class_type): Skip fields with invalid types.
2006-04-23  Mark Mitchell  
2006-04-23  Mark Mitchell  
        PR c++/26912
        PR c++/26912
        * cp-tree.h (build_this_parm): Declare.
        * cp-tree.h (build_this_parm): Declare.
        (grok_method_quals): Remove.
        (grok_method_quals): Remove.
        (build_memfn_type): Declare.
        (build_memfn_type): Declare.
        (build_artificial_parm): Declare.
        (build_artificial_parm): Declare.
        (do_friend): Remove quals parameter.
        (do_friend): Remove quals parameter.
        * decl.c (build_this_parm): New function.
        * decl.c (build_this_parm): New function.
        (grokfndecl): Use it.  Do not pass quals to grokclassfn.
        (grokfndecl): Use it.  Do not pass quals to grokclassfn.
        (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
        (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
        unnecessary TYPE_DECLs.  Correct qualification of member function
        unnecessary TYPE_DECLs.  Correct qualification of member function
        types.  Tidy.
        types.  Tidy.
        * method.c (implicitly_declare_fn): Use build_this_parm.
        * method.c (implicitly_declare_fn): Use build_this_parm.
        * friend.c (do_friend): Remove quals parameter.
        * friend.c (do_friend): Remove quals parameter.
        * decl2.c (grok_method_quals): Remove.
        * decl2.c (grok_method_quals): Remove.
        (build_memfn_type): New function.
        (build_memfn_type): New function.
        (build_artificial_parm): Give it external linkage.
        (build_artificial_parm): Give it external linkage.
        (grokclassfn): Remove quals parameter.  Do not build "this"
        (grokclassfn): Remove quals parameter.  Do not build "this"
        PARM_DECL here.
        PARM_DECL here.
        PR c++/26534
        PR c++/26534
        * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
        * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
        * typeck.c (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
        (decay_conversion): Convert bitfield expressions to the correct
        type.
        type.
        (build_modify_expr): Remove spurious conversions.
        (build_modify_expr): Remove spurious conversions.
        * class.c (layout_class_type): Modify the type of bitfields to
        * class.c (layout_class_type): Modify the type of bitfields to
        indicate a limited range.
        indicate a limited range.
        * call.c (standard_conversion): Adjust the type of bitfield
        * call.c (standard_conversion): Adjust the type of bitfield
        expressions used in an rvalue context.
        expressions used in an rvalue context.
        (build_conditional_expr): Likewise.
        (build_conditional_expr): Likewise.
2006-04-22  Kazu Hirata  
2006-04-22  Kazu Hirata  
        * decl.c: Fix comment typos.
        * decl.c: Fix comment typos.
2006-04-21  Eric Christopher  
2006-04-21  Eric Christopher  
        * decl.c: Fix typo in function name.
        * decl.c: Fix typo in function name.
2006-04-19  Volker Reichelt  
2006-04-19  Volker Reichelt  
        PR c++/26558
        PR c++/26558
        * parser.c (cp_parser_class_name): Check for invalid typenames.
        * parser.c (cp_parser_class_name): Check for invalid typenames.
        Rearrange code.
        Rearrange code.
        PR c++/26739
        PR c++/26739
        * pt.c (tsubst_friend_function): Return early if
        * pt.c (tsubst_friend_function): Return early if
        pushdecl_namespace_level fails.
        pushdecl_namespace_level fails.
        PR c++/26036
        PR c++/26036
        * typeck.c (convert_arguments): Return error_mark_node instead of
        * typeck.c (convert_arguments): Return error_mark_node instead of
        error_mark_list.
        error_mark_list.
        * cp-tree.h (error_mark_list): Remove declaration.
        * cp-tree.h (error_mark_list): Remove declaration.
        * decl.c (error_mark_list): Remove definition.
        * decl.c (error_mark_list): Remove definition.
        (cxx_init_decl_processing): Do not initialize error_mark_list.
        (cxx_init_decl_processing): Do not initialize error_mark_list.
        PR c++/10385
        PR c++/10385
        * rtti.c (build_dynamic_cast_1): Check for invalid conversions
        * rtti.c (build_dynamic_cast_1): Check for invalid conversions
        before calling convert_to_reference.
        before calling convert_to_reference.
        * cvt.c (convert_to_reference): Assert that reftype is a
        * cvt.c (convert_to_reference): Assert that reftype is a
        REFERENCE_TYPE.
        REFERENCE_TYPE.
2006-04-19  Mark Mitchell  
2006-04-19  Mark Mitchell  
        PR c++/27102
        PR c++/27102
        * class.c (currently_open_class): Tidy.
        * class.c (currently_open_class): Tidy.
        * decl.c (grokdeclarator): If we encounter an erroneous
        * decl.c (grokdeclarator): If we encounter an erroneous
        declarator, assume that we have already issued an error message
        declarator, assume that we have already issued an error message
        and return.  Return error_mark_node instead of NULL_TREE in more
        and return.  Return error_mark_node instead of NULL_TREE in more
        places.  Issue errors about function definitions that do not have
        places.  Issue errors about function definitions that do not have
        a function declarator.  Check for complete types for all function
        a function declarator.  Check for complete types for all function
        definitions.
        definitions.
        * cp-tree.h (cp_error_declarator): Remove.
        * cp-tree.h (cp_error_declarator): Remove.
        (currently_open_class): Change return type.
        (currently_open_class): Change return type.
        * parser.c (cp_parser_id_expression): Add optional_p parameter.
        * parser.c (cp_parser_id_expression): Add optional_p parameter.
        (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
        (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
        (cp_parser_id_expression): Likewise.
        (cp_parser_id_expression): Likewise.
        (cp_parser_unqualified_id): If the name is optional, return
        (cp_parser_unqualified_id): If the name is optional, return
        NULL_TREE.
        NULL_TREE.
        (cp_parser_postfix_dot_deref_expression): Adjust calls.
        (cp_parser_postfix_dot_deref_expression): Adjust calls.
        (cp_parser_type_parameter): Likewise.
        (cp_parser_type_parameter): Likewise.
        (cp_parser_unqualified_id): Likewise.
        (cp_parser_unqualified_id): Likewise.
        (cp_parser_direct_declarator): Likewise.
        (cp_parser_direct_declarator): Likewise.
        (cp_parser_declarator_id): Add optional_p parameter.
        (cp_parser_declarator_id): Add optional_p parameter.
        (cp_parser_function_definition_from_specifiers_and_declarator):
        (cp_parser_function_definition_from_specifiers_and_declarator):
        Assume that start_function indicates failure only if it has issued
        Assume that start_function indicates failure only if it has issued
        an error.
        an error.
        (cp_parser_omp_var_list_no_open): Adjust calls.
        (cp_parser_omp_var_list_no_open): Adjust calls.
2006-04-17  Janis Johnson  
2006-04-17  Janis Johnson  
        PR c++/26114, c++/26115
        PR c++/26114, c++/26115
        * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
        * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
        * class.c (check_field_decls): Ditto.
        * class.c (check_field_decls): Ditto.
2006-04-17  Volker Reichelt  
2006-04-17  Volker Reichelt  
        * init.c (build_offset_ref): Remove superfluous temporary.
        * init.c (build_offset_ref): Remove superfluous temporary.
2006-04-16  Mark Mitchell  
2006-04-16  Mark Mitchell  
        PR c++/26365
        PR c++/26365
        * typeck.c (finish_class_member_access_expr): Robustify
        * typeck.c (finish_class_member_access_expr): Robustify
2006-04-15  Kazu Hirata  
2006-04-15  Kazu Hirata  
        * Make-lang.in (cp/pt.o): Depend on vecprim.h.
        * Make-lang.in (cp/pt.o): Depend on vecprim.h.
        * pt.c: Include vecprim.h.
        * pt.c: Include vecprim.h.
        (inline_parm_levels): Change the type to VEC(int,heap) *.
        (inline_parm_levels): Change the type to VEC(int,heap) *.
        (inline_parm_levels_used): Remove.
        (inline_parm_levels_used): Remove.
        (maybe_begin_member_template_processing,
        (maybe_begin_member_template_processing,
        maybe_end_member_template_processing): Use VEC instead of
        maybe_end_member_template_processing): Use VEC instead of
        VARRAY.
        VARRAY.
        * cp/call.c: Fix comment typos.
        * cp/call.c: Fix comment typos.
2006-04-12  Mark Mitchell  
2006-04-12  Mark Mitchell  
        * parser.c (cp_parser_init_declarator): Initialize local variables
        * parser.c (cp_parser_init_declarator): Initialize local variables
        aggressively.
        aggressively.
2006-04-12  Roger Sayle  
2006-04-12  Roger Sayle  
        * parser.c (cp_parser_init_declarator): Initialise
        * parser.c (cp_parser_init_declarator): Initialise
        is_parenthesized_init to false to avoid compiler warning.
        is_parenthesized_init to false to avoid compiler warning.
2006-04-11  Mark Mitchell  
2006-04-11  Mark Mitchell  
        * cp-tree.h (build_operator_new_call): Adjust prototype.
        * cp-tree.h (build_operator_new_call): Adjust prototype.
        (build_new_method_call): Likewise.
        (build_new_method_call): Likewise.
        (build_op_delete_call): Likewise.
        (build_op_delete_call): Likewise.
        * init.c (build_raw_new_expr): New function.
        * init.c (build_raw_new_expr): New function.
        (build_new_1): Pass information as parameters, rather than
        (build_new_1): Pass information as parameters, rather than
        bundling it into a NEW_EXPR.
        bundling it into a NEW_EXPR.
        (build_new): Adjust accordingly.
        (build_new): Adjust accordingly.
        (build_vec_delete_1): Adjust for changes to build_op_delete_call.
        (build_vec_delete_1): Adjust for changes to build_op_delete_call.
        (build_delete): Likewise.
        (build_delete): Likewise.
        * decl.c (finish_destructor_body): Likewise.
        * decl.c (finish_destructor_body): Likewise.
        * call.c (build_operator_new_call): Return the allocation function
        * call.c (build_operator_new_call): Return the allocation function
        used.
        used.
        (build_op_delete_call): Take allocation function as parameter.
        (build_op_delete_call): Take allocation function as parameter.
        (build_special_member_call): Adjust call to build_new_method_call.
        (build_special_member_call): Adjust call to build_new_method_call.
        (build_new_method_call): Return function called.
        (build_new_method_call): Return function called.
        * pt.c (tsubst_copy_and_build): Adjust call to
        * pt.c (tsubst_copy_and_build): Adjust call to
        build_new_method_call.
        build_new_method_call.
        * semantics.c (finish_call_expr): Likewise.
        * semantics.c (finish_call_expr): Likewise.
        * parser.c (cp_parser_postfix_expression): Likewise.
        * parser.c (cp_parser_postfix_expression): Likewise.
        * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
        * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
        "incomplete", not "undefined", types.
        "incomplete", not "undefined", types.
        PR c++/26295
        PR c++/26295
        * decl.c (grokdeclarator): Remove namespace-handling code for
        * decl.c (grokdeclarator): Remove namespace-handling code for
        pointers-to-members.
        pointers-to-members.
        * parser.c (cp_parser_ptr_operator): Check for qualified names
        * parser.c (cp_parser_ptr_operator): Check for qualified names
        using namespaces.
        using namespaces.
        PR c++/26122
        PR c++/26122
        * parser.c (cp_parser_init_declarator): Adjust logic for deciding
        * parser.c (cp_parser_init_declarator): Adjust logic for deciding
        whether or not to look for a pure-specifier.
        whether or not to look for a pure-specifier.
        (cp_parser_member_declaration): Likewise.
        (cp_parser_member_declaration): Likewise.
2006-04-08  Kazu Hirata  
2006-04-08  Kazu Hirata  
        * decl2.c, pt.c, semantics.c: Fix comment typos.
        * decl2.c, pt.c, semantics.c: Fix comment typos.
2006-04-06  Roger Sayle  
2006-04-06  Roger Sayle  
        * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
        * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
2006-04-05  Jason Merrill  
2006-04-05  Jason Merrill  
        * name-lookup.c (push_namespace_with_attribs): Temporarily disable
        * name-lookup.c (push_namespace_with_attribs): Temporarily disable
        default hidden visibility for anonymous namespace.
        default hidden visibility for anonymous namespace.
2006-03-29  Roger Sayle  
2006-03-29  Roger Sayle  
        PR c++/22494
        PR c++/22494
        * init.c (build_vec_delete_1): Convert BASE pointer's type to
        * 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.
        the base pointer type to avoid a type mismatch in the EQ_EXPR.
2006-03-24  Carlos O'Donell  
2006-03-24  Carlos O'Donell  
        * search.c (maybe_suppress_debug_info): If
        * search.c (maybe_suppress_debug_info): If
        flag_emit_class_debug_always then don't suppress.
        flag_emit_class_debug_always then don't suppress.
2006-03-22  Jason Merrill  
2006-03-22  Jason Merrill  
        * name-lookup.c (push_namespace_with_attribs): Only apply hidden
        * name-lookup.c (push_namespace_with_attribs): Only apply hidden
        visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
        visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
2006-03-21  Jakub Jelinek  
2006-03-21  Jakub Jelinek  
        PR c++/26691
        PR c++/26691
        * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
        * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
2006-03-21  Jason Merrill  
2006-03-21  Jason Merrill  
        PR c++/21581
        PR c++/21581
        * parser.c (cp_parser_declaration): Support attributes on
        * parser.c (cp_parser_declaration): Support attributes on
        anonymous namespaces.
        anonymous namespaces.
        * name-lookup.c (push_namespace_with_attribs): Anonymous
        * name-lookup.c (push_namespace_with_attribs): Anonymous
        namespaces default to hidden visibility.
        namespaces default to hidden visibility.
2006-03-20  Jason Merrill  
2006-03-20  Jason Merrill  
        PR c++/21764, c++/19238
        PR c++/21764, c++/19238
        * decl.c (cp_finish_decl): Call determine_visibility later.
        * decl.c (cp_finish_decl): Call determine_visibility later.
        (start_preparsed_function): Likewise.
        (start_preparsed_function): Likewise.
        * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
        * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
        (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
        (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
        * name-lookup.h (struct cp_binding_level): Add has_visibility
        * name-lookup.h (struct cp_binding_level): Add has_visibility
        bitfield.
        bitfield.
        * name-lookup.c: Include c-pragma.h.
        * name-lookup.c: Include c-pragma.h.
        (push_namespace_with_attribs): Split out from push_namespace.
        (push_namespace_with_attribs): Split out from push_namespace.
        Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
        Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
        (leave_scope): Pop visibility if appropriate.
        (leave_scope): Pop visibility if appropriate.
        * decl2.c (determine_visibility_from_class): Split out from...
        * decl2.c (determine_visibility_from_class): Split out from...
        (determine_visibility): ...here.  Handle function scope and
        (determine_visibility): ...here.  Handle function scope and
        nested classes.
        nested classes.
        (import_export_decl): Move visibility handling to
        (import_export_decl): Move visibility handling to
        determine_visibility_from_class.
        determine_visibility_from_class.
        * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
        * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
        attributes on namespace declarations.
        attributes on namespace declarations.
2006-03-15  Volker Reichelt  
2006-03-15  Volker Reichelt  
        PR c++/6634
        PR c++/6634
        * decl.c (grokdeclarator): Do not accept long long double.
        * decl.c (grokdeclarator): Do not accept long long double.
        Reorganize checks for invalid (combinations of) type modifiers.
        Reorganize checks for invalid (combinations of) type modifiers.
        Quote modifiers in messages.
        Quote modifiers in messages.
2006-03-09  Jason Merrill  
2006-03-09  Jason Merrill  
        PR c++/16387, c++/16389
        PR c++/16387, c++/16389
        * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
        * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
        (cxx_sizeof_or_alignof_expr): Split out from here.
        (cxx_sizeof_or_alignof_expr): Split out from here.
2006-03-09  Diego Novillo  
2006-03-09  Diego Novillo  
        Merge from gomp-20050608-branch
        Merge from gomp-20050608-branch
        2006-02-02  Diego Novillo  
        2006-02-02  Diego Novillo  
                * decl.c (pop_labels_1): Use appropriate pointer casting.
                * decl.c (pop_labels_1): Use appropriate pointer casting.
                (poplevel_named_label_1): Likewise.
                (poplevel_named_label_1): Likewise.
                (named_label_entry_hash): Likewise.
                (named_label_entry_hash): Likewise.
                (named_label_entry_eq): Likewise.
                (named_label_entry_eq): Likewise.
                (check_goto): Likewise.
                (check_goto): Likewise.
                (define_label): Likewise.
                (define_label): Likewise.
        2006-01-26  Diego Novillo  
        2006-01-26  Diego Novillo  
                * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
                * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
                of TREE_BLOCK.
                of TREE_BLOCK.
                * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
                * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
                instead of TREE_CODE/TREE_OPERAND.
                instead of TREE_CODE/TREE_OPERAND.
                * semantics.c: Likewise.
                * semantics.c: Likewise.
                * parser.c: Likewise.
                * parser.c: Likewise.
        2005-11-10  Diego Novillo  
        2005-11-10  Diego Novillo  
                * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
                * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
                target does not support TLS.
                target does not support TLS.
        2005-11-09  Jakub Jelinek  
        2005-11-09  Jakub Jelinek  
                * decl.c (redeclaration_error_message): Don't error about
                * decl.c (redeclaration_error_message): Don't error about
                DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
                DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
                (olddecl).
                (olddecl).
        2005-11-08  Jakub Jelinek  
        2005-11-08  Jakub Jelinek  
                PR c++/24735
                PR c++/24735
                * semantics.c (finish_omp_barrier, finish_omp_flush): New
                * semantics.c (finish_omp_barrier, finish_omp_flush): New
                  functions.
                  functions.
                * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
                * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
                (cp_parser_omp_flush): Call finish_omp_flush.
                (cp_parser_omp_flush): Call finish_omp_flush.
                * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
                * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
                  prototypes.
                  prototypes.
                PR c++/24734
                PR c++/24734
                * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
                * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
        2005-11-03  Jakub Jelinek  
        2005-11-03  Jakub Jelinek  
                * semantics.c (finish_omp_threadprivate): Error on class-scope
                * semantics.c (finish_omp_threadprivate): Error on class-scope
                variables.
                variables.
        2005-11-02  Jakub Jelinek  
        2005-11-02  Jakub Jelinek  
                * parser.c (cp_parser_omp_all_clauses): If some clause
                * parser.c (cp_parser_omp_all_clauses): If some clause
                type is not allowed, don't remove just one of the
                type is not allowed, don't remove just one of the
                clauses, but all clauses added in that loop round.
                clauses, but all clauses added in that loop round.
                * semantics.c (finish_omp_clauses): Fix function
                * semantics.c (finish_omp_clauses): Fix function
                comment. Don't handle non-const or mutable specially,
                comment. Don't handle non-const or mutable specially,
                as const and not mutable is predetermined shared and
                as const and not mutable is predetermined shared and
                that leads to double error. Don't ICE if copyin var is
                that leads to double error. Don't ICE if copyin var is
                PARM_DECL.
                PARM_DECL.
                PR c++/24613
                PR c++/24613
                * parser.c (cp_parser_pragma): Diagnose
                * parser.c (cp_parser_pragma): Diagnose
                PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
                PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
                construct.
                construct.
                * semantics.c (finish_omp_threadprivate): Error if V
                * semantics.c (finish_omp_threadprivate): Error if V
                  is automatic variable or has incomplete type.
                  is automatic variable or has incomplete type.
        2005-11-01  Diego Novillo  
        2005-11-01  Diego Novillo  
                * parser.c (cp_parser_omp_all_clauses): Use
                * parser.c (cp_parser_omp_all_clauses): Use
                OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
                OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
        2005-11-01  Diego Novillo  
        2005-11-01  Diego Novillo  
                * parser.c (cp_parser_omp_all_clauses): When emitting an
                * parser.c (cp_parser_omp_all_clauses): When emitting an
                error message, remove the invalid clause from the list.
                error message, remove the invalid clause from the list.
        2005-10-31  Diego Novillo  
        2005-10-31  Diego Novillo  
                * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
                * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
                combined parallel+workshare directives.
                combined parallel+workshare directives.
        2005-10-31  Richard Henderson  
        2005-10-31  Richard Henderson  
                * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
                * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
                Use cxx_omp_clause_dtor.
                Use cxx_omp_clause_dtor.
                * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
                * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
                (cxx_omp_clause_dtor): New.
                (cxx_omp_clause_dtor): New.
                * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
                * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
                (cxx_omp_clause_default_ctor): Use it.
                (cxx_omp_clause_default_ctor): Use it.
                (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
                (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
                Likewise.
                Likewise.
                (cxx_omp_clause_dtor): New.
                (cxx_omp_clause_dtor): New.
                * semantics.c (finish_omp_clauses): Rewrite cdtor
                * semantics.c (finish_omp_clauses): Rewrite cdtor
                checking to fill in CP_OMP_CLAUSE_INFO.  Don't
                checking to fill in CP_OMP_CLAUSE_INFO.  Don't
                specialcase LASTPRIVATE for removal.
                specialcase LASTPRIVATE for removal.
                (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
                (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
                cxx_omp_clause_assign_op): Move to cp-gimplify.c.
                cxx_omp_clause_assign_op): Move to cp-gimplify.c.
        2005-10-28  Jakub Jelinek  
        2005-10-28  Jakub Jelinek  
                * semantics.c (finish_omp_threadprivate): If
                * semantics.c (finish_omp_threadprivate): If
                  DECL_RTL_SET_P, call make_decl_rtl again so that
                  DECL_RTL_SET_P, call make_decl_rtl again so that
                  encode_section_info can update SYMBOL_REF's flags.
                  encode_section_info can update SYMBOL_REF's flags.
        2005-10-26  Jakub Jelinek  
        2005-10-26  Jakub Jelinek  
                * semantics.c (finish_omp_for): Don't segfault if COND
                * semantics.c (finish_omp_for): Don't segfault if COND
                or INCR is NULL.  If not calling c_finish_omp_for
                or INCR is NULL.  If not calling c_finish_omp_for
                right away and one of COND and INCR is NULL, issue
                right away and one of COND and INCR is NULL, issue
                error and don't expand anything.
                error and don't expand anything.
                PR c++/24512
                PR c++/24512
                * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
                * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
                * semantics.c (finish_omp_for): Likewise.  Set
                * semantics.c (finish_omp_for): Likewise.  Set
                OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
                OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
                into the current statement list if not processing
                into the current statement list if not processing
                template decl or pass it to c_finish_omp_for.
                template decl or pass it to c_finish_omp_for.
                * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
                * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
                into PRE_BODY statement list.  Pass it to finish_omp_for.
                into PRE_BODY statement list.  Pass it to finish_omp_for.
                * pt.c (tsubst_expr) : tsubst_expr also
                * pt.c (tsubst_expr) : tsubst_expr also
                OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
                OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
                finish_omp_for.  Put all the statements into sk_omp
                finish_omp_for.  Put all the statements into sk_omp
                scope.
                scope.
        2005-10-25  Jakub Jelinek  
        2005-10-25  Jakub Jelinek  
                PR c++/24516
                PR c++/24516
                * parser.c (struct cp_parser): Rename in_iteration_statement
                * parser.c (struct cp_parser): Rename in_iteration_statement
                field to in_statement.
                field to in_statement.
                (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
                (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
                (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
                (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
                (cp_parser_new, cp_parser_begin_omp_structured_block,
                (cp_parser_new, cp_parser_begin_omp_structured_block,
                cp_parser_end_omp_structured_block,
                cp_parser_end_omp_structured_block,
                cp_parser_omp_for_loop): Adjust for
                cp_parser_omp_for_loop): Adjust for
                in_iteration_statement renaming.
                in_iteration_statement renaming.
                (cp_parser_selection_statement): Save
                (cp_parser_selection_statement): Save
                parser->in_iteration, or it temporarily with
                parser->in_iteration, or it temporarily with
                IN_SWITCH_STMT for the
                IN_SWITCH_STMT for the
                cp_parser_implicitly_scoped_statement call.
                cp_parser_implicitly_scoped_statement call.
                (cp_parser_iteration_statement): Adjust for
                (cp_parser_iteration_statement): Adjust for
                in_iteration_statement renaming.  Use
                in_iteration_statement renaming.  Use
                IN_ITERATION_STMT rather than true.
                IN_ITERATION_STMT rather than true.
                (cp_parser_jump_statement): Adjust for
                (cp_parser_jump_statement): Adjust for
                in_iteration_statement renaming and new values.  Don't
                in_iteration_statement renaming and new values.  Don't
                error on break in a switch statement within OMP_FOR or
                error on break in a switch statement within OMP_FOR or
                OpenMP structured block.
                OpenMP structured block.
                PR c++/24513
                PR c++/24513
                * parser.c (cp_parser_cache_group): Don't stop if next
                * parser.c (cp_parser_cache_group): Don't stop if next
                token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
                token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
                well.  If current token is CPP_PRAGMA, consume
                well.  If current token is CPP_PRAGMA, consume
                everything until CPP_PRAGMA_EOL inclusive.
                everything until CPP_PRAGMA_EOL inclusive.
        2005-10-24  Jakub Jelinek  
        2005-10-24  Jakub Jelinek  
                PR c++/24502
                PR c++/24502
                * semantics.c (finish_omp_for): Handle MODOP_EXPR in
                * semantics.c (finish_omp_for): Handle MODOP_EXPR in
                addition to MODIFY_EXPR.
                addition to MODIFY_EXPR.
        2005-10-23  Richard Henderson  
        2005-10-23  Richard Henderson  
                * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
                * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
                (bc_label): New.
                (bc_label): New.
                (begin_bc_block, finish_bc_block): Use it.
                (begin_bc_block, finish_bc_block): Use it.
                (push_context, pop_context): Remove.
                (push_context, pop_context): Remove.
                (cp_genericize): Don't use them.  Assert bc_label is null.
                (cp_genericize): Don't use them.  Assert bc_label is null.
                * semantics.c (finish_omp_clauses): Create a fake data
                * semantics.c (finish_omp_clauses): Create a fake data
                element of TYPE for probing ctors.
                element of TYPE for probing ctors.
        2005-10-23  Richard Henderson  
        2005-10-23  Richard Henderson  
                * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
                * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
                (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
                (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
                (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
                (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
                (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
                (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
                * semantics.c (finish_omp_clauses): Look through
                * semantics.c (finish_omp_clauses): Look through
                arrays when looking up special member calls.  Also
                arrays when looking up special member calls.  Also
                remove FIRSTPRIVATE when LASTPRIVATE fails.
                remove FIRSTPRIVATE when LASTPRIVATE fails.
                (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
                (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
                (cxx_omp_clause_assign_op): New.
                (cxx_omp_clause_assign_op): New.
                * cp-tree.h: Declare them.
                * cp-tree.h: Declare them.
        2005-10-21  Richard Henderson  
        2005-10-21  Richard Henderson  
                * decl.c (check_previous_goto_1): Return false if error.
                * decl.c (check_previous_goto_1): Return false if error.
                (check_switch_goto): Likewise.
                (check_switch_goto): Likewise.
                (finish_case_label): Don't emit the case label on error.
                (finish_case_label): Don't emit the case label on error.
                * parser.c (struct cp_parser): Revert
                * parser.c (struct cp_parser): Revert
                in_switch_statement_p changes.
                in_switch_statement_p changes.
                (cp_parser_labeled_statement,
                (cp_parser_labeled_statement,
                cp_parser_selection_statement): Likewise.
                cp_parser_selection_statement): Likewise.
                (cp_parser_begin_omp_structured_block): Don't save...
                (cp_parser_begin_omp_structured_block): Don't save...
                (cp_parser_end_omp_structured_block): or restore
                (cp_parser_end_omp_structured_block): or restore
                in_switch_statement_p.
                in_switch_statement_p.
        2005-10-21  Richard Henderson  
        2005-10-21  Richard Henderson  
                * semantics.c (finish_omp_threadprivate): Set
                * semantics.c (finish_omp_threadprivate): Set
                decl_flags.u2sel when necessary.
                decl_flags.u2sel when necessary.
        2005-10-21  Richard Henderson  
        2005-10-21  Richard Henderson  
                * decl.c (poplevel_named_label_1): Restore creation of the
                * decl.c (poplevel_named_label_1): Restore creation of the
                bad_decls list.
                bad_decls list.
                (decl_jump_unsafe): Check for error_mark_node types.
                (decl_jump_unsafe): Check for error_mark_node types.
                (check_goto): Don't check cdtor_label.  Don't use identify_goto.
                (check_goto): Don't check cdtor_label.  Don't use identify_goto.
                * semantics.c (finish_return_stmt): Do check_omp_return before
                * semantics.c (finish_return_stmt): Do check_omp_return before
                converting to cdtor_label goto.
                converting to cdtor_label goto.
        2005-10-21  Richard Henderson  
        2005-10-21  Richard Henderson  
                PR c++/24451
                PR c++/24451
                * decl.c (check_omp_return): Return false on error.
                * decl.c (check_omp_return): Return false on error.
                * cp-tree.h (check_omp_return): Update decl.
                * cp-tree.h (check_omp_return): Update decl.
                * semantics.c (finish_return_stmt): Avoid adding
                * semantics.c (finish_return_stmt): Avoid adding
                return on error.
                return on error.
        2005-10-21  Richard Henderson  
        2005-10-21  Richard Henderson  
                * cp-tree.h (struct language_function): Remove
                * cp-tree.h (struct language_function): Remove
                x_named_label_uses.
                x_named_label_uses.
                Change x_named_labels to a hashtable.
                Change x_named_labels to a hashtable.
                (check_omp_return): Declare.
                (check_omp_return): Declare.
                * decl.c (struct named_label_use_entry): Rename from
                * decl.c (struct named_label_use_entry): Rename from
                named_label_use_list.  Remove label_decl.
                named_label_use_list.  Remove label_decl.
                (struct named_label_entry): Rename from
                (struct named_label_entry): Rename from
                named_label_list.  Remove old_value and next.  Change
                named_label_list.  Remove old_value and next.  Change
                in_try_scope and in_catch_scope to bool. Add
                in_try_scope and in_catch_scope to bool. Add
                in_omp_scope.
                in_omp_scope.
                (pop_labels_1): New.
                (pop_labels_1): New.
                (pop_labels): Use it.
                (pop_labels): Use it.
                (pop_local_label, poplevel_named_label_1): New.
                (pop_local_label, poplevel_named_label_1): New.
                (poplevel): Use them.
                (poplevel): Use them.
                (named_label_entry_hash, named_label_entry_eq): New.
                (named_label_entry_hash, named_label_entry_eq): New.
                (make_label_decl): Create named_labels.  Move label
                (make_label_decl): Create named_labels.  Move label
                creation bits from lookup_label.
                creation bits from lookup_label.
                (declare_local_label): Tidy.
                (declare_local_label): Tidy.
                (identify_goto): Split out from ...
                (identify_goto): Split out from ...
                (check_previous_goto_1): Add exited_omp argument.
                (check_previous_goto_1): Add exited_omp argument.
                Handle omp scopes.
                Handle omp scopes.
                (use_label): Merge into...
                (use_label): Merge into...
                (check_goto): ... here.  Handle omp scopes.
                (check_goto): ... here.  Handle omp scopes.
                (check_omp_return): New.
                (check_omp_return): New.
                (check_previous_gotos): Merge into...
                (check_previous_gotos): Merge into...
                (define_label): ... here.
                (define_label): ... here.
                (save_function_data): Remove x_named_label_uses reference.
                (save_function_data): Remove x_named_label_uses reference.
                (finish_function): Likewise.
                (finish_function): Likewise.
                * name-lookup.h (sk_omp): New.
                * name-lookup.h (sk_omp): New.
                * name-lookup.c (begin_scope): Handle it.
                * name-lookup.c (begin_scope): Handle it.
                * parser.c (cp_parser_omp_for): Don't create extra
                * parser.c (cp_parser_omp_for): Don't create extra
                compound stmt.
                compound stmt.
                (cp_parser_omp_sections): Likewise.
                (cp_parser_omp_sections): Likewise.
                * semantics.c (finish_return_stmt): Call check_omp_return.
                * semantics.c (finish_return_stmt): Call check_omp_return.
                (begin_omp_structured_block): Use sk_omp.
                (begin_omp_structured_block): Use sk_omp.
                (finish_omp_structured_block): Use do_poplevel.  Don't build a
                (finish_omp_structured_block): Use do_poplevel.  Don't build a
                MUST_NOT_THROW expression here.
                MUST_NOT_THROW expression here.
                (begin_omp_parallel, finish_omp_parallel): Don't create extra
                (begin_omp_parallel, finish_omp_parallel): Don't create extra
                compound statements.
                compound statements.
        2005-10-21  Diego Novillo  
        2005-10-21  Diego Novillo  
                PR 24455
                PR 24455
                * cp/cp-tree.h (struct lang_decl_flags): Add field
                * cp/cp-tree.h (struct lang_decl_flags): Add field
                threadprivate_p.
                threadprivate_p.
                (CP_DECL_IS_THREADPRIVATE): Define.
                (CP_DECL_IS_THREADPRIVATE): Define.
                * cp/semantics.c (finish_omp_threadprivate): Set.  Do
                * cp/semantics.c (finish_omp_threadprivate): Set.  Do
                not error out if CP_DECL_IS_THREADPRIVATE is set
                not error out if CP_DECL_IS_THREADPRIVATE is set
                already.
                already.
                * cp/decl.c (duplicate_decls): Merge
                * cp/decl.c (duplicate_decls): Merge
                CP_DECL_THREADPRIVATE_P.
                CP_DECL_THREADPRIVATE_P.
        2005-10-20  Richard Henderson  
        2005-10-20  Richard Henderson  
                * cp-gimplify.c (cp_gimplify_omp_for): New.
                * cp-gimplify.c (cp_gimplify_omp_for): New.
                (cp_gimplify_expr): Call it.
                (cp_gimplify_expr): Call it.
                * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
                * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
                * parser.c (struct cp_parser): Rename
                * parser.c (struct cp_parser): Rename
                in_iteration_statement_p to in_iteration_statement and
                in_iteration_statement_p to in_iteration_statement and
                change to unsigned char.  Similarly with
                change to unsigned char.  Similarly with
                in_switch_statement.  Update all users.
                in_switch_statement.  Update all users.
                (IN_OMP_BLOCK, IN_OMP_FOR): New.
                (IN_OMP_BLOCK, IN_OMP_FOR): New.
                (cp_parser_labeled_statement): Diagnose case labels
                (cp_parser_labeled_statement): Diagnose case labels
                binding closer to an openmp block nested than the
                binding closer to an openmp block nested than the
                switch.
                switch.
                (cp_parser_jump_statement): Diagnose break and
                (cp_parser_jump_statement): Diagnose break and
                continue labels binding closer to an openmp block than
                continue labels binding closer to an openmp block than
                an iteration or switch.
                an iteration or switch.
                (cp_parser_omp_for_loop): Mark in_iteration_statement
                (cp_parser_omp_for_loop): Mark in_iteration_statement
                for an omp for.
                for an omp for.
                (cp_parser_begin_omp_structured_block): New.
                (cp_parser_begin_omp_structured_block): New.
                (cp_parser_end_omp_structured_block): New.
                (cp_parser_end_omp_structured_block): New.
                (cp_parser_omp_structured_block): Use them.
                (cp_parser_omp_structured_block): Use them.
                (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
                (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
                (cp_parser_omp_parallel): Likewise.
                (cp_parser_omp_parallel): Likewise.
        2005-10-20  Richard Henderson  
        2005-10-20  Richard Henderson  
                * semantics.c (begin_omp_structured_block): New.
                * semantics.c (begin_omp_structured_block): New.
                (finish_omp_structured_block): New.
                (finish_omp_structured_block): New.
                (begin_omp_parallel, finish_omp_parallel): Use them.
                (begin_omp_parallel, finish_omp_parallel): Use them.
                * parser.c (cp_parser_omp_structured_block): Likewise.
                * parser.c (cp_parser_omp_structured_block): Likewise.
                (cp_parser_omp_for): Likewise.
                (cp_parser_omp_for): Likewise.
                (cp_parser_omp_sections_scope): Likewise.
                (cp_parser_omp_sections_scope): Likewise.
                * cp-tree.h: Declare them.
                * cp-tree.h: Declare them.
        2005-10-20  Richard Henderson  
        2005-10-20  Richard Henderson  
                * parser.c (cp_parser_omp_master): Return the statement.
                * parser.c (cp_parser_omp_master): Return the statement.
                (cp_parser_omp_ordered): Likewise.
                (cp_parser_omp_ordered): Likewise.
                (cp_parser_omp_construct): Set the locus for them.
                (cp_parser_omp_construct): Set the locus for them.
        2005-10-19  Richard Henderson  
        2005-10-19  Richard Henderson  
                * semantics.c (finish_omp_atomic): Revert to
                * semantics.c (finish_omp_atomic): Revert to
                uses_template_parms.
                uses_template_parms.
        2005-10-19  Richard Henderson  
        2005-10-19  Richard Henderson  
                * semantics.c (finish_omp_clauses): Avoid
                * semantics.c (finish_omp_clauses): Avoid
                DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
                DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
                stub asserts guaranteed to fail.
                stub asserts guaranteed to fail.
        2005-10-19  Richard Henderson  
        2005-10-19  Richard Henderson  
                * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
                * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
                (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
                (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
                * parser.c (cp_parser_omp_clause_copyin): Remove.
                * parser.c (cp_parser_omp_clause_copyin): Remove.
                (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
                (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
                Call finish_omp_clauses.
                Call finish_omp_clauses.
                (cp_parser_omp_clause_if): Don't do error checking here.
                (cp_parser_omp_clause_if): Don't do error checking here.
                (cp_parser_omp_clause_num_threads): Likewise.
                (cp_parser_omp_clause_num_threads): Likewise.
                (cp_parser_omp_clause_schedule): Likewise.
                (cp_parser_omp_clause_schedule): Likewise.
                (cp_parser_omp_atomic): Use finish_omp_atomic.
                (cp_parser_omp_atomic): Use finish_omp_atomic.
                (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
                (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
                Don't decompose assignment statment here.  Use
                Don't decompose assignment statment here.  Use
                finish_omp_for.
                finish_omp_for.
                * pt.c (tsubst_omp_clauses): New.
                * pt.c (tsubst_omp_clauses): New.
                (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
                (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
                OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
                OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
                * semantics.c (finish_omp_clauses): New.
                * semantics.c (finish_omp_clauses): New.
                (begin_omp_parallel, finish_omp_parallel): Know Less about the
                (begin_omp_parallel, finish_omp_parallel): Know Less about the
                internals of the stmt_list stack.
                internals of the stmt_list stack.
                (finish_omp_for, finish_omp_atomic): New.
                (finish_omp_for, finish_omp_atomic): New.
        2005-10-18  Jakub Jelinek  
        2005-10-18  Jakub Jelinek  
                * semantics.c (cxx_omp_predetermined_sharing): New function.
                * semantics.c (cxx_omp_predetermined_sharing): New function.
                * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
                * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
                * cp-objcp-common.h
                * cp-objcp-common.h
                (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
                (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
        2005-10-18  Richard Henderson  
        2005-10-18  Richard Henderson  
                * parser.c (cp_parser_omp_single): Use make_node and accessors
                * parser.c (cp_parser_omp_single): Use make_node and accessors
                instead of build.
                instead of build.
        2005-10-17  Richard Henderson  
        2005-10-17  Richard Henderson  
                * parser.c (cp_parser_omp_for_loop): Handle declarations.
                * parser.c (cp_parser_omp_for_loop): Handle declarations.
        2005-10-12  Richard Henderson  
        2005-10-12  Richard Henderson  
                * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
                * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
                * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
                * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
                (finish_omp_threadprivate): Declare.
                (finish_omp_threadprivate): Declare.
                * parser.c (struct cp_lexer): Add in_pragma.
                * parser.c (struct cp_lexer): Add in_pragma.
                (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
                (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
                when in_pragma.
                when in_pragma.
                (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
                (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
                (cp_parser_skip_to_end_of_statement): Likewise.
                (cp_parser_skip_to_end_of_statement): Likewise.
                (cp_parser_skip_to_end_of_block_or_statement): Likewise.
                (cp_parser_skip_to_end_of_block_or_statement): Likewise.
                (cp_parser_skip_to_closing_brace): Likewise.
                (cp_parser_skip_to_closing_brace): Likewise.
                (cp_parser_skip_to_pragma_eol): Reset in_pragma.
                (cp_parser_skip_to_pragma_eol): Reset in_pragma.
                (cp_parser_require_pragma_eol): New.
                (cp_parser_require_pragma_eol): New.
                (cp_parser_statement): Add in_compound argument;
                (cp_parser_statement): Add in_compound argument;
                update all callers.
                update all callers.
                Restart if a non-statement pragma seen outside a
                Restart if a non-statement pragma seen outside a
                compound.
                compound.
                (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
                (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
                (cp_parser_declaration_seq_opt): Likewise.
                (cp_parser_declaration_seq_opt): Likewise.
                (cp_parser_member_specification_opt): Likewise.
                (cp_parser_member_specification_opt): Likewise.
                (cp_parser_function_definition_after_decl): Likewise.
                (cp_parser_function_definition_after_decl): Likewise.
                (cp_parser_skip_until_found): Likewise.
                (cp_parser_skip_until_found): Likewise.
                (cp_parser_cache_group): Likewise.
                (cp_parser_cache_group): Likewise.
                (enum pragma_omp_clause, cp_parser_omp_clause_name,
                (enum pragma_omp_clause, cp_parser_omp_clause_name,
                check_no_duplicate_clause,
                check_no_duplicate_clause,
                cp_parser_omp_var_list_no_open,
                cp_parser_omp_var_list_no_open,
                cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
                cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
                cp_parser_omp_clause_default, cp_parser_omp_clause_if,
                cp_parser_omp_clause_default, cp_parser_omp_clause_if,
                cp_parser_omp_clause_nowait,
                cp_parser_omp_clause_nowait,
                cp_parser_omp_clause_num_threads,
                cp_parser_omp_clause_num_threads,
                cp_parser_omp_clause_ordered,
                cp_parser_omp_clause_ordered,
                cp_parser_omp_clause_reduction,
                cp_parser_omp_clause_reduction,
                cp_parser_omp_clause_schedule,
                cp_parser_omp_clause_schedule,
                cp_parser_omp_all_clauses,
                cp_parser_omp_all_clauses,
                cp_parser_omp_structured_block, cp_parser_omp_atomic,
                cp_parser_omp_structured_block, cp_parser_omp_atomic,
                cp_parser_omp_barrier, cp_parser_omp_critical,
                cp_parser_omp_barrier, cp_parser_omp_critical,
                cp_parser_omp_flush, cp_parser_omp_for_loop,
                cp_parser_omp_flush, cp_parser_omp_for_loop,
                cp_parser_omp_for, cp_parser_omp_master,
                cp_parser_omp_for, cp_parser_omp_master,
                cp_parser_omp_ordered, cp_parser_omp_sections_scope,
                cp_parser_omp_ordered, cp_parser_omp_sections_scope,
                cp_parser_omp_sections, cp_parser_omp_parallel,
                cp_parser_omp_sections, cp_parser_omp_parallel,
                cp_parser_omp_single, cp_parser_omp_threadprivate,
                cp_parser_omp_single, cp_parser_omp_threadprivate,
                cp_parser_omp_construct): New.
                cp_parser_omp_construct): New.
                (cp_parser_pragma): Handle OpenMP pragmas.
                (cp_parser_pragma): Handle OpenMP pragmas.
                * semantics.c (finish_omp_threadprivate): New.
                * semantics.c (finish_omp_threadprivate): New.
                (begin_omp_parallel, finish_omp_parallel): New.
                (begin_omp_parallel, finish_omp_parallel): New.
        2005-10-11  Richard Henderson  
        2005-10-11  Richard Henderson  
                * parser.c (struct cp_token): Add pragma_kind.
                * parser.c (struct cp_token): Add pragma_kind.
                (eof_token): Initialize it.
                (eof_token): Initialize it.
                (cp_lexer_handle_pragma): Remove.
                (cp_lexer_handle_pragma): Remove.
                (cp_parser_initial_pragma): New.
                (cp_parser_initial_pragma): New.
                (cp_lexer_new_main): Use it.
                (cp_lexer_new_main): Use it.
                (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
                (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
                (cp_lexer_print_token): Don't handle CPP_PRAGMA.
                (cp_lexer_print_token): Don't handle CPP_PRAGMA.
                (cp_parser_skip_to_pragma_eol): New.
                (cp_parser_skip_to_pragma_eol): New.
                (cp_parser_error): Use it.
                (cp_parser_error): Use it.
                (pragma_lex): New.
                (pragma_lex): New.
        2005-10-09  Richard Henderson  
        2005-10-09  Richard Henderson  
                * lex.c (parse_strconst_pragma): Update for c_lex name change.
                * lex.c (parse_strconst_pragma): Update for c_lex name change.
                (handle_pragma_java_exceptions): Likewise.
                (handle_pragma_java_exceptions): Likewise.
                * parser.c (cp_lexer_new_main): Likewise.
                * parser.c (cp_lexer_new_main): Likewise.
        2005-10-06  Richard Henderson  
        2005-10-06  Richard Henderson  
                * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
                * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
                (cp_lexer_handle_pragma): Comment out
                (cp_lexer_handle_pragma): Comment out
                cpp_handle_deferred_pragma.
                cpp_handle_deferred_pragma.
        2005-10-01  Richard Henderson  
        2005-10-01  Richard Henderson  
                * name-lookup.c (lookup_name): Remove prefer_type argument.
                * name-lookup.c (lookup_name): Remove prefer_type argument.
                (lookup_name_prefer_type): New function.
                (lookup_name_prefer_type): New function.
                * name-lookup.h (lookup_name_prefer_type): Declare it.
                * name-lookup.h (lookup_name_prefer_type): Declare it.
                * decl.c (lookup_and_check_tag): Use it.
                * decl.c (lookup_and_check_tag): Use it.
                * pt.c (tsubst_friend_class): Likewise. Update for
                * pt.c (tsubst_friend_class): Likewise. Update for
                lookup_name change.
                lookup_name change.
                (lookup_template_class, tsubst_copy_and_build): Likewise.
                (lookup_template_class, tsubst_copy_and_build): Likewise.
2006-03-06  Volker Reichelt  
2006-03-06  Volker Reichelt  
        PR c++/15759
        PR c++/15759
        * tree.c (bot_manip): Don't call mark_used.
        * tree.c (bot_manip): Don't call mark_used.
2006-03-02  Mike Stump  
2006-03-02  Mike Stump  
        * decl2.c (import_export_decl): Remove redundant call to
        * decl2.c (import_export_decl): Remove redundant call to
        targetm.cxx.key_method_may_be_inline ().
        targetm.cxx.key_method_may_be_inline ().
2006-03-02  Richard Sandiford  
2006-03-02  Richard Sandiford  
        * decl.c (start_decl): Use have_global_bss_p when deciding
        * decl.c (start_decl): Use have_global_bss_p when deciding
        whether to make the decl common.
        whether to make the decl common.
2006-03-01  Mike Stump  
2006-03-01  Mike Stump  
        PR darwin/25908
        PR darwin/25908
        * decl2.c (import_export_decl): Fix ABI breakage on darwin.
        * decl2.c (import_export_decl): Fix ABI breakage on darwin.
2006-02-24  Geoffrey Keating  
2006-02-24  Geoffrey Keating  
        * except.c (expand_start_catch_block): Handle
        * except.c (expand_start_catch_block): Handle
        flag_use_cxa_get_exception_ptr.
        flag_use_cxa_get_exception_ptr.
2006-02-22  Volker Reichelt  
2006-02-22  Volker Reichelt  
        PR c++/26291
        PR c++/26291
        * decl.c (grok_op_properties): Check for ellipsis in arguments of
        * decl.c (grok_op_properties): Check for ellipsis in arguments of
        operators.
        operators.
2006-02-20  Rafael Ávila de Espíndola  
2006-02-20  Rafael Ávila de Espíndola  
        * Make-lang.in (C++): Remove.
        * Make-lang.in (C++): Remove.
        (.PHONY): Remove C++.
        (.PHONY): Remove C++.
2006-02-18  Mark Mitchell  
2006-02-18  Mark Mitchell  
        PR c++/26266
        PR c++/26266
        * cp-tree.h (cp_finish_decl): Adjust declaration.
        * cp-tree.h (cp_finish_decl): Adjust declaration.
        (grokbitfield): Likewise.
        (grokbitfield): Likewise.
        (finish_static_data_member_decl): Likewise.
        (finish_static_data_member_decl): Likewise.
        * init.c (constant_value_1): Ensure processing_template_decl when
        * init.c (constant_value_1): Ensure processing_template_decl when
        folding non-dependent initializers for static data members of
        folding non-dependent initializers for static data members of
        dependent types.  Return error_mark_node for erroneous
        dependent types.  Return error_mark_node for erroneous
        initailizers.
        initailizers.
        * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
        * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
        * decl.c (cp_make_fname_decl): Adjust call to 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
        (cp_finish_decl): Add init_const_expr_p parameter.  Set
        DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
        DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
        (finish_decl): Adjust call to cp_finish_decl.
        (finish_decl): Adjust call to cp_finish_decl.
        (compute_array_index_type): Robustify.
        (compute_array_index_type): Robustify.
        (start_method): Use finish_decl, not cp_finish_decl.
        (start_method): Use finish_decl, not cp_finish_decl.
        * rtti.c (emit_tinfo_decl): Likewise.
        * rtti.c (emit_tinfo_decl): Likewise.
        * except.c (initialize_handler_parm): Adjust call to
        * except.c (initialize_handler_parm): Adjust call to
        cp_finish_decl.
        cp_finish_decl.
        (expand_start_catch_block): Likewise.
        (expand_start_catch_block): Likewise.
        * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
        * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
        * pt.c (instantiate_class_template): Adjust call to
        * pt.c (instantiate_class_template): Adjust call to
        finish_static_data_member_decl.
        finish_static_data_member_decl.
        (tsubst_expr): Use finish_decl, not cp_finish_decl.
        (tsubst_expr): Use finish_decl, not cp_finish_decl.
        (instantiate_decl): Adjust call to cp_finish_decl.
        (instantiate_decl): Adjust call to cp_finish_decl.
        * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
        * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
        cp_finish_decl.
        cp_finish_decl.
        * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
        * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
        parameter.
        parameter.
        (grokfield): Likewise.
        (grokfield): Likewise.
        * parser.c (cp_parser_condition): Check for constant initializers.
        * parser.c (cp_parser_condition): Check for constant initializers.
        (cp_parser_init_declarator): Adjust calls to grokfield and
        (cp_parser_init_declarator): Adjust calls to grokfield and
        cp_finish_decl.  Don't set
        cp_finish_decl.  Don't set
        DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
        DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
        (cp_parser_member_declaration): Likewise.
        (cp_parser_member_declaration): Likewise.
        (cp_parser_objc_class_ivars): Likewise.
        (cp_parser_objc_class_ivars): Likewise.
2006-02-14  Volker Reichelt  
2006-02-14  Volker Reichelt  
        * call.c (standard_conversion): Return NULL instead of 0.
        * call.c (standard_conversion): Return NULL instead of 0.
        (build_user_type_conversion_1): Likewise.
        (build_user_type_conversion_1): Likewise.
        (tourney): Likewise.
        (tourney): Likewise.
        * decl.c (redeclaration_error_message): Likewise.
        * decl.c (redeclaration_error_message): Likewise.
        * error.c (language_to_string): Likewise.
        * error.c (language_to_string): Likewise.
2006-02-13  Volker Reichelt  
2006-02-13  Volker Reichelt  
        * cp-tree.h (warn_hidden): Remove prototype.
        * cp-tree.h (warn_hidden): Remove prototype.
        * class.c (warn_hidden): Make static.
        * class.c (warn_hidden): Make static.
        * cp-tree.h (build_type_conversion): Remove prototype.
        * cp-tree.h (build_type_conversion): Remove prototype.
        * cvt.c (build_type_conversion): Add prototype, make static.
        * cvt.c (build_type_conversion): Add prototype, make static.
        * cp-tree.h (push_tinst_level): Remove prototype.
        * cp-tree.h (push_tinst_level): Remove prototype.
        (pop_tinst_level): Likewise.
        (pop_tinst_level): Likewise.
        * pt.c (push_tinst_level): Add prototype, make static.
        * pt.c (push_tinst_level): Add prototype, make static.
        (pop_tinst_level): Likewise.
        (pop_tinst_level): Likewise.
2006-02-13  Volker Reichelt  
2006-02-13  Volker Reichelt  
        * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
        * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
        * typeck.c (unary_complex_lvalue): Likewise.
        * typeck.c (unary_complex_lvalue): Likewise.
2006-02-13  Volker Reichelt  
2006-02-13  Volker Reichelt  
        * lex.c (parse_strconst_pragma): Return error_mark_node instead of
        * lex.c (parse_strconst_pragma): Return error_mark_node instead of
        "(tree)-1" to indicate failure.  Simplify.
        "(tree)-1" to indicate failure.  Simplify.
        (handle_pragma_interface): Test for error_mark_node instead of
        (handle_pragma_interface): Test for error_mark_node instead of
        "(tree)-1".
        "(tree)-1".
        (handle_pragma_implementation): Likewise.
        (handle_pragma_implementation): Likewise.
2006-02-13  Volker Reichelt  
2006-02-13  Volker Reichelt  
        PR c++/26151
        PR c++/26151
        * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
        * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
        decl-specifiers.  Remove extra check for duplicate 'friend'.
        decl-specifiers.  Remove extra check for duplicate 'friend'.
        * decl.c (grokdeclarator): Remove check for duplicate
        * decl.c (grokdeclarator): Remove check for duplicate
        decl-specifiers.  Set longlong together with long_p.
        decl-specifiers.  Set longlong together with long_p.
2006-02-12  Jason Merrill  
2006-02-12  Jason Merrill  
        PR c++/24996
        PR c++/24996
        * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
        * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
        TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
        TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
2006-02-10  Volker Reichelt  
2006-02-10  Volker Reichelt  
        * class.c (debug_class): Remove extern.
        * class.c (debug_class): Remove extern.
        (debug_thunks): Likewise.
        (debug_thunks): Likewise.
2006-02-09  Gabriel Dos Reis  
2006-02-09  Gabriel Dos Reis  
        * typeck.c (string_conv_p): Don't test for flag_const_strings.
        * typeck.c (string_conv_p): Don't test for flag_const_strings.
2006-02-08  Jason Merrill  
2006-02-08  Jason Merrill  
        PR c++/25979
        PR c++/25979
        * cp-gimplify.c (cp_gimplify_expr): Don't call
        * cp-gimplify.c (cp_gimplify_expr): Don't call
        cp_gimplify_init_expr for MODIFY_EXPRs.
        cp_gimplify_init_expr for MODIFY_EXPRs.
        * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
        * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
2006-02-08  Volker Reichelt  
2006-02-08  Volker Reichelt  
        PR c++/26071
        PR c++/26071
        * decl.c (grokdeclarator): Set dname also for destructor.
        * decl.c (grokdeclarator): Set dname also for destructor.
        PR c++/26070
        PR c++/26070
        * decl.c (grokdeclarator): Clear storage_class together with staticp.
        * decl.c (grokdeclarator): Clear storage_class together with staticp.
2006-02-07  Gabriel Dos Reis  
2006-02-07  Gabriel Dos Reis  
        * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
        * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
        (cp_build_qualified_type): Propogate renaming.
        (cp_build_qualified_type): Propogate renaming.
        * call.c (convert_like_real): Likewise.
        * call.c (convert_like_real): Likewise.
        * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
        * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
        * decl.c (make_typename_type, grokdeclarator): Likewise.
        * decl.c (make_typename_type, grokdeclarator): Likewise.
        * pt.c (tsubst_friend_function, instantiate_class_template,
        * pt.c (tsubst_friend_function, instantiate_class_template,
        tsubst_default_argument, instantiate_decl,
        tsubst_default_argument, instantiate_decl,
        tsubst_initializer_list, tsubst_enum): Likewise.
        tsubst_initializer_list, tsubst_enum): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
        * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
2006-02-07  Dirk Mueller  
2006-02-07  Dirk Mueller  
        * typeck.c (build_binary_op): Annotate div-by-zero
        * typeck.c (build_binary_op): Annotate div-by-zero
        warnings to make -Wno-div-by-zero have an effect.
        warnings to make -Wno-div-by-zero have an effect.
2006-02-07  Mark Mitchell  
2006-02-07  Mark Mitchell  
        PR c++/9737
        PR c++/9737
        * pt.c (coerce_template_template_parms): Do not templates with
        * pt.c (coerce_template_template_parms): Do not templates with
        excess default arguments to match template template parameters
        excess default arguments to match template template parameters
        with fewer parameters.
        with fewer parameters.
        (coerce_template_parms): Add use_default_args parameter; use
        (coerce_template_parms): Add use_default_args parameter; use
        default arguments only when true.
        default arguments only when true.
        (lookup_template_class): Adjust call to coerce_template_parms.
        (lookup_template_class): Adjust call to coerce_template_parms.
        (fn_type_unification): Likewise.
        (fn_type_unification): Likewise.
        (unify): Likewise.
        (unify): Likewise.
        (get_bindings): Likewise.
        (get_bindings): Likewise.
        (dependent_type_p): Add assertions.
        (dependent_type_p): Add assertions.
2006-02-06  Roger Sayle  
2006-02-06  Roger Sayle  
        * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
        * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
        * rtti.c (typeinfo_in_lib_p): Likewise.
        * rtti.c (typeinfo_in_lib_p): Likewise.
        * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
        * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
        * name-lookup.c (arg_assoc_type): Likewise.
        * name-lookup.c (arg_assoc_type): Likewise.
2006-02-04  Gabriel Dos Reis  
2006-02-04  Gabriel Dos Reis  
        * cp-tree.h (tf_warn_or_error): New substituion flag.
        * cp-tree.h (tf_warn_or_error): New substituion flag.
        (cp_build_qualified_type): Use it.
        (cp_build_qualified_type): Use it.
        * call.c (convert_like_real): Likewise.
        * call.c (convert_like_real): Likewise.
        * cvt.c (cp_convert_to_pointer): Likewise.
        * cvt.c (cp_convert_to_pointer): Likewise.
        (convert_to_reference): Likewise.
        (convert_to_reference): Likewise.
        * decl.c (make_typename_type): Likewise.
        * decl.c (make_typename_type): Likewise.
        (grokdeclarator): Likewise.
        (grokdeclarator): Likewise.
        * pt.c (tsubst_friend_function): Likewise.
        * pt.c (tsubst_friend_function): Likewise.
        (tsubst_friend_class): Likewise.
        (tsubst_friend_class): Likewise.
        (instantiate_class_template): Likewise.
        (instantiate_class_template): Likewise.
        (tsubst_default_argument): Likewise.
        (tsubst_default_argument): Likewise.
        (instantiate_decl): Likewise.
        (instantiate_decl): Likewise.
        (tsubst_initializer_list): Likewise.
        (tsubst_initializer_list): Likewise.
        (tsubst_enum): Likewise.
        (tsubst_enum): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * typeck.c (build_ptrmemfunc): Likewise.
        * typeck.c (build_ptrmemfunc): Likewise.
        (convert_for_assignment): Likewise.
        (convert_for_assignment): Likewise.
2006-02-03  Lee Millward  
2006-02-03  Lee Millward  
        * typeck.c (string_conv_p): Pass appropiate
        * typeck.c (string_conv_p): Pass appropiate
        OPT_Wxxxx values when calling warning().
        OPT_Wxxxx values when calling warning().
        (build_array_ref, cxx_mark_addressable): Likewise.
        (build_array_ref, cxx_mark_addressable): Likewise.
        (check_return_expr): Likewise.
        (check_return_expr): Likewise.
        * init.c (perform_member_init): Likewise.
        * init.c (perform_member_init): Likewise.
        (sort_mem_initializers, emit_mem_initializers): Likewise.
        (sort_mem_initializers, emit_mem_initializers): Likewise.
        * class.c (check_field_decls): Likewise.
        * class.c (check_field_decls): Likewise.
        (warn_about_ambiguous_bases): Likewise.
        (warn_about_ambiguous_bases): Likewise.
        * decl.c (pop_label, poplevel): Likewise.
        * decl.c (pop_label, poplevel): Likewise.
        (duplicate_decls, grok_op_properties): Likewise.
        (duplicate_decls, grok_op_properties): Likewise.
        (start_preparsed_function, finish_function): Likewise.
        (start_preparsed_function, finish_function): Likewise.
        * name-lookup.c (pushdecl_maybe_friend): Likewise.
        * name-lookup.c (pushdecl_maybe_friend): Likewise.
        (pushdecl_maybe_friend): Likewise.
        (pushdecl_maybe_friend): Likewise.
        * parser.c (cp_parser_warn_min_max): Likewise.
        * parser.c (cp_parser_warn_min_max): Likewise.
        (cp_parser_cast_expression): Likewise.
        (cp_parser_cast_expression): Likewise.
        * method.c (lazily_declare_fn): Likewise.
        * method.c (lazily_declare_fn): Likewise.
        * cvt.c (convert_to_void): Likewise.
        * cvt.c (convert_to_void): Likewise.
        * mangle.c (finish_mangling): Likewise.
        * mangle.c (finish_mangling): Likewise.
        * cp-gimplify.c (gimplify_expr_stmt): Likewise.
        * cp-gimplify.c (gimplify_expr_stmt): Likewise.
2006-02-03  Mark Mitchell  
2006-02-03  Mark Mitchell  
        * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
        * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
        not IDENTIFIER_OPNAME_P.
        not IDENTIFIER_OPNAME_P.
2006-01-31  Mark Mitchell  
2006-01-31  Mark Mitchell  
        PR c++/25342
        PR c++/25342
        * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
        * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
        documentation.
        documentation.
        * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
        * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
        not TREE_VALUE.
        not TREE_VALUE.
        (instantiate_class_template): Simplify.
        (instantiate_class_template): Simplify.
        (verify_class_unification): Remove.
        (verify_class_unification): Remove.
        (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
        (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
        permit multiple levels of template arguments.
        permit multiple levels of template arguments.
        (more_specialized_class): Simplify.
        (more_specialized_class): Simplify.
        (get_class_bindings): Pass full arguments to unify.  Fold
        (get_class_bindings): Pass full arguments to unify.  Fold
        verify_class_unification into this function.  Return full
        verify_class_unification into this function.  Return full
        arguments.
        arguments.
        (most_specialized_class): Adjust for changes to
        (most_specialized_class): Adjust for changes to
        get_class_bindings.  Issue errors here for ambiguity.  Return the
        get_class_bindings.  Issue errors here for ambiguity.  Return the
        fully deduced arguments for the most specialized class, in
        fully deduced arguments for the most specialized class, in
        addition to the partial specialization.
        addition to the partial specialization.
2006-01-31  Ben Elliston  
2006-01-31  Ben Elliston  
        * mangle.c: Comment fix.
        * mangle.c: Comment fix.
2006-01-29  Gabriel Dos Reis  
2006-01-29  Gabriel Dos Reis  
        * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
        * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
        * repo.c (extract_string, afgets): Use cast when converting from
        * repo.c (extract_string, afgets): Use cast when converting from
        void *.
        void *.
2006-01-29  Gabriel Dos Reis  
2006-01-29  Gabriel Dos Reis  
        * call.c (alloc_conversion): Use cast when converting from void *.
        * call.c (alloc_conversion): Use cast when converting from void *.
        (alloc_conversions): Likewise.
        (alloc_conversions): Likewise.
        (add_candidate): Likewise.
        (add_candidate): Likewise.
        (print_z_candidates): Likewise.
        (print_z_candidates): Likewise.
        (add_warning): Likewise.
        (add_warning): Likewise.
        * pt.c (retrieve_local_specialization): Likewise.
        * pt.c (retrieve_local_specialization): Likewise.
        (process_partial_specialization): Likewise.
        (process_partial_specialization): Likewise.
        (mangle_class_name_for_template): Likewise.
        (mangle_class_name_for_template): Likewise.
        (tsubst_template_args): Likewise.
        (tsubst_template_args): Likewise.
        * typeck2.c (pat_calc_hash): Likewise.
        * typeck2.c (pat_calc_hash): Likewise.
        (pat_compare): Likewise.
        (pat_compare): Likewise.
        (abstract_virtuals_error): Likewise.
        (abstract_virtuals_error): Likewise.
        * class.c (method_name_cmp): Likewise.
        * class.c (method_name_cmp): Likewise.
        (resort_method_name_cmp): Likewise.
        (resort_method_name_cmp): Likewise.
        (get_vfield_name): Likewise.
        (get_vfield_name): Likewise.
        * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
        * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
        * lex.c (init_reswords): Likewise.
        * lex.c (init_reswords): Likewise.
        * rtti.c (create_pseudo_type_info): Likewise.
        * rtti.c (create_pseudo_type_info): Likewise.
        * search.c (dfs_lookup_base): Likewise.
        * search.c (dfs_lookup_base): Likewise.
        (dfs_dcast_hint_pre): Likewise.
        (dfs_dcast_hint_pre): Likewise.
        (dfs_dcast_hint_post): Likewise.
        (dfs_dcast_hint_post): Likewise.
        * tree.c (hash_tree_cons): Likewise.
        * tree.c (hash_tree_cons): Likewise.
        * repo.c (extract_string): Likewise.
        * repo.c (extract_string): Likewise.
        (afgets): Likewise.
        (afgets): Likewise.
        * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
        * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
        * g++spec.c (lang_specific_driver): Likewise.
        * g++spec.c (lang_specific_driver): Likewise.
2006-01-28  Gabriel Dos Reis  
2006-01-28  Gabriel Dos Reis  
        * call.c (joust): Pass option code to warning.  Use inform for
        * call.c (joust): Pass option code to warning.  Use inform for
        explanation.
        explanation.
        * class.c (check_bases): Likewise.
        * class.c (check_bases): Likewise.
        (maybe_warn_about_overly_private_class): Likewise.
        (maybe_warn_about_overly_private_class): Likewise.
        (check_field_decls): Likewise.
        (check_field_decls): Likewise.
        (layout_empty_base): Likewise.
        (layout_empty_base): Likewise.
        (layout_virtual_bases): Likewise.
        (layout_virtual_bases): Likewise.
        (layout_class_type): Likewise.
        (layout_class_type): Likewise.
2006-01-28  Mark Mitchell  
2006-01-28  Mark Mitchell  
        PR c++/25999
        PR c++/25999
        * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
        * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
        here, not ...
        here, not ...
        (start_function): ... here.
        (start_function): ... here.
2006-01-28  Mark Mitchell  
2006-01-28  Mark Mitchell  
        PR c++/25855
        PR c++/25855
        * class.c (resolve_address_of_overloaded_function): Adjust use of
        * class.c (resolve_address_of_overloaded_function): Adjust use of
        return value from most_specialized_instantiation.
        return value from most_specialized_instantiation.
        * pt.c (determine_specialization): Avoid multiple calls to
        * pt.c (determine_specialization): Avoid multiple calls to
        get_bindings.
        get_bindings.
        (most_specialized_instantiation): When a tie occurs, set the
        (most_specialized_instantiation): When a tie occurs, set the
        current presumed champion to the next template.  Return the
        current presumed champion to the next template.  Return the
        TREE_LIST node containing the template, rather than the template
        TREE_LIST node containing the template, rather than the template
        itself.
        itself.
        (most_specialized): Remove.
        (most_specialized): Remove.
        * name-lookup.c (push_overloaded_decl): When duplicate_decls
        * name-lookup.c (push_overloaded_decl): When duplicate_decls
        indicates a failed redeclaration, report that to callers.
        indicates a failed redeclaration, report that to callers.
2006-01-26  Jason Merrill  
2006-01-26  Jason Merrill  
        PR c++/16021
        PR c++/16021
        * name-lookup.c (parse_using_directive): Require strong using to
        * name-lookup.c (parse_using_directive): Require strong using to
        name a nested namespace.
        name a nested namespace.
2006-01-25  Volker Reichelt  
2006-01-25  Volker Reichelt  
        Revert:
        Revert:
        * cp-tree.h (do_poplevel): Remove prototype.
        * cp-tree.h (do_poplevel): Remove prototype.
        * semantics.c (do_poplevel): Add prototype.  Make static.
        * semantics.c (do_poplevel): Add prototype.  Make static.
        Revert:
        Revert:
        * cp-tree.h (default_conversion): Remove prototype.
        * cp-tree.h (default_conversion): Remove prototype.
        * typeck.c (default_conversion): Make static.
        * typeck.c (default_conversion): Make static.
2006-01-25  Volker Reichelt  
2006-01-25  Volker Reichelt  
        * cp-tree.h (get_primary_binfo): Remove prototype.
        * cp-tree.h (get_primary_binfo): Remove prototype.
        (push_using_decl): Likewise.
        (push_using_decl): Likewise.
        (current_template_args): Likewise.
        (current_template_args): Likewise.
        (more_specialized_class): Likewise.
        (more_specialized_class): Likewise.
        (mark_class_instantiated): Likewise.
        (mark_class_instantiated): Likewise.
        (default_conversion): Likewise.
        (default_conversion): Likewise.
        (pfn_from_ptrmemfunc): Likewise.
        (pfn_from_ptrmemfunc): Likewise.
        * class.c (get_primary_binfo): Add prototype, make static, simplify.
        * class.c (get_primary_binfo): Add prototype, make static, simplify.
        * name-lookup.c (push_using_decl): Make static.
        * name-lookup.c (push_using_decl): Make static.
        * pt.c (current_template_args): Likewise.
        * pt.c (current_template_args): Likewise.
        (more_specialized_class): Likewise.
        (more_specialized_class): Likewise.
        (mark_class_instantiated): Likewise.
        (mark_class_instantiated): Likewise.
        * typeck.c (default_conversion): Make static.
        * typeck.c (default_conversion): Make static.
        (pfn_from_ptrmemfunc): Add prototype, make static.
        (pfn_from_ptrmemfunc): Add prototype, make static.
2006-01-24  Dirk Mueller  
2006-01-24  Dirk Mueller  
        * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
        * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
2006-01-24  Volker Reichelt  
2006-01-24  Volker Reichelt  
        PR c++/25552
        PR c++/25552
        * parser.c (cp_parser_unqualified_id): Check that destructor name
        * parser.c (cp_parser_unqualified_id): Check that destructor name
        and scope match.
        and scope match.
        * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
        * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
        Adjust comment.  Return early if possible.
        Adjust comment.  Return early if possible.
        Use same_type_p to compare types.
        Use same_type_p to compare types.
        * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
        * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
2006-01-24  Mark Mitchell  
2006-01-24  Mark Mitchell  
        * semantics.c: Remove outdated comment.
        * semantics.c: Remove outdated comment.
2006-01-23  Volker Reichelt  
2006-01-23  Volker Reichelt  
        * cp-tree.h (do_poplevel): Remove prototype.
        * cp-tree.h (do_poplevel): Remove prototype.
        * semantics.c (do_poplevel): Add prototype.  Make static.
        * semantics.c (do_poplevel): Add prototype.  Make static.
        * cp-tree.h (original_type): Remove prototype.
        * cp-tree.h (original_type): Remove prototype.
        * typeck.c (original_type): Make static.
        * typeck.c (original_type): Make static.
        * cp-tree.h (declare_global_var): Remove prototype.
        * cp-tree.h (declare_global_var): Remove prototype.
        * decl.c (declare_global_var): Make static.
        * decl.c (declare_global_var): Make static.
        * cp-tree.h (implicitly_declare_fn): Remove prototype.
        * cp-tree.h (implicitly_declare_fn): Remove prototype.
        * method.c (implicitly_declare_fn): Make static.
        * method.c (implicitly_declare_fn): Make static.
        * cp-tree.h (fold_decl_constant_value): Remove prototype.
        * cp-tree.h (fold_decl_constant_value): Remove prototype.
        * pt.c (fold_decl_constant_value): Make static.
        * pt.c (fold_decl_constant_value): Make static.
        * cp-tree.h (build_x_delete): Remove prototype.
        * cp-tree.h (build_x_delete): Remove prototype.
        * init.c (build_vec_delete_1): Call build_op_delete_call directly
        * init.c (build_vec_delete_1): Call build_op_delete_call directly
        and not via build_x_delete.
        and not via build_x_delete.
        (build_x_delete): Remove.
        (build_x_delete): Remove.
        * cp-tree.h (get_vtt_name): Remove prototype.
        * cp-tree.h (get_vtt_name): Remove prototype.
        * class.c (get_vtt_name): Remove.
        * class.c (get_vtt_name): Remove.
        (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
        (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
2006-01-22  Gabriel Dos Reis  
2006-01-22  Gabriel Dos Reis  
        * rtti.c (build_dynamic_cast): Fix comment.
        * rtti.c (build_dynamic_cast): Fix comment.
2006-01-22  Gabriel Dos Reis  
2006-01-22  Gabriel Dos Reis  
        PR c++/10891
        PR c++/10891
        * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
        * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
        -fno-rtti.
        -fno-rtti.
2006-01-21  Mark Mitchell  
2006-01-21  Mark Mitchell  
        PR c++/25895
        PR c++/25895
        * class.c (build_base_path): Generate a NOP_EXPR instead of a
        * class.c (build_base_path): Generate a NOP_EXPR instead of a
        COMPONENT_REF if the base and derived classes are at the same
        COMPONENT_REF if the base and derived classes are at the same
        address.
        address.
        PR c++/25856
        PR c++/25856
        * decl.c (begin_destructor_body): Robustify.
        * decl.c (begin_destructor_body): Robustify.
        PR c++/25858
        PR c++/25858
        * parser.c (cp_parser_direct_declarator): Robustify.
        * parser.c (cp_parser_direct_declarator): Robustify.
2006-01-20  Volker Reichelt  
2006-01-20  Volker Reichelt  
        * parser.c (cp_lexer_next_token_is_keyword): Simplify.
        * parser.c (cp_lexer_next_token_is_keyword): Simplify.
        * parser.c (clear_decl_specs): Remove prototype.
        * parser.c (clear_decl_specs): Remove prototype.
        * parser.c (cp_parser_expression_fn): Remove.
        * parser.c (cp_parser_expression_fn): Remove.
        * call.c (add_builtin_candidates): Remove superfluous return.
        * call.c (add_builtin_candidates): Remove superfluous return.
        * name-lookup.c (do_toplevel_using_decl): Likewise.
        * name-lookup.c (do_toplevel_using_decl): Likewise.
        * parser.c (cp_parser_type_specifier_seq): Likewise.
        * parser.c (cp_parser_type_specifier_seq): Likewise.
        (cp_parser_save_default_args): Likewise.
        (cp_parser_save_default_args): Likewise.
2006-01-20  Dirk Mueller  
2006-01-20  Dirk Mueller  
        PR c++/5520
        PR c++/5520
        * semantics.c (finish_if_stmt): Call empty_body_warning.
        * semantics.c (finish_if_stmt): Call empty_body_warning.
        * parser.c (cp_parser_implicitly_scoped_statement):
        * parser.c (cp_parser_implicitly_scoped_statement):
        Mark empty statement with an empty stmt.
        Mark empty statement with an empty stmt.
2006-01-19  Mark Mitchell  
2006-01-19  Mark Mitchell  
        PR c++/22136
        PR c++/22136
        * name-lookup.c (do_class_using_decl): Don't try to look up base
        * name-lookup.c (do_class_using_decl): Don't try to look up base
        classes in templates with dependent base types.
        classes in templates with dependent base types.
2006-01-19  Volker Reichelt  
2006-01-19  Volker Reichelt  
        PR c++/25854
        PR c++/25854
        * pt.c (maybe_process_partial_specialization): Return early on
        * pt.c (maybe_process_partial_specialization): Return early on
        error_mark_node.
        error_mark_node.
2006-01-19  Volker Reichelt  
2006-01-19  Volker Reichelt  
        PR c++/16829
        PR c++/16829
        * decl.c (start_preparsed_function): Check default arguments
        * decl.c (start_preparsed_function): Check default arguments
        unconditionally.
        unconditionally.
        * name-lookup.c (pushdecl_maybe_friend): Check default arguments
        * name-lookup.c (pushdecl_maybe_friend): Check default arguments
        of all functions and function templates.
        of all functions and function templates.
        * parser.c (cp_parser_late_parsing_default_args): Check default
        * parser.c (cp_parser_late_parsing_default_args): Check default
        arguments.
        arguments.
        * decl2.c (check_default_args): Set missing default arguments to
        * decl2.c (check_default_args): Set missing default arguments to
        error_mark_node.
        error_mark_node.
2006-01-18  Mark Mitchell  
2006-01-18  Mark Mitchell  
        PR c++/25836
        PR c++/25836
        * cp-tree.h (push_class_stack): New function.
        * cp-tree.h (push_class_stack): New function.
        (pop_class_stack): Likewise.
        (pop_class_stack): Likewise.
        * class.c (class_stack_node): Add hidden field.
        * class.c (class_stack_node): Add hidden field.
        (pushclass): Clear it.
        (pushclass): Clear it.
        (push_class_stack): New function.
        (push_class_stack): New function.
        (pop_class_stack): Likewise.
        (pop_class_stack): Likewise.
        (currently_open_class): Ignore hidden classes.
        (currently_open_class): Ignore hidden classes.
        (currently_open_derived_class): Likewise.
        (currently_open_derived_class): Likewise.
        * name-lookup.c (push_to_top_level): Call push_class_stack.
        * name-lookup.c (push_to_top_level): Call push_class_stack.
        (pop_from_top_level): Call pop_class_stack.
        (pop_from_top_level): Call pop_class_stack.
2006-01-18  Kazu Hirata  
2006-01-18  Kazu Hirata  
        * tree.c (find_tree_t, find_tree): Remove.
        * tree.c (find_tree_t, find_tree): Remove.
        * cp-tree.h: Remove the prototype for find_tree.
        * cp-tree.h: Remove the prototype for find_tree.
2006-01-18  Jakub Jelinek  
2006-01-18  Jakub Jelinek  
        * search.c (lookup_conversions_r): Fix a pasto.
        * search.c (lookup_conversions_r): Fix a pasto.
2006-01-17  Eric Christopher  
2006-01-17  Eric Christopher  
        * call.c (convert_like_real): When issuing conversion
        * call.c (convert_like_real): When issuing conversion
        warnings, depend on OPT_Wconversion.
        warnings, depend on OPT_Wconversion.
        * cvt.c (build_expr_type_conversion): Ditto.
        * cvt.c (build_expr_type_conversion): Ditto.
2006-01-17  Kazu Hirata  
2006-01-17  Kazu Hirata  
        * name-lookup.c (lookup_namespace_name): Remove.
        * name-lookup.c (lookup_namespace_name): Remove.
        * name-lookup.h: Remove the prototype for
        * name-lookup.h: Remove the prototype for
        lookup_namespace_name.
        lookup_namespace_name.
2006-01-17  Jakub Jelinek  
2006-01-17  Jakub Jelinek  
        PR c/25682
        PR c/25682
        * decl.c (compute_array_index_type): After issuing not an integral
        * decl.c (compute_array_index_type): After issuing not an integral
        constant-expression error, set size to 1 to avoid ICEs later on.
        constant-expression error, set size to 1 to avoid ICEs later on.
2006-01-16  Ian Lance Taylor  
2006-01-16  Ian Lance Taylor  
        * parser.c: Include "cgraph.h".
        * parser.c: Include "cgraph.h".
        (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
        (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
        assemble_asm.
        assemble_asm.
2006-01-16  Rafael Ávila de Espíndola  
2006-01-16  Rafael Ávila de Espíndola  
        * g++spec.c (lang_specific_spec_functions): Remove.
        * g++spec.c (lang_specific_spec_functions): Remove.
2006-01-15  Gabriel Dos Reis  
2006-01-15  Gabriel Dos Reis  
        * decl.c (check_initializer): Fix thinko.
        * decl.c (check_initializer): Fix thinko.
2006-01-14  Mark Mitchell  
2006-01-14  Mark Mitchell  
        PR c++/25663
        PR c++/25663
        * parser.c (cp_parser_direct_declarator): Use cp_parser_error
        * parser.c (cp_parser_direct_declarator): Use cp_parser_error
        instead of error.
        instead of error.
2006-01-13  Jason Merrill  
2006-01-13  Jason Merrill  
        * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
        * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
        * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
        * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
        * pt.c (check_explicit_specialization): Likewise.
        * pt.c (check_explicit_specialization): Likewise.
2006-01-12  Jason Merrill  
2006-01-12  Jason Merrill  
        PR libstdc++/24660
        PR libstdc++/24660
        * pt.c (check_explicit_specialization): Handle namespace
        * pt.c (check_explicit_specialization): Handle namespace
        association.
        association.
        * name-lookup.c (set_decl_namespace): Likewise.
        * name-lookup.c (set_decl_namespace): Likewise.
2006-01-12  Nathan Sidwell  
2006-01-12  Nathan Sidwell  
        PR c++/24824
        PR c++/24824
        * class.c (handle_using_decl): Pass correct scope to
        * class.c (handle_using_decl): Pass correct scope to
        cp_emit_debug_info_for_using.
        cp_emit_debug_info_for_using.
2006-01-11  Nathan Sidwell  
2006-01-11  Nathan Sidwell  
        PR c++/25386
        PR c++/25386
        * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
        * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
        packedness.
        packedness.
2006-01-06  Gabriel Dos Reis  
2006-01-06  Gabriel Dos Reis  
        * parser.c (cp_parser_primary_expression): Document the grammar
        * parser.c (cp_parser_primary_expression): Document the grammar
        for the built-in offsetof, a GNU extension.
        for the built-in offsetof, a GNU extension.
2006-01-04  Zdenek Dvorak 
2006-01-04  Zdenek Dvorak 
        PR c++/25632
        PR c++/25632
        * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
        * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
        in condition.
        in condition.
2006-01-04  Chris Lattner  
2006-01-04  Chris Lattner  
        * typeck2.c: update copyright to 2006
        * typeck2.c: update copyright to 2006
        (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
        (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
2006-01-04  Mark Mitchell  
2006-01-04  Mark Mitchell  
        PR c++/24782
        PR c++/24782
        * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
        * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
        checks, even when parsing tentatively.
        checks, even when parsing tentatively.
2006-01-04  Richard Henderson  
2006-01-04  Richard Henderson  
        Merge from gomp branch.
        Merge from gomp branch.
        * lex.c (handle_pragma_java_exceptions): Fix whitespace.
        * lex.c (handle_pragma_java_exceptions): Fix whitespace.
        * parser.c (struct cp_token): Add pragma_kind.
        * parser.c (struct cp_token): Add pragma_kind.
        (eof_token): Update to match.
        (eof_token): Update to match.
        (struct cp_lexer): Add in_pragma; rearrange next for better packing.
        (struct cp_lexer): Add in_pragma; rearrange next for better packing.
        (cp_parser_initial_pragma): New.
        (cp_parser_initial_pragma): New.
        (cp_lexer_new_main): Use it.  Don't bother clearing
        (cp_lexer_new_main): Use it.  Don't bother clearing
        c_lex_return_raw_strings.
        c_lex_return_raw_strings.
        (cp_lexer_get_preprocessor_token): Always initialize keyword
        (cp_lexer_get_preprocessor_token): Always initialize keyword
        and pragma_kind fields.  Handle CPP_PRAGMA.
        and pragma_kind fields.  Handle CPP_PRAGMA.
        (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
        (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
        in_pragma is set.
        in_pragma is set.
        (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
        (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
        (cp_lexer_print_token) : Don't print as a string.
        (cp_lexer_print_token) : Don't print as a string.
        (cp_parser_skip_to_pragma_eol): New.
        (cp_parser_skip_to_pragma_eol): New.
        (cp_parser_error): Use it.
        (cp_parser_error): Use it.
        (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
        (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
        rearrange with switch statement.
        rearrange with switch statement.
        (cp_parser_skip_to_end_of_statement): Likewise.
        (cp_parser_skip_to_end_of_statement): Likewise.
        (cp_parser_skip_to_end_of_block_or_statement): Likewise.
        (cp_parser_skip_to_end_of_block_or_statement): Likewise.
        (cp_parser_skip_to_closing_brace): Likewise.
        (cp_parser_skip_to_closing_brace): Likewise.
        (cp_parser_skip_until_found): Likewise.
        (cp_parser_skip_until_found): Likewise.
        (cp_parser_statement): Add in_compound argument; update callers.
        (cp_parser_statement): Add in_compound argument; update callers.
        Use it to decide how to handle pragma parsing.
        Use it to decide how to handle pragma parsing.
        (cp_parser_labeled_statement): Add in_compound argument; pass
        (cp_parser_labeled_statement): Add in_compound argument; pass
        it on to cp_parser_statement.
        it on to cp_parser_statement.
        (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
        (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
        (cp_parser_declaration_seq_opt): Likewise.
        (cp_parser_declaration_seq_opt): Likewise.
        (cp_parser_parameter_declaration): Likewise.
        (cp_parser_parameter_declaration): Likewise.
        (cp_parser_member_specification_opt): Likewise.
        (cp_parser_member_specification_opt): Likewise.
        (cp_parser_function_definition_after_decl): Likewise.
        (cp_parser_function_definition_after_decl): Likewise.
        (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
        (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
        (cp_parser_pragma): New.
        (cp_parser_pragma): New.
        (pragma_lex): New.
        (pragma_lex): New.
2006-01-04  Dirk Mueller 
2006-01-04  Dirk Mueller 
        * decl.c (finish_constructor_body): create simple
        * decl.c (finish_constructor_body): create simple
        compound stmt instead of a if(1) { } construct.
        compound stmt instead of a if(1) { } construct.
2006-01-03  Mark Mitchell  
2006-01-03  Mark Mitchell  
        PR c++/25492
        PR c++/25492
        * name-lookup.c (push_class_level_binding): When a derived class
        * name-lookup.c (push_class_level_binding): When a derived class
        provides a type binding, eliminate any type binding from a base
        provides a type binding, eliminate any type binding from a base
        class.
        class.
        PR c++/25625
        PR c++/25625
        * repo.c (repo_emit_p): Always instantiate static data members
        * repo.c (repo_emit_p): Always instantiate static data members
        initialized by constant expressions, so that there values are
        initialized by constant expressions, so that there values are
        available.
        available.
2006-01-02  Mark Mitchell  
2006-01-02  Mark Mitchell  
        PR c++/25635
        PR c++/25635
        * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
        * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
        conversion operator.
        conversion operator.
        * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
        * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
        PR c++/25638
        PR c++/25638
        * class.c (add_method): Never associate more than one destructor
        * class.c (add_method): Never associate more than one destructor
        with a single class.
        with a single class.
        PR c++/25637
        PR c++/25637
        * cp-tree.h (do_friend): Adjust prototype.
        * cp-tree.h (do_friend): Adjust prototype.
        * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
        * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
        (grokdeclarator): Likewise.  Refine check for invalid
        (grokdeclarator): Likewise.  Refine check for invalid
        declarations/definitions of member functions outside of their own
        declarations/definitions of member functions outside of their own
        class.
        class.
        * friend.c (do_friend): Make funcdef_flag a bool, not an int.
        * friend.c (do_friend): Make funcdef_flag a bool, not an int.
        PR c++/25633
        PR c++/25633
        * parser.c (cp_parser_mem_initializer_list): Check result of
        * 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 against error_mark_node, not NULL_TREE.
        (cp_parser_mem_initializer): Return error_mark_node for failure.
        (cp_parser_mem_initializer): Return error_mark_node for failure.
        PR c++/25634
        PR c++/25634
        * parser.c (cp_parser_template_parameter_list): Call
        * parser.c (cp_parser_template_parameter_list): Call
        begin_template_parm_list and end_template_parm_list here.
        begin_template_parm_list and end_template_parm_list here.
        (cp_parser_type_parameter): Not here.
        (cp_parser_type_parameter): Not here.
        (cp_parser_template_declaration_after_export): Or here.
        (cp_parser_template_declaration_after_export): Or here.
        (cp_parser_elaborated_type_specifier): Call
        (cp_parser_elaborated_type_specifier): Call
        cp_parser_check_template_parameters.
        cp_parser_check_template_parameters.
        * tree.c (build_target_expr_with_type): Use force_target_expr.
        * tree.c (build_target_expr_with_type): Use force_target_expr.
        * decl2.c (mark_used): Fix typo in comment.
        * decl2.c (mark_used): Fix typo in comment.
2006-01-02  Volker Reichelt  
2006-01-02  Volker Reichelt  
        * parser.c (cp_parser_using_declaration): Skip name-lookup on
        * parser.c (cp_parser_using_declaration): Skip name-lookup on
        invalid scope.
        invalid scope.


Copyright (C) 2006 Free Software Foundation, Inc.
Copyright (C) 2006 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
notice and this notice are preserved.
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.