OSDN Git Service

Fix PR c++/48656
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index c4df48d..6b6d81b 100644 (file)
@@ -1,5 +1,480 @@
+2011-04-28  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/48656
+       * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
+       considering call expressions involving a member function.
+
+2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/48530
+       * tree.c (build_cplus_new): Check build_target_expr return
+       value for error_mark_node.
+
+2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/48771
+       * semantics.c (literal_type_p): Reference types are literal types,
+       per the FDIS.
+       (valid_type_in_constexpr_fundecl_p): Remove.
+       (is_valid_constexpr_fn): Adjust.
+
+2011-04-27  Jason Merrill  <jason@redhat.com>
+
+       PR libstdc++/48760
+       Implement list-initialization of _Complex.
+       * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
+       (check_initializer): Likewise.
+       * call.c (build_complex_conv): New.
+       (implicit_conversion): Call it.
+       (convert_like_real): Handle it.
+       * typeck2.c (check_narrowing): Handle it.
+
+       * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
+       decide whether to delete.
+       (build_vec_init): Pass sfk_complete_destructor.
+
+       PR c++/40975
+       * cp-tree.def (VEC_INIT_EXPR): Add third operand.
+       * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
+       * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
+       * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
+       (build_vec_init_elt): Don't expect an array type.
+       (build_array_copy): Adjust.
+       * init.c (perform_member_init): Adjust.
+       (build_new_1): Use build_vec_init_expr.
+
+       * class.c (resolve_address_of_overloaded_function): Don't
+       change OVERLOAD to TREE_LIST.
+       * pt.c (print_candidates_1): Remove nonsensical assert.
+
+       PR c++/48046
+       * parser.c (cp_parser_diagnose_invalid_type_name): Commit
+       to tentative parse sooner.
+
+2011-04-26  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42687
+       * parser.c (cp_parser_primary_expression): Set *idk to
+       CP_ID_KIND_NONE for a parenthesized identifier.
+
+       * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
+       (cxx_print_identifier): Correct indentation.
+
+       PR c++/48530
+       * decl.c (cxx_maybe_build_cleanup): Add complain parm.
+       * tree.c (force_target_expr): Add complain parm.
+       (build_target_expr_with_type): Likewise.
+       (get_target_expr_sfinae): Split out.
+       (build_vec_init_expr, bot_manip): Adjust.
+       * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
+       (build_delete, build_dtor_call): Likewise.
+       (perform_direct_initialization_if_possible): Adjust.
+       (build_vec_init): Handle error return.
+       * cvt.c (force_rvalue): Add complain parm.
+       Call build_special_member_call directly.
+       * decl2.c (delete_sanity): Add complain parm.
+       (build_cleanup): Adjust.
+       * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
+       * semantics.c (finish_stmt_expr_expr): Adjust.
+       (finish_compound_literal): Adjust.
+       * parser.c (cp_parser_delete_expression): Adjust.
+       * typeck2.c (build_functional_cast): Adjust.
+       * cp-tree.h: Adjust.
+
+2011-04-26  Martin Jambor  <mjambor@suse.cz>
+
+       * class.c (cp_fold_obj_type_ref): Remove.
+       * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
+
+2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
+       * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
+       (UNDERLYING_TYPE_TYPE): Add.
+       * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
+       as TS_COMMON.
+       * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
+       cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
+       (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
+       * semantics.c (finish_underlying_type): New.
+       * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
+       * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
+       * cxx-pretty-print.c (p_cxx_type_id): Likewise.
+       * tree.c (cp_walk_subtrees): Likewise.
+       * pt.c (for_each_template_parm_r, tsubst, unify,
+       dependent_type_p_r): Likewise.
+       * mangle.c (write_type): Sorry for __underlying_type.
+
+2011-04-25  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48707
+       * decl.c (type_dependent_init_p): New.
+       (cp_finish_decl): Check it.
+       * pt.c (any_type_dependent_elements_p): New.
+       * cp-tree.h: Declare it.
+
+2011-04-20  Jason Merrill  <jason@redhat.com>
+
+       * semantics.c (finish_compound_literal): Don't put an array
+       with a dtor in a static variable.
+
+       * call.c (build_over_call): Handle trivial dtor.
+
+       * search.c (lookup_fnfields_slot): Call complete_type.
+
+       PR c++/48594
+       * decl2.c (build_offset_ref_call_from_tree): Move
+       non-dependency of object outside condition.
+
+       PR c++/48657
+       * decl.c (cp_finish_decl): Simplify template handling.
+
+2011-04-20  Jim Meyering  <meyering@redhat.com>
+
+       * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
+
+2011-04-19  Jason Merrill  <jason@redhat.com>
+
+       PR c++/46304
+       * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
+
+       PR c++/45267
+       * decl.c (duplicate_decls): Keep always_inline attribute
+       in sync with DECL_DISREGARD_INLINE_LIMITS.
+
+2011-04-18  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48569
+       * typeck2.c (build_functional_cast): Handle VOID_TYPE.
+
+       PR c++/48537
+       * init.c (build_value_init): Handle UNION_TYPE the same.
+
+2011-04-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/48632
+       * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
+       for type dependent pointers.
+
+2011-04-18  Jim Meyering  <meyering@redhat.com>
+
+       * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
+
+2011-04-17  Jan Hubicka  <jh@suse.cz>
+
+       * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
+       gotos.
+
+2011-04-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48531
+       * typeck2.c (build_functional_cast): Disallow array type.
+
+       * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
+
+2011-04-17  Jan Hubicka  <jh@suse.cz>
+
+       * class.c (cp_fold_obj_type_ref): Drop vtable_method.
+
+2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+       Implement N3271
+       * parser.c (cp_convert_range_for): Split into
+       cp_parser_perform_range_for_lookup.
+       (cp_parser_perform_range_for_lookup): New.
+       (cp_parser_range_for_member_function): New.
+       (cp_parser_for_init_statement): Correct error message.
+       * semantics.c (finish_call_expr): Accept COMPONENT_REF.
+
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_protocol_declaration): Updated for
+       change from objc_declare_protocols() to objc_declare_protocol().
+
+2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
+
+       PR objc++/48479
+       * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
+       and return immediately.
+
+2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * cp-tree.def (SWITCH_STMT): Add an extra operand.
+       * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
+       * cp-tree.h (SWITCH_STMT_SCOPE): Define.
+       * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
+       (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
+
+2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * cp-tree.def (IF_STMT): Add an extra operand.
+       * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
+       * cp-tree.h (IF_SCOPE): Define.
+       * semantics.c (begin_if_stmt): Pass scope to build_stmt.
+       (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
+
+2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
+       * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
+       * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
+       * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
+       Use FOR_SCOPE instead of TREE_CHAIN.
+       (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
+       (finish_for_stmt): Likewise.
+
+2011-04-14  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_postfix_expression): Fix flags passed to
+       build_new_method_call.
+       * semantics.c (finish_call_expr): Likewise.
+
+       PR c++/48531
+       * init.c (build_value_init_noctor): Check complain consistently.
+
+       PR c++/48557
+       * typeck.c (cp_build_binary_op): Don't decay void operands.
+
+       PR c++/48446
+       * decl.c (compute_array_index_type): Use get_temp_regvar instead
+       of variable_size.
+       * init.c (get_temp_regvar): No longer static.
+       * cp-tree.h: Declare it.
+
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_class_declaration): Updated for change
+       in objc_declare_class().
+
+2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * decl.c (poplevel): Use block_chainon.
+
+2011-04-13  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48594
+       * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
+       or pointer to (non-member) function.
+
+2011-04-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/48570
+       * semantics.c (cxx_eval_array_reference): Handle reading from
+       wchar_t, char16_t and char32_t STRING_CST.
+
+2011-04-13  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/48574
+       * class.c (fixed_type_or_null): We cannot determine the dynamic
+       type of a reference variable if its initializer is dependent.
+
+2011-04-13  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48581
+       * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
+       unqualified lookup failing if we're still in a template.
+
+2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
+       tree_contains_struct initialization to...
+       * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
+       macros.
+       * cp-objcp-common.h (cp_common_init_ts): Declare.
+       * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
+       calling TREE_CHAIN.
+
+2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_message_expression): Updated call
+       to objc_build_message_expr.
+
+2011-04-12  Martin Jambor  <mjambor@suse.cz>
+
+       * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
+       cgraph_get_create_node.
+       * decl2.c (cp_write_global_declarations): Call cgraph_get_node
+       instead of cgraph_get_create_node.
+       * method.c (make_alias_for_thunk): Call cgraph_get_node
+       instead of cgraph_get_create_node, assert it returns non-NULL.
+       (use_thunk): Likewise.
+       * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
+       when flag_syntax_only is not set.  Call cgraph_get_node instead of
+       cgraph_get_create_node.
+       (maybe_clone_body): Call cgraph_get_node instead of
+       cgraph_get_create_node.
+
+2011-04-12  Martin Jambor  <mjambor@suse.cz>
+
+       * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
+       instead of cgraph_node.
+       * decl2.c (cxx_callgraph_analyze_expr): Likewise.
+       (cp_write_global_declarations): Likewise.
+       * optimize.c (maybe_clone_body): Likewise.
+       * semantics.c (maybe_add_lambda_conv_op): Likewise.
+       * mangle.c (mangle_decl): Likewise.
+       * method.c (make_alias_for_thunk): Likewise.
+       (use_thunk): Likewise.
+
+2011-04-11  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48535
+       * decl.c (cp_complete_array_type_or_error): New.
+       * semantics.c (finish_compound_literal): Use it.
+       * cp-tree.h: Declare it.
+
+       PR c++/48535
+       * semantics.c (finish_compound_literal): Handle references.
+
+       PR c++/48535
+       * semantics.c (finish_compound_literal): Take complain parm.
+       (build_lambda_object): Adjust.
+       * cp-tree.h: Adjust.
+       * call.c (convert_like_real): Adjust.
+       * decl.c (check_initializer): Adjust.
+       * parser.c (cp_parser_postfix_expression): Adjust.
+       (cp_parser_functional_cast): Adjust.
+       * pt.c (tsubst_copy_and_build): Adjust.
+       * typeck2.c (process_init_constructor_record): Adjust.
+
+       PR c++/48534
+       * cvt.c (ocp_convert): Use build_nop to convert to underlying type
+       of scoped enum.
+
+       PR c++/48523
+       * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
+       than cp_build_indirect_ref.
+
+       PR c++/48457, Core 1238
+       * call.c (reference_binding): Allow rvalue reference to bind to
+       function lvalue.
+       * tree.c (lvalue_kind): Functions are always lvalues.
+
+2011-04-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48500
+       * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
+       arguments even if we don't know the function.
+
+       PR c++/48481
+       * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
+       at the end of the chain.
+       * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
+       (iterative_hash_template_arg): Likewise.
+
+       PR c++/48481
+       * cp-tree.h (OVL_ARG_DEPENDENT): New.
+       * name-lookup.c (add_function): Set it.
+       * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
+
+       PR c++/48481
+       * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
+       Release unused vector.
+
+       PR c++/48451
+       * pt.c (fn_type_unification): Don't clear incomplete pack flag.
+       (type_unification_real): Clear it here instead.
+
+       PR c++/48468
+       * except.c (build_noexcept_spec): Propagate error_mark_node.
+       (finish_noexcept_expr): Likewise.
+
+       PR c++/48452
+       * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
+       in SFINAE context.
+
+       PR c++/48450
+       * call.c (resolve_args): Take complain.
+       (build_new_function_call, build_operator_new_call): Pass it.
+       (build_op_call, build_new_op, build_new_method_call): Pass it.
+
+       PR c++/48450
+       * typeck.c (check_for_casting_away_constness): Take complain.
+       (build_static_cast_1, build_reinterpret_cast_1): Pass it.
+       (build_const_cast_1): Pass it.  Take full complain parm.
+       (build_const_cast, cp_build_c_cast): Adjust.
+
+       * tree.c (build_aggr_init_expr): Always return error_mark_node
+       on abstract violation.
+
+       PR c++/48450
+       * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
+       (bot_manip): Adjust.
+       * cp-tree.h: Adjust.
+       * call.c (convert_like_real, build_cxx_call): Adjust.
+       (perform_direct_initialization_if_possible): Adjust.
+       * cvt.c (ocp_convert): Adjust.
+       * init.c (build_value_init): Adjust.
+       * semantics.c (maybe_add_lambda_conv_op): Adjust.
+       * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
+       * typeck2.c (build_functional_cast): Adjust.
+
+       * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
+       level.
+       (perform_member_init): Not here.
+       * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
+       case to templates.
+       (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
+
+       PR c++/48449
+       * typeck2.c (build_functional_cast): Check complain consistently.
+       Use build_value_init and abstract_virtuals_error_sfinae.
+       (abstract_virtuals_error_sfinae): Split out.
+       * cp-tree.h: Declare it.
+       * init.c (build_new_1): Use it.
+       (build_value_init_noctor): Handle FUNCTION_TYPE.
+
+       * semantics.c (finish_decltype_type): Simplify handling of unknown
+       type.
+
+       * semantics.c (finish_decltype_type): Add complain parm.
+       * cp-tree.h: Adjust.
+       * parser.c (cp_parser_decltype): Adjust.
+       * pt.c (tsubst): Adjust.
+
+       PR c++/48450
+       * cvt.c (ocp_convert): Handle converting scoped enum to bool.
+
+2011-03-31  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48277
+       * semantics.c (finish_call_expr): Remove assert.
+
+       PR c++/48280
+       * method.c (defaultable_fn_check): Templates are not defaultable.
+
+       * parser.c (cp_parser_init_declarator): Avoid redundant
+       cp_finish_decl for member declarations.
+
+2011-03-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48212
+       * semantics.c (non_const_var_error): Just return if DECL_INITIAL
+       is error_mark_node.
+
+2011-03-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48369
+       * semantics.c (potential_constant_expression_1): Handle
+       UNORDERED_EXPR and ORDERED_EXPR.
+
+       PR c++/48281
+       * semantics.c (finish_compound_literal): Do put static/constant
+       arrays in static variables.
+
+       * call.c (convert_like_real) [ck_list]: Build up the
+       initializer_list object directly.
+       * decl.c (build_init_list_var_init): Adjust.
+
+       * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
+       * decl.c (reshape_init_array_1): Likewise.
+
 2011-03-29  Jason Merrill  <jason@redhat.com>
 
+       PR c++/48265
+       * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
+       the variable is constant before looking at its initializer.
+
        PR c++/48319
        * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.