tree.c (tree_code_size): Add TRANSLATION_UNIT_DECL, NAMESPACE_DECL, IMPORTED_DECL...
[gcc.git] / gcc / cp / ChangeLog
index 75899e4a3c0d3e9f35f839a85301bd47fc868758..9ffee53b6c9e03d1a647da1acff78fb61456fa69 100644 (file)
@@ -1,3 +1,531 @@
+2014-07-14  Jan Hubicka  <hubicka@ucw.cz>
+
+       * class.c (build_clone): Do not clear assembler names of
+       templates.
+       * decl.c (cp_tree_node_structure): Add TEMPLATE_DECL.
+       * cp-objcp-common.c (cp_tree_size): Add TEMPLATE_DECL
+       as a special case return sizeof (struct tree_decl_non_common)
+       for other decls.
+       (cp_common_init_ts): Do not initialize NAMESPACE_DECL;
+       initialize TEMPLATE_DECL as MARK_TS_DECL_COMMON.
+       * cp/cp-tree.h (tree_template_decl): New structure.
+       (cp_tree_node_structure_enum): Add TS_CP_TEMPLATE_DECL.
+       (union cp_lang_tree_node): Add template_decl.
+       (DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT): Update.
+
+2014-07-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61445
+       PR c++/56947
+       * pt.c (instantiate_decl): Don't check defer_ok for local class
+       members.
+
+2014-07-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/61294
+       * cp-tree.h (LITERAL_ZERO_P): Define.
+       * parser.c (cp_parser_parenthesized_expression_list): Add
+       want_literal_zero_p argument, if true, for literal zeros
+       insert INTEGER_CSTs with LITERAL_ZERO_P flag set.
+       (cp_parser_postfix_expression): Adjust
+       cp_parser_parenthesized_expression_list caller, handle
+       -Wmemset-transposed-args.
+       (literal_zeros): New variable.
+
+2014-07-13  Jason Merrill  <jason@redhat.com>
+
+       PR c++/58511
+       * semantics.c (is_instantiation_of_constexpr): Return true for
+       defaulted functions, too.
+       (explain_invalid_constexpr_fn): Only use
+       explain_implicit_non_constexpr if !DECL_DECLARED_CONSTEXPR_P.
+       * method.c (explain_implicit_non_constexpr): Pass
+       DECL_INHERITED_CTOR_BASE to explain_implicit_non_constexpr.
+
+       PR c++/58611
+       * decl.c (check_initializer): Don't finish_compound_literal
+       on erroneous constexpr init.
+
+       PR c++/58612
+       * tree.c (bot_replace): Only replace a dummy 'this' parm.
+
+       PR c++/60628
+       * decl.c (create_array_type_for_decl): Only check for auto once.
+
+       PR c++/58636
+       * call.c (build_list_conv): Don't try to build a list of references.
+
+2014-07-13  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+       PR C++/60209 - Declaration of user-defined literal operator cause error
+       * cp/parser.c (cp_parser_operator()): Fold treatment of strings
+       and user-defined string literals.  Use the full string parser.
+       (cp_parser_string_literal()): Add flag to not look for literal operator.
+
+2014-07-11  Jason Merrill  <jason@redhat.com>
+
+       PR c++/22434
+       PR c++/61288
+       * call.c (build_conditional_expr_1): Avoid reading freed memory.
+
+2014-07-11  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/53159
+       * call.c (build_user_type_conversion_1): Copy LOOKUP_NO_NARROWING
+       into convflags.
+       * decl.c (check_initializer): Don't call check_narrowing here,
+       set LOOKUP_NO_NARROWING.
+       * typeck2.c (digest_init_r): Likewise.
+
+2014-07-10  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61661
+       * semantics.c (reduced_constant_expression_p): Handle CONSTRUCTOR.
+
+       PR c++/61659
+       PR c++/61687
+       * decl2.c (mark_all_virtuals): New variable.
+       (maybe_emit_vtables): Check it instead of flag_devirtualize.
+       (cp_write_global_declarations): Set it and give helpful diagnostic
+       if it introduces errors.
+       * class.c (finish_struct_1): Check it.
+       * decl.c (grokdeclarator): Clear virtualp after 'virtual auto' error.
+
+2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/60686
+       * decl.c (grokdeclarator): Adjust error messages about 'explicit'
+       outside class declaration, in friend declaration, and neither on
+       constructor nor conversion operator.
+
+2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       DR 1584
+       PR c++/57466
+       * pt.c (check_cv_quals_for_unify): Implement resolution, disregard
+       cv-qualifiers of function types.
+
+2014-07-09  Andrew Sutton  <andrew.n.sutton@gmail.com>
+           Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/59361
+       * parser.c (cp_parser_tokens_start_cast_expression): Return 0 for
+       CPP_ELLIPSIS too.
+
+2014-07-07  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * class.c (check_for_override): Wrap the 'final' and 'override'
+       keywords in %< and %>.
+
+2014-07-06  Marek Polacek  <polacek@redhat.com>
+
+       PR c/6940
+       * cp-tree.h (DECL_ARRAY_PARAMETER_P): Define.
+       * decl.c (grokdeclarator): Set DECL_ARRAY_PARAMETER_P.
+       * typeck.c (cxx_sizeof_expr): Warn when using sizeof on an array
+       function parameter.
+
+2014-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * pt.c (convert_template_argument): Use inform instead of error in
+       three places.
+
+2014-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+       PR c++/58781
+       PR c++/60249
+       PR c++/59867
+       * parser.c (cp_parser_userdef_string_literal): Take a tree
+       not a cp_token*.
+       (cp_parser_string_literal): Don't hack the token stream.
+
+2014-06-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61659
+       PR lto/53808
+       * decl2.c (maybe_emit_vtables): Mark all vtable entries if
+       devirtualizing.
+       * init.c (build_vtbl_address): Don't mark destructor.
+       * class.c (finish_struct_1): Add all classes to keyed_classes
+       if devirtualizing.
+
+       PR c++/61647
+       * pt.c (type_dependent_expression_p): Check BASELINK_OPTYPE.
+
+       PR c++/61566
+       * mangle.c (decl_mangling_context): Look through a TEMPLATE_DECL.
+
+       * decl.c (build_ptrmemfunc_type): Don't give a PMF RECORD_TYPE
+       TYPE_BINFO or TYPE_LANG_SPECIFIC.
+       * cp-tree.h (TYPE_PTRMEMFUNC_FLAG): Use TYPE_LANG_FLAG_2.
+       (TYPE_PTRMEMFUNC_P): Don't expect TYPE_LANG_SPECIFIC.
+       * typeck.c (build_ptrmemfunc_access_expr): Don't use lookup_member.
+       * pt.c (unify): Also check whether the argument is a PMF.
+
+2014-06-30  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/54891
+       * parser.c (cp_parser_tokens_start_cast_expression): In C++11
+       a '[' can also start a primary-expression.
+       (cp_parser_cast_expression): Parse a cast-expression only tentatively
+       when cp_parser_tokens_start_cast_expression returns -1.
+
+2014-06-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61539
+       * pt.c (unify_one_argument): Type/expression mismatch just causes
+       deduction failure.
+
+       * semantics.c (simplify_aggr_init_expr): Remove remnants of
+       2014-04-11 change.
+
+2014-06-30  Marek Polacek  <polacek@redhat.com>
+
+       * cp-gimplify.c (cp_genericize): Don't instrument returns if the
+       function has no_sanitize_undefined attribute.
+       * decl.c (compute_array_index_type): Don't instrument VLAs if the
+       function has no_sanitize_undefined attribute.
+
+2014-06-30  Igor Zamyatin  <igor.zamyatin@intel.com>
+
+       PR middle-end/57541
+       * cp-array-notation.c (expand_sec_reduce_builtin):
+       Check that bultin argument is correct.
+       * call.c (build_cxx_call): Check for 0 arguments in builtin call.
+
+2014-06-28  Jonathan Wakely  <jwakely@redhat.com>
+
+       DR 1579
+       PR c++/58051
+       * typeck.c (check_return_expr): Lookup as an rvalue even when the
+       types aren't the same.
+
+2014-06-27  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61433
+       * error.c (dump_template_bindings): Don't tsubst in a clone.
+
+2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/61614
+       * semantics.c (finish_compound_literal): Revert r204228.
+
+2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * parser.c (cp_parser_compound_literal_p): New.
+       (cp_parser_postfix_expression, cp_parser_sizeof_operand): Use it.
+
+2014-06-26  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_for_init_statement): Change range-for error
+       to pedwarn.
+
+       N3994 Ranged-based for-loops: The Next Generation
+       * parser.c (cp_lexer_nth_token_is): New.
+       (cp_parser_for_init_statement): Allow "for (id : init)".
+
+2014-06-26  Teresa Johnson  <tejohnson@google.com>
+
+       * class.c (dump_class_hierarchy): Use saved dump files.
+       (dump_vtable): Ditto.
+       (dump_vtt): Ditto.
+
+2014-06-26  Adam Butcher  <adam@jessamine.co.uk>
+
+       PR c++/61537
+       * parser.c (cp_parser_elaborated_type_specifier): Only consider template
+       parameter lists outside of function parameter scope.
+
+2014-06-25  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       DR 178
+       PR c++/49132
+       * typeck2.c (process_init_constructor_record): Do not complain about
+       uninitialized const members, because within aggregate-initialization,
+       members without explicit initializers are value-initialized.
+
+2014-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+       * semantics.c (finish_omp_clauses): Make sure
+       OMP_CLAUSE_LINEAR_STEP has correct type.
+
+2014-06-24  Jan Hubicka  <hubicka@ucw.cz>
+
+       * class.c (check_methods, create_vtable_ptr, determine_key_method,
+       add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by
+       FUNCTION_DECL check.
+       * cp-tree.h (lang_decl_ns): Add ns_using and ns_users.
+       (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): Use lang_decl_ns.
+       (DECL_NAMESPACE_ASSOCIATIONS): Use DECL_INITIAL.
+       (DECL_TEMPLATE_INSTANTIATIONS): Use DECL_SIZE_UNIT.
+
+2014-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/33972
+       * decl.c (grokdeclarator): Do not early check for operator-function-id
+       as non-function.
+
+2014-06-24  Trevor Saunders  <tsaunders@mozilla.com>
+
+       * class.c, semantics.c, tree.c, vtable-class-hierarchy.c:
+       Adjust.
+
+2014-06-24  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_for_loop): For
+       #pragma omp parallel for simd move lastprivate clause from parallel
+       to for rather than simd.
+
+2014-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       DR 577
+       PR c++/33101
+       * decl.c (grokparms): Accept a single parameter of type 'void'.
+
+2014-06-20  Jason Merrill  <jason@redhat.com>
+
+       PR c++/59296
+       * call.c (add_function_candidate): Avoid special 'this' handling
+       if we have a ref-qualifier.
+
+       PR c++/61556
+       * call.c (build_over_call): Call build_this in template path.
+
+2014-06-19  Jason Merrill  <jason@redhat.com>
+
+       PR c++/59296
+       * call.c (add_function_candidate): Also set LOOKUP_NO_TEMP_BIND.
+
+2014-06-18  Jason Merrill  <jason@redhat.com>
+
+       PR c++/59296
+       * call.c (add_function_candidate): Set LOOKUP_NO_RVAL_BIND for
+       ref-qualifier handling.
+
+       PR c++/61507
+       * pt.c (resolve_overloaded_unification): Preserve
+       ARGUMENT_PACK_EXPLICIT_ARGS.
+
+2014-06-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * cp-gimplify.c (cxx_omp_finish_clause): Add a gimple_seq *
+       argument.
+       * cp-tree.h (cxx_omp_finish_clause): Adjust prototype.
+
+2014-06-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/60605
+       * pt.c (check_default_tmpl_args): Check DECL_LOCAL_FUNCTION_P.
+
+2014-06-15  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61488
+       * pt.c (check_valid_ptrmem_cst_expr): Fix for template context.
+
+       PR c++/61500
+       * tree.c (lvalue_kind): Handle MEMBER_REF and DOTSTAR_EXPR.
+
+2014-06-15  Jan Hubicka  <hubicka@ucw.cz>
+
+       * decl.c (grokvardecl): Fix pasto in previous patch.
+
+2014-06-15  Jan Hubicka  <hubicka@ucw.cz>
+
+       * decl.c (duplicate_decls): Use set_decl_tls_model.
+       (grokdeclarator): Likewise.
+       * semantics.c (finish_id_expression): Check TLS only for
+       static variables.
+       (finish_omp_threadprivate): Use decl_default_tls_model.
+       * decl2.c (get_guard): Likewise.
+       * call.c (make_temporary_var_for_ref_to_temp): Likewise.
+
+2014-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/33101
+       * decl.c (grokparms): Improve error message about void parameters.
+       * error.c (type_to_string): Fix aka cut off code.
+
+2014-06-12  Jason Merrill  <jason@redhat.com>
+
+       * call.c (convert_arg_to_ellipsis): Use abi_version_crosses.
+       * cvt.c (type_promotes_to): Likewise.
+       * mangle.c (write_type, write_expression): Likewise.
+       (write_name, write_template_arg): Likewise.
+       (mangle_decl): Make alias based on flag_abi_compat_version.
+       Emit -Wabi warning here.
+       (finish_mangling_internal): Not here.  Drop warn parm.
+       (finish_mangling_get_identifier, finish_mangling): Adjust.
+       (mangle_type_string, mangle_special_for_type): Adjust.
+       (mangle_ctor_vtbl_for_type, mangle_thunk): Adjust.
+       (mangle_guard_variable, mangle_tls_init_fn): Adjust.
+       (mangle_tls_wrapper_fn, mangle_ref_init_variable): Adjust.
+
+       * call.c (build_operator_new_call): Remove -fabi-version=1 support.
+       * class.c (walk_subobject_offsets, include_empty_classes): Likewise.
+       (layout_nonempty_base_or_field, end_of_class): Likewise.
+       (layout_empty_base, build_base_field, layout_class_type): Likewise.
+       (is_empty_class, add_vcall_offset_vtbl_entries_1): Likewise.
+       (layout_virtual_bases): Likewise.
+       * decl.c (compute_array_index_type): Likewise.
+       * mangle.c (write_mangled_name, write_prefix): Likewise.
+       (write_template_prefix, write_integer_cst, write_expression): Likewise.
+       (write_template_arg, write_array_type): Likewise.
+       * method.c (lazily_declare_fn): Likewise.
+       * rtti.c (get_pseudo_ti_index): Likewise.
+       * typeck.c (comp_array_types): Likewise.
+
+2014-06-11  Jan Hubicka  <hubicka@ucw.cz>
+
+       * vtable-class-hierarchy.c: Update handling for section names
+       that are no longer trees.
+       * decl.c (duplicate_decls): Likewise.
+
+2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/19200
+       * parser.c (cp_parser_init_declarator): Actually pass friend_p
+       to cp_parser_declarator.
+
+2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/60265
+       * parser.c (cp_parser_using_declaration): Handle unscoped enums.
+       * name-lookup.c (validate_nonmember_using_decl): Adjust error
+       message.
+
+2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/19200
+       * parser.c (cp_parser_declarator): Add bool parameter.
+       (cp_parser_direct_declarator): Likewise, use it.
+       (cp_parser_member_declaration): Pass friend_p to cp_parser_declarator.
+       (cp_parser_condition, cp_parser_explicit_instantiation,
+       cp_parser_init_declarator, cp_parser_type_id_1,
+       cp_parser_parameter_declaration, cp_parser_exception_declaration,
+       cp_parser_cache_defarg, cp_parser_objc_class_ivars,
+       cp_parser_objc_struct_declaration, cp_parser_omp_for_loop_init):
+       Adjust.
+       * decl.c (grokdeclarator): Fix handling of friend declared in
+       namespace scope (g++.dg/parse/friend10.C).
+
+2014-06-10  Jan Hubicka  <hubicka@ucw.cz>
+
+       * vtable-class-hierarchy.c: Use symtab_get_node (var_decl)
+       ->implicit_section.
+       * optimize.c (cdtor_comdat_group): Fix handling of aliases.
+       (maybe_clone_body): Move symbol across comdat groups.
+       * method.c (use_thunk): Copy implicit section flag.
+
+2014-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/22556
+       * name-lookup.c (pushdecl_maybe_friend_1): Use comptypes.
+
+2014-06-07  Jan Hubicka  <hubicka@ucw.cz>
+
+       * method.c (use_thunk): Use set_decl_section_name.
+       * optimize.c (maybe_clone_body): Use set_decl_section_name.
+       * decl.c (duplicate_decls): Likewise.
+       * vtable-class-hierarchy.c: Likewise.
+
+2014-06-06  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/60184
+       * class.c (check_field_decls): In C++11 mode do not reject
+       static data members and reference-type members in unions.
+
+2014-06-05  Jason Merrill  <jason@redhat.com>
+
+       PR c++/43453
+       * decl.c (check_initializer): Collapse a TREE_LIST here.
+       * typeck2.c (store_init_value): Not here.
+
+2014-06-05  Richard Biener  <rguenther@suse.de>
+           Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/56961
+       * cp-gimplify.c (cp_gimplify_expr, [MODIFY_EXPR]): Rework
+       handling of empty classes.
+
+2014-06-04  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful note
+       for noexcept and thread_local, too.
+
+       PR c++/61343
+       * decl.c (check_initializer): Maybe clear
+       DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
+
+2014-06-05  Richard Biener  <rguenther@suse.de>
+
+       PR c++/61004
+       * typeck.c (cp_build_indirect_ref): Do not emit strict-aliasing
+       warnings for accessing empty classes.
+
+2014-06-05  Marek Polacek  <polacek@redhat.com>
+
+       PR c/49706
+       * parser.c (cp_parser_binary_expression): Warn when logical not is
+       used on the left hand side operand of a comparison.
+
+2014-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/43453
+       * typeck.c (cp_build_modify_expr): Handle array of characters
+       initialized by a string literal.
+       * decl.c (check_initializer): Handle parenthesized string literal
+       as initializer.
+       * typeck2.c (store_init_value): Remove redundant check.
+
+2014-06-04  Jason Merrill  <jason@redhat.com>
+
+       PR c++/51253
+       PR c++/61382
+       * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPR_LIST_INIT_P here.
+       * semantics.c (simplify_aggr_init_expr): Not here, just copy it.
+
+2014-06-04  Igor Zamyatin  <igor.zamyatin@intel.com>
+
+       PR c/58942
+       * cp-array-notation.c (expand_sec_reduce_builtin): Handle the case
+       with a pointer.
+
+2014-06-03  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       DR 1423
+       PR c++/52174
+       * call.c (standard_conversion): Convert nullptr to bool only
+       in case of direct-initialization.
+       (convert_like_real): Provide informative error message.
+
+2014-06-03  Marek Polacek  <polacek@redhat.com>
+
+       PR c/60439
+       * semantics.c (finish_switch_cond): Warn if switch condition has
+       boolean value.
+
+2014-06-03  Jason Merrill  <jason@redhat.com>
+
+       PR c++/60992
+       * pt.c (tsubst_copy) [VAR_DECL]: Try lookup first.  Add a new
+       variable to local_specializations.
+
+       PR c++/60848
+       * call.c (is_std_init_list): Check CLASSTYPE_TEMPLATE_INFO.
+
+2014-06-02  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61046
+       * decl.c (reshape_init_class): Handle un-folded
+       constant-expressions.
+
+       PR c++/61134
+       * pt.c (pack_deducible_p): Handle canonicalization.
+
+2014-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * pt.c (tsubst_function_type): Initialize arg_types.
+
 2014-06-02  Siva Chandra Reddy  <sivachandra@google.com>
 
         PR debug/57519