X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fcp%2FChangeLog;h=7a087c52ddc392cd4decf6e1b672a74791d47f7d;hb=974c337b5398ab7ac26bfb064655e47e56af46ac;hp=58ea1a544a2df89be4835c32743ff1c927ade2b0;hpb=4143d08b7cd1c1fa31f385c4571a081fc8bf087b;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 58ea1a544a2..7a087c52ddc 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,333 @@ +2011-04-11 Jason Merrill + + 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 + + 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 + + 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 + + PR c++/48212 + * semantics.c (non_const_var_error): Just return if DECL_INITIAL + is error_mark_node. + +2011-03-30 Jason Merrill + + 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 + + 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. + + PR c++/48089 + * semantics.c (potential_constant_expression_1): Change error about + use of *this in constructor into sorry. + + PR c++/48296 + * decl.c (cp_finish_decl): Defer validation of constexpr member + functions. + * class.c (finalize_literal_type_property): Validate them here. + * semantics.c (is_valid_constexpr_fn): Don't check completeness. + + * semantics.c (is_valid_constexpr_fn): Specify input location. + +2011-03-28 Jason Merrill + + PR c++/48313 + * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction + from overloaded function. + + Core 1232 + * call.c (build_array_conv): New. + (implicit_conversion): Use it. + + * call.c (reference_binding): Allow direct binding to an array + rvalue. + + Core 898 + * parser.c (cp_parser_compound_statement): Add function_body parm. + Complain about non-body compound-stmt in constexpr fn. + (cp_parser_primary_expression, cp_parser_statement): Adjust. + (cp_parser_implicitly_scoped_statement): Adjust. + (cp_parser_function_body, cp_parser_try_block): Adjust. + (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust. + (cp_parser_objc_try_catch_finally_statement): Adjust. + + Core 898 + * semantics.c (constexpr_fn_retval): New. Allow using-declaration + and using-definition. + (register_constexpr_fundef): Call it. + + * except.c (build_noexcept_spec): Call cxx_constant_value after + converting to bool. + +2011-03-25 Kai Tietz + + * lex.c (interface_strcmp): Handle dos-paths. + (handle_pragma_implementation): Use filename_cmp instead of + strcmp. + (in_main_input_context): Likewise. + +2011-03-25 Jason Merrill + + Core 1135 + * method.c (defaulted_late_check): Check for exception spec mismatch. + (defaultable_fn_check): Allow exception spec and virtual. + * class.c (check_for_override): A virtual dtor is non-trivial. + + PR c++/48289 + * pt.c (build_non_dependent_expr): Keep dereferences outside the + NON_DEPENDENT_EXPR. + +2011-03-25 Kai Tietz + + * decl.c (decls_match): Replace target hook + call of comp_type_attributes by version in tree.c file. + * search.c (check_final_overrider): Likewise. + * typeck.c (structural_comptypes): Likewise. + +2011-03-21 Kai Tietz + + PR target/12171 + * cxx-pretty-print.c (pp_cxx_ptr_operator): + Display allowed attributes for function pointer types. + * error.c (dump_type_prefix): Likewise. + + * tree.c (cxx_attribute_table): Adjust table. + +2011-03-18 Jason Merrill + + PR c++/48162 + * semantics.c (finish_call_expr): Allow TARGET_EXPR for now. + + PR c++/48118 + * call.c (build_over_call): Don't skip ck_rvalue. + +2011-03-17 Jason Merrill + + PR c++/47504 + * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let + the conversion set TREE_OVERFLOW. + + Core 1212 + * semantics.c (finish_decltype_type): Return T&& for xvalue. + * typeck.c (unlowered_expr_type): Preserve cv-quals. + + PR c++/48166 + * decl.c (revert_static_member_fn): Strip function-cv-quals. + +2011-03-16 Jason Merrill + + PR c++/48089 + * semantics.c (potential_constant_expression_1): Don't allow *this + in a constructor. + (register_constexpr_fundef): Use potential_rvalue_constant_expression. + + PR c++/47301 + * decl.c (compute_array_index_type): Don't bother trying to deal + with literal classes in ABI v1. + + PR c++/46336 + * decl.c (duplicate_decls): Return NULL_TREE for clashing + C functions. + + PR c++/47570 + * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't + use the generic binary expression handling. + +2011-03-16 Diego Novillo + + * Make-lang.in (CXX_PARSER_H): New. + (cp/parser.o): Add dependency on CXX_PARSER_H. + Add dependency on tree-pretty-print.h + (cp/cp-lang.o): Add dependency on CXX_PARSER_H. + * cp-lang.c: Include parser.h. + * parser.c: Include parser.h. + (struct cp_token): Add bitfield purged_p. + Update all users. + Move to parser.h. + (CPP_PURGED): Remove. Update all users. + (struct cp_lexer): Change field buffer to be a VEC of cp_token. + Remove field buffer_length. + Update all users. + Move to parser.h. + (struct tree_check): Move to parser.h. + (cp_token_position): Likewise. + (struct cp_token_cache): Likewise. + (CPP_KEYWORD): Likewise. + (CPP_TEMPLATE_ID): Likewise. + (CPP_NESTED_NAME_SPECIFIER): Likewise. + (N_CP_TTYPES): Likewise. + (enum cp_parser_status_kind): Likewise. + (struct cp_parser_context): Likewise. + (struct cp_default_arg_entry_d): Likewise. + (struct cp_unparsed_functions_entry_d): Likewise. + (struct cp_parser): Likewise. + (cp_lexer_dump_tokens): New. + (cp_lexer_debug_tokens): New. + (cp_lexer_finished_p): New. + (cp_lexer_alloc): Factor out of cp_lexer_new_main. + (cp_lexer_new_main): Re-write main lexing loop to push + tokens into the new VEC buffer. + (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens. + Do not abort if the token type is not recognized, just print + its code. + * parser.h: New file. + * config-lang.in (gtfiles): Add cp/parser.h. + +2011-03-16 Jason Merrill + + Core 1148 + * typeck.c (check_return_expr): Fix conditions for setting + LOOKUP_PREFER_RVALUE. + + * call.c (build_over_call): Remove require_complete_type_sfinae call. + + PR c++/48132 + * decl.c (check_array_designated_initializer): Allow integer index. + (reshape_init_array_1): Set index on the elements. + +2011-03-16 Jason Merrill + + PR c++/48113 + * typeck.c (convert_for_initialization): Use + perform_implicit_conversion_flags. + * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set + rvaluedness_matches_p on ck_rvalue. + (convert_like_real) [ck_rvalue]: And restore it here. + + PR c++/48115 + * call.c (convert_arg_to_ellipsis): Handle incomplete type. + +2011-03-16 Jason Merrill + + * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't + committed to this tentative parse. + + PR c++/47999 + * semantics.c (finish_call_expr): Preserve reference semantics + in templates. + + * call.c (convert_default_arg): Use LOOKUP_IMPLICIT. + 2011-03-16 Jakub Jelinek * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if