OSDN Git Service

PR c++/48523
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 58ea1a5..7a087c5 100644 (file)
@@ -1,3 +1,333 @@
+2011-04-11  Jason Merrill  <jason@redhat.com>
+
+       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.
+
+       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  <jason@redhat.com>
+
+       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  <ktietz@redhat.com>
+
+       * 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  <jason@redhat.com>
+
+       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  <ktietz@redhat.com>
+
+       * 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  <ktietz@redhat.com>
+
+       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  <jason@redhat.com>
+
+       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  <jason@redhat.com>
+
+       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  <jason@redhat.com>
+
+       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  <dnovillo@google.com>
+
+       * 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  <jason@redhat.com>
+
+       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  <jason@redhat.com>
+
+       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  <jason@redhat.com>
+
+       * 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  <jakub@redhat.com>
 
        * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if