OSDN Git Service

contrib/
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 9125194..ee09f15 100644 (file)
@@ -1,3 +1,469 @@
+2008-10-24  Jakub Jelinek  <jakub@redhat.com>
+
+       * Make-lang.in (check-c++-subtargets): New alias for
+       check-g++-subtargets.
+       (lang_checks_parallelized): Add check-g++.
+       (check_g++_parallelize): New variable.
+
+2008-10-21  Richard Guenther  <rguenther@suse.de>
+
+       * semantics.c (simplify_aggr_init_exprs_r): Remove.
+       (expand_or_defer_fn): Do not walk the function body to
+       simplify aggr_init_exprs.
+
+2008-10-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c++/37004
+       * typeck.c (cp_common_type): New. The same as
+       type_after_usual_arithmetic_conversions but without promotions.
+       (type_after_usual_arithmetic_conversions): Do the promotions and
+       call cp_common_type.
+       (common_type): Make it behave like the C version of this
+       function. Do not handle pointer types.
+       (common_pointer_type): Move handling of pointer types from
+       common_type to here.
+       (cp_build_binary_op): Use common_pointer_type instead of
+       common_type in call to pointer_diff.
+       Use cp_common_type instead of common_type.
+       * cp-tree.h (common_pointer_type): Declare.
+
+2008-10-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37819
+       * cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR
+       arguments if they don't already have COND_EXPR's type.
+
+2008-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/37650
+       * pt.c (push_template_decl_real): Check that current_template_parms
+       is not null.
+       (process_partial_specialization): Assert current_template_parms not
+       null.
+
+2008-10-13  Doug Evans  <dje@google.com>
+
+       * cp-tree.h (DECL_MAIN_P): Fix parentheses around expression.
+
+2008-10-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37146
+       * cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of
+       COND_EXPR.
+
+2008-10-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37568
+       * semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of
+       setting it to error_mark_node.
+
+2008-10-07  Steve Ellcey  <sje@cup.hp.com>
+
+       * decl.c (start_cleanup_fn): Declare as inline.
+
+2008-10-06  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37376, other mangling issues
+       * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
+       (write_member_name): Break out from...
+       (write_expression): ...here.  Handle dependent COMPONENT_REF.
+       (write_template_arg): Wrap an argument pack in 'I'/'E'.
+       (write_builtin_type): Update char16/32_t mangling.
+       (write_nested_name, write_prefix): Don't forget template args
+       for typename types.
+       * operators.def: Add ARROW_EXPR, update COMPONENT_REF and 
+       EXPR_PACK_EXPANSION.
+
+2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
+
+       * typeck.c (build_x_indirect_ref): Add location argument.
+       (cp_build_binary_op): Pass location to warn_for_div_by_zero.
+       (cp_build_unary_op): Add location argument.
+       (cp_build_modify_expr): Same.
+       * class.c (build_base_path): Pass location to build_indirect_ref.
+       * semantics.c (handle_omp_for_class_iterator): Pass elocus to
+       build_modify_expr.
+
+2008-10-05  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/37410
+       * cp-gimplify.c (cp_gimplify_expr): For each USING_STMT
+       make sure an IMPORTED_DECL node is added to the BLOCK_VARS list
+       of the innermost containing BLOCK.
+
+2008-10-03  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/37719
+       * error.c (dump_function_decl): Save the exceptions in case of
+       error about incompatible specifications in a specialization.
+
+2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue.
+
+2008-09-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR c++/37683
+       * parser.c (cp_parser_selection_statement): Fix uninitialized
+       variable.
+
+2008-09-30  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/37555
+       PR c++/37556
+       * decl.c (grokdeclarator): Set the type for typedefs to a
+       nested-name-specifier to error_mark_node.
+
+2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
+
+       * parser.c (cp_parser_selection_statement): Implement here the
+       -Wempty-body warning for `if' and `else' statements.
+       * semantics.c (finish_if_stmt): Do not call empty_body_warning.
+
+2008-09-25  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/37649
+       * name-lookup.c (maybe_process_template_type_declaration): Check
+       return value of push_template_decl_real for error_mark_node.
+
+2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
+
+       * semantics.c (finish_fname): Pass location to fname_decl.
+
+2008-09-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37533
+       * semantics.c (finish_omp_for): If processing_template_decl, just build
+       MODIFY_EXPR for init instead of calling cp_build_modify_expr.
+
+2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
+
+       * typeck.c (build_array_ref): Pass location to cp_build_binary_op.
+       (get_member_function_from_ptrfunc): Same.
+       (build_x_binary_op): Same.
+       (build_binary_op): Same.
+       (cp_build_binary_op): New location argument.
+       (pointer_diff): Pass location to cp_build_binary_op.
+       (cp_truthvalue_conversion): Pass location to build_binary_op.
+       (convert_ptrmem): Pass location to cp_build_binary_op.
+       (cp_build_modify_expr): Same.
+       (build_ptrmemfunc): Same.
+       * init.c (expand_cleanup_for_base): Pass location to
+       c_common_truthvalue_conversion.
+       (build_new_1): Pass location to cp_build_binary_op.
+       (build_vec_delete_1): Pass location to *build_binary_op,
+       c_common_truthvalue_conversion.
+       (build_vec_init): Same.
+       (build_delete): Same.
+       * decl.c (compute_array_index_type): Same.
+       * call.c (build_new_op): Same.
+       * rtti.c (build_dynamic_cast_1): Same.
+       * cp-tree.h: Add argument to cp_build_binary_op.
+       * semantics.c (handle_omp_for_class_iterator): Pass location to
+       *build_binary_op, c_common_truthvalue_conversion.
+       * decl2.c (get_guard_cond): Same.
+
+2008-09-17  Richard Guenther  <rguenther@suse.de>
+
+       PR c++/22374
+       * rtti.c (build_dynamic_cast_1): Convert the COND_EXPR
+       result to the correct type.
+
+2008-09-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR c++/37450
+       * name-lookup.c (pushdecl_maybe_friend): Don't return the old
+       parameter for duplicate.
+
+2008-09-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37588
+       * name-lookup.c (lookup_type_scope): Look through sk_function_parms.
+
+2008-09-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37552
+       * typeck.c (build_array_ref): Use protected_set_expr_location instead
+       of SET_EXPR_LOCATION when ret might not be an expression.
+
+2008-09-17  Jan Hubicka  <jh@suse.cz>
+
+       PR c++/18071
+       * cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P.
+
+2008-09-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37531
+       * semantics.c (finish_compound_literal): Return error_mark_node if
+       type is errorneous.
+
+       PR c++/37532
+       * lex.c (init_reswords): Don't populate ridpointers for D_CONLY
+       reserved words.
+
+2008-09-15  Aldy Hernandez  <aldyh@redhat.com>
+
+       * decl.c (duplicate_decls): Call error_at.
+       (grokfndecl): New location argument.  Use location if available.
+       (grokdeclarator): Pass declarator location to grokfndecl.
+       * cp-tree.h (struct cp_declarator): Update comment for id_loc.
+       * decl2.c (check_classfn): Use error_at.
+       * parser.c (cp_parser_init_declarator): Set function_start_locus
+       to brace location.
+       (cp_parser_member_declaration): Set id_loc for function declarators.
+
+2008-09-09  Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/37500
+       * pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer.
+
+2008-09-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37417
+       * tree.c (array_type_nelts_top): Add size_one_node instead of
+       integer_one_node.
+
+2008-09-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37439
+       * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has
+       DECL_CONTEXT set.
+
+2008-09-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37389
+       * decl.c (build_enumerator): Handle previous value's DECL_INITIAL
+       being error_operand_p.  Don't clear value if it was error_mark_node.
+
+2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
+
+       * cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
+       * cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
+       * semantics.c (anon_aggr_type_p): Remove.
+
+2008-09-06  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37302
+       * parser.c (cp_parser_parameter_declaration_list): Process the
+       PARM_DECLs as we go and push them.  Return a TREE_LIST.
+       (cp_parser_parameter_declaration_clause): Return a TREE_LIST.
+       (cp_parser_direct_declarator): Create a binding level and
+       suppress deprecated warnings in the parameter list.
+       (make_call_declarator): PARMS is now a tree.
+       * cp-tree.h (struct cp_declarator): Function parms are now a tree.
+       * decl.h (enum deprecated_states, deprecated_state): Move here.
+       * decl.c: From here.
+       (type_is_deprecated): New fn.
+       (grokparms): PARMLIST is a tree now.  Warn about parms that
+       use deprecated types.
+       * mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and
+       0-operand cast.
+       * pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation.
+       (tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a 
+       function.
+       * name-lookup.c (pushtag): Look through function parameter scopes.
+       (pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL 
+       when we're parsing a function declarator.
+
+2008-09-05  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/37342
+       * tree.c (cp_build_qualified_type_real): Deal with sharing of
+       TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method
+       types.
+       
+2008-09-04  Ian Lance Taylor  <iant@google.com>
+
+       * parser.c (check_no_duplicate_clause): Change code parameter to
+       enum omp_clause_code.
+
+2008-09-03  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/37348
+       * decl.c (cp_finish_decl): Only set
+       DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P if decl is VAR_DECL.
+
+       PR c++/37189
+       * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New
+       extern decls.
+       * decl2.c (mark_used): If defer_mark_used_calls, push decl into
+       deferred_mark_used_calls vector and exit early.
+       * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New
+       variables.
+       (finish_function): Set defer_mark_used_calls for the duration of the
+       function.  Call mark_used on any queued decls.
+
+2008-09-02  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37208
+       * call.c (build_over_call): Make =delete work with SFINAE.
+       * class.c (resolve_address_of_overloaded_function): Likewise.
+
+       * cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to
+       threadprivate_or_deleted_p.
+       (CP_DECL_THREADPRIVATE_P): Adjust.
+       (DECL_DELETED_FN): Likewise.
+       (SD_UNINITIALIZED, SD_INITIALIZED, SD_DEFAULTED): New macros.
+       (SD_DELETED): New macro.
+       * parser.c (cp_parser_init_declarator): Use them.
+       * decl.c (start_decl): Use them.
+
+       * decl2.c (mark_used): Give =deleted error even in sizeof.
+
+       * typeck2.c (check_narrowing): Downgrade narrowing error to
+       permerror.
+
+2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
+
+       * typeck.c (build_array_ref): Use new location argument.
+       * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
+       * call.c (build_new_op): Same.
+       * decl2.c (grok_array_decl): Same.
+       * cp-tree.h (build_array_ref): Add location argument to prototype.
+
+2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
+
+       * typeck.c (build_x_indirect_ref): Add location argument.
+       * class.c (build_base_path): Pass location to build_indirect_ref.
+       * pt.c (tsubst_copy_and_build): Pass location to
+       finish_label_address_expr.
+       * parser.c (cp_parser_unary_expression): Same.
+
+2008-08-31  Jason Merrill  <jason@redhat.com>
+
+       Implement late-specified return type using 'auto'.
+       * cp-tree.h (struct cp_declarator): Add late_return_type field to
+       function declarator.
+       * parser.c (cp_parser_late_return_type_opt): New fn.
+       (cp_parser_direct_declarator): Use it.
+       (make_call_declarator): Put it in the declarator.
+       * decl.c (grokdeclarator): Splice in late-specified return type.
+       * pt.c (splice_late_return_type): New fn.
+
+2008-08-29  Michael Meissner  <gnu@the-meissners.org>
+
+       * decl.c (builtin_function_1): Take a bool argument to decide
+       whether to use pushdecl or pushdecl_top_level.
+       (duplicate_decls): Copy function specific target and optimization
+       options on duplicate declarations.
+       (cxx_builtin_function): Update builtin_function_1 call.
+       (cxx_builtin_function_ext_scope): New function, guarantee that the
+       declaration is done at global scope.
+
+       * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
+       macro, define builtin function hook for delayed machine specific
+       builtins.
+
+       * cp-tree.h (cxx_builtin_function_ext_scope): Add declaration.
+
+2008-08-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37288
+       * pt.c (dependent_type_p): Don't abort on auto outside of a template.
+
+2008-08-29  Jason Merrill  <jason@redhat.com>
+
+       Implement C++0x 'auto' semantics.
+       * decl.c (start_decl_1): Don't complain about auto being incomplete.
+       (cp_finish_decl): Deduce auto.
+       * init.c (build_new): Handle 'new auto'.
+       * typeck2.c (cxx_incomplete_type_diagnostic): Give a different
+       message for auto than for normal template type parms.
+       * pt.c (type_dependent_expression_p): Handle { }.
+       (make_auto): New function.
+       (listify_autos): New function.
+       (do_auto_deduction): New function.
+       (is_auto): New function.
+       (type_uses_auto): New function.
+       * cp-tree.h: Declare them.
+       * parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't
+       treat auto as a declspec.
+       (cp_parser_simple_type_specifier): It's a type-specifier.
+
+2008-08-29  Mark Mitchell  <mark@codesourcery.com>
+
+       * mangle.c (write_type): Add target-specific manglings for
+       non-fundamental types to the substitution table.
+       gcc/testsuite/
+
+2008-08-29  Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/29635
+       PR fortran/23057
+       * name-lookup.c (do_using_directive, cp_emit_debug_info_for_using):
+       Adjust debug_hooks->imported_module_or_decl callers.
+
+2008-08-29  Jan Hubicka  <jh@suse.cz>
+
+       * cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic.
+
+2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/37260
+       * decl.c (reshape_init_r): Check init for error_mark_node.
+
+2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c++/17880
+       * semantics.c (maybe_convert_cond): Call verify_sequence_points.
+       (finish_return_stmt): Likewise.
+       (finish_switch_condition): Likewise.
+
+2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * cp-tree.h: Fix #error directive.
+
+2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * typeck.c (type_after_usual_arithmetic_conversions): Don't do the
+       usual arithmetic conversions on scoped enumeration types.
+       (common_type): Ditto.
+       (default_conversion): Don't perform integral promotions on scoped
+       enumeration types. 
+       (build_array_ref): Scoped enumeration types can't be used as
+       subscripts.
+       * decl.c (start_enum): If building a C++0x scoped enumeration,
+       enter its scope. If provided with an underlying type, check that
+       underlying type and set up the enumeration type accordingly.
+       (finish_enum): Only compute an underlying type if the underlying
+       type isn't already fixed, and only convert the enumerator values
+       now if we've just computed the underlying type. Finish the scope
+       of C++0x scoped enumerations.
+       (build_enumerator): For enumerations with a fixed underlying type,
+       check the enumerator values when the enumerator is defined.
+       (lookup_enumerator): New.
+       * call.c (standard_conversion): Don't allow assignment from
+       integers to scoped enumeration types, even with -fpermissive.
+       Don't convert from scoped enumerations to bool or any arithmetic
+       types.
+       (build_conditional_expr): Don't per the usual arithmetic
+       conversions for scoped enumeration types.
+       (convert_like_real): Check complain to see if we should
+       produce warnings.
+       * error.c (class_key_or_enum_as_string): Print scoped enums.
+       * cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not
+       TYPE_LANG_FLAG_5.
+       (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New.
+       (SCOPED_ENUM_P): New.
+       (UNSCOPED_ENUM_P): New.
+       (SET_SCOPED_ENUM_P): New.
+       (ENUM_UNDERLYING_TYPE): New.
+       * pt.c (lookup_template_class): Update the instantiation of enum
+       types to deal with C++0x scoped enumerations and underlying
+       types.
+       * name-lookup.c (begin_scope): Deal with scoped enumeration
+       scopes.
+       (lookup_qualified_name): Deal with lookup into enumeration types.
+       * name-lookup.h (enum scope_kind): Add sk_scoped_enum.
+       * parser.c (cp_parser_class_or_namespace_name): Rename to...
+       (cp_parser_qualifying_entity): ... this. Also, in C++0x mode,
+       parse a type-name that can be an enumeration type.
+       (cp_parser_nested_name_specifier_opt): Update with C++0x grammar.
+       (cp_parser_elaborated_type_specifier): Parse the
+       optional `struct' or `class' following enum (in C++0x).
+       (cp_parser_enum_specifier): Parse C++0x scoped enumerations and
+       enum-base clauses.
+
 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
        * typeck.c: Update all calls to pedwarn.
        * semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check
        copy constructors and copy assignment operators proper.
 
-2008-07-21  Rafael Avila de Espindola  <espindola@google.com>
+2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
 
        * parser.c (cp_token): Remove in_system_header.
        (eof_token): Remove in_system_header.
        * init.c (avoid_placement_new_aliasing): New static function.
        (build_new_1): Call it.
 
-2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
+2007-06-11  Rafael Ávila de Espíndola  <espindola@google.com>
 
        * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
        (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
        * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
        type only if is a class type (5.2.8/4).
 
-2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
+2007-05-14  Rafael Ávila de Espíndola  <espindola@google.com>
 
        * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
        * decl.c (grokdeclarator): Use unsigned_type_for instead of