]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/cp/ChangeLog
cp-tree.h (cp_expr): Remove copy constructor.
[thirdparty/gcc.git] / gcc / cp / ChangeLog
index fd33f00f8d1d440ce46ba95824f313685a7dfcd5..3ccaebef47fb80b0849d0489a77bbc8b7f92b9a1 100644 (file)
@@ -1,3 +1,727 @@
+2018-05-15  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (cp_expr): Remove copy constructor.
+       * mangle.c (struct releasing_vec): Declare copy constructor.
+
+       * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
+
+       PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
+       * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
+       is a throw-expression.
+
+2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
+       (FOR_EACH_CLONE): Update.
+       * decl.c (grokdeclarator): Use it.
+       * decl2.c (vague_linkage_p): Likewise.
+       * mangle.c (mangle_decl): Likewise.
+       * method.c (lazily_declare_fn): Likewise.
+       * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
+       * repo.c (repo_emit_p): Likewise.
+       * tree.c (decl_linkage): Likewise.
+
+2018-05-14  Jason Merrill  <jason@redhat.com>
+
+       Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
+       * tree.c (build_cp_fntype_variant): New.
+       (build_ref_qualified_type, build_exception_variant)
+       (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
+       (cxx_type_hash_eq, cp_check_qualified_type): Check
+       TYPE_HAS_LATE_RETURN_TYPE.
+       (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
+       (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
+       * class.c (build_clone): Use cxx_copy_lang_qualifiers.
+       (adjust_clone_args): Likewise.
+       * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
+       build_cp_fntype_variant.
+       (grokdeclarator): Pass late_return_type_p to grokfndecl.
+       (check_function_type): Use cxx_copy_lang_qualifiers.
+       (static_fn_type): Use cxx_copy_lang_qualifiers.
+       * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
+       (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
+       (change_return_type): Use cxx_copy_lang_qualifiers.
+       * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
+       * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
+       return type on the declarator like a normal trailing return type.
+       * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
+       (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
+       * typeck.c (merge_types): Use build_cp_fntype_variant.
+
+2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * cp-tree.h (TYPE_REF_P): New.
+       (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
+       * call.c (build_list_conv, build_aggr_conv, standard_conversion,
+       direct_reference_binding, reference_binding, implicit_conversion,
+       add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
+       build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
+       build_over_call, perform_implicit_conversion_flags,
+       extend_ref_init_temps, type_has_extended_temps): Use it.
+       * class.c (one_inheriting_sig, check_field_decls,
+       check_bases_and_members, find_flexarrays, finish_struct,
+       fixed_type_or_null): Likewise.
+       * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
+       non_const_var_error, cxx_eval_constant_expression,
+       potential_constant_expression_1): Likewise.
+       * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
+       cp_genericize_r, cxx_omp_privatize_by_reference,
+       cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
+       cp_fold_maybe_rvalue): Likewise.
+       * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
+       * cvt.c (build_up_reference, convert_to_reference,
+       convert_from_reference, convert_to_void, noexcept_conv_p,
+       fnptr_conv_p): Likewise.
+       * decl.c (poplevel, check_for_uninitialized_const_var,
+       check_initializer, initialize_local_var, cp_finish_decl,
+       get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
+       move_signature_fn_p, grok_op_properties, finish_function): Likewise.
+       * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
+       decl_maybe_constant_var_p): Likewise.
+       * error.c (dump_type_prefix, dump_expr): Likewise.
+       * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
+       is_admissible_throw_operand_or_catch_parameter): Likewise.
+       * expr.c (mark_use): Likewise.
+       * init.c (build_zero_init_1, build_value_init_noctor,
+       perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
+       build_new, build_delete): Likewise.
+       * lambda.c (build_lambda_object): Likewise.
+       * mangle.c (write_expression, write_template_arg): Likewise.
+       * method.c (forward_parm, do_build_copy_constructor,
+       do_build_copy_assign, build_stub_object, constructible_expr,
+       walk_field_subobs): Likewise.
+       * parser.c (cp_parser_omp_for_loop_init,
+       cp_parser_omp_declare_reduction_exprs,
+       cp_parser_omp_declare_reduction): Likewise.
+       * pt.c (convert_nontype_argument_function, convert_nontype_argument,
+       convert_template_argument, tsubst_pack_expansion,
+       tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
+       maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
+       more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
+       value_dependent_expression_p, build_deduction_guide): Likewise.
+       * semantics.c (finish_handler_parms, finish_non_static_data_member,
+       finish_compound_literal, omp_privatize_field,
+       handle_omp_array_sections_1, handle_omp_array_sections,
+       cp_check_omp_declare_reduction, finish_omp_reduction_clause,
+       finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
+       finish_omp_clauses, finish_decltype_type, capture_decltype,
+       finish_builtin_launder): Likewise.
+       * tree.c (lvalue_kind, cp_build_reference_type, move,
+       cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
+       * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
+       cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
+       cp_build_addr_expr_1, maybe_warn_about_useless_cast,
+       build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
+       build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
+       convert_for_initialization,
+       maybe_warn_about_returning_address_of_local, check_return_expr,
+       cp_type_quals, casts_away_constness, non_reference): Likewise.
+       * typeck2.c (cxx_readonly_error, store_init_value,
+       process_init_constructor_record, build_x_arrow, build_functional_cast,
+       add_exception_specifier): Likewise.
+
+2018-05-14  Jason Merrill  <jason@redhat.com>
+
+       * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
+       (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
+
+2018-05-11  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/85696
+       * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
+       * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
+       cxx_omp_predetermined_sharing_1.  Rename old function to ...
+       (cxx_omp_predetermined_sharing_1): ... this.
+       * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
+       instead of cxx_omp_predetermined_sharing.
+
+2018-05-10  Jason Merrill  <jason@redhat.com>
+
+       * decl.c (cp_finish_decl): Don't instantiate auto variable.
+       (check_static_variable_definition): Allow auto.
+       * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
+
+       * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
+       (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
+
+       Core issue 2310 - conversion to base of incomplete type.
+       * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
+
+       CWG 2267 - list-initialization of reference temporary
+       * call.c (reference_binding): List-initializing a reference
+       temporary is copy-list-initialization.
+
+       * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
+
+       * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
+       instantiation in template context.
+
+       * class.c (vbase_has_user_provided_move_assign): Use
+       user_provided_p.
+
+       * lambda.c (lambda_expr_this_capture): Improve logic.
+
+       * decl.c (make_typename_type): s/parameters/arguments/.
+       * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
+       * pt.c (make_pack_expansion): Correct error message.
+
+2018-05-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/85662
+       * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
+       fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
+       fold_convert.
+
+2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR c++/85400
+       * decl2.c (adjust_var_decl_tls_model): New static function.
+       (comdat_linkage): Call it on a variable.
+       (maybe_make_one_only): Likewise.
+
+2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/85713
+       Revert:
+       2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/84588
+       * parser.c (cp_parser_parameter_declaration_list): When the
+       entire parameter-declaration-list is erroneous maybe call
+       abort_fully_implicit_template.
+
+2018-05-08  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85706 - class deduction under decltype
+       * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
+       *walk_subtrees whether or not we walked into the operand.
+       (type_uses_auto): Only look at deduced contexts.
+
+2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/84588
+       * parser.c (cp_parser_parameter_declaration_list): When the
+       entire parameter-declaration-list is erroneous maybe call
+       abort_fully_implicit_template.
+
+2018-05-08  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/85695
+       * semantics.c (finish_if_stmt_cond): See through typedefs.
+
+2018-05-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85646 - lambda visibility.
+       * decl2.c (determine_visibility): Don't mess with template arguments
+       from the containing scope.
+       (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
+       thunk.
+
+2018-05-07  Nathan Sidwell  <nathan@acm.org>
+
+       Remove fno-for-scope
+       * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
+       (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
+       (SET_DECL_SHADOWED_FOR_VAR): Delete.
+       (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
+       (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
+       Don't declare.
+       * name-lookup.h (struct cp_binding_level): Remove
+       dead_vars_from_for field.
+       * cp-lang.c (cp_init_ts): Delete.
+       (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
+       * cp-objcp-common.c (shadowed_var_for_decl): Delete.
+       (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
+       (init_shadowed_var_for_decl): Delete.
+       * decl.c (poplevel): Remove shadowed for var handling.
+       (cxx_init_decl_processing): Remove -ffor-scope deprecation.
+       * name-lookup.c (find_local_binding): Remove shadowed for var
+       handling.
+       (check_local_shadow): Likewise.
+       (check_for_out_of_scope_variable): Delete.
+       * parser.c (cp_parser_primary_expression): Remove shadowed for var
+       handling.
+       * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
+       * semantics.c (begin_for_scope): Always have a scope.
+       (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
+       (begin_range_for_stmt, finish_id_expression): Likewise.
+
+2018-05-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85618 - ICE with initialized VLA.
+       * tree.c (vla_type_p): New.
+       * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
+       rather than array_of_runtime_bound_p.
+
+2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * cvt.c (ocp_convert): Early handle the special case of a
+       null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
+
+2018-05-03  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85600 - virtual delete failure.
+       * init.c (build_delete): Always save_expr when deleting.
+
+2018-05-03  Nathan Sidwell  <nathan@acm.org>
+
+       * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
+       * name-lookup.c (do_pushdecl): Likewise.
+
+2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
+           Jason Merrill  <jason@redhat.com>
+
+       PR c++/68374
+       * name-lookup.c (check_local_shadow): Don't handle static old
+       declarations in the block handling locals shadowing locals.
+
+2018-05-01  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85587 - error with scoped enum in template.
+       * semantics.c (finish_qualified_id_expr): Don't return an
+       unqualified IDENTIFIER_NODE.
+
+2018-04-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85580 - extern "C" and local variables
+       * name-lookup.c (check_extern_c_conflict): Ignore local decls.
+
+       PR c++/84701 - unsigned typeof.
+       * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
+       of long/short/signed/unsigned.
+
+       PR c++/85305 - pack in lambda init-capture.
+       * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
+       check_for_bare_parameter_packs in a subexpression.
+       (cp_parser_lambda_introducer): Use it.
+
+       PR c++/61982 - dead stores to destroyed objects.
+       * call.c (build_trivial_dtor_call): New, assigns a clobber.
+       (build_over_call, build_special_member_call): Use it.
+       * cp-tree.h: Declare it.
+       * init.c (build_delete): Remove trivial path.
+
+       * init.c (build_dtor_call): Use build_special_member_call.
+       (build_delete): Remove redundant uses of save_addr.
+
+       * decl.c (build_clobber_this): Use build_clobber.
+
+2018-04-27  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/85553
+       * init.c (build_zero_init_1): For zero initialization of
+       NULLPTR_TYPE_P type use build_int_cst directly.
+
+2018-04-27  David Malcolm  <dmalcolm@redhat.com>
+
+       PR c++/85515
+       * name-lookup.c (consider_binding_level): Skip compiler-generated
+       variables.
+       * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
+       nested if statements into a series of rejection tests.  Reject
+       lambda-ignored entities as suggestions.
+
+2018-04-27  Jason Merrill  <jason@redhat.com>
+
+       * cvt.c (cp_fold_convert): Use convert_ptrmem.
+       * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
+
+2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/84691
+       * decl.c (grokdeclarator): Clear friendp upon definition in local
+       class definition error.
+
+2018-04-27  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85545 - ICE with noexcept PMF conversion.
+       * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
+       build_ptrmemfunc.
+       * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
+       adjustment.
+       (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
+
+2018-04-27  Nathan Sidwell  <nathan@acm.org>
+
+       * typeck.c (convert_ptrmem): Move local var decls to initialization.
+
+       * cp-tree.h (TEMPLATE_INFO): Fix comments.
+       (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
+       (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
+       (dump, print_other_binding_stacks): Remove declarations.
+       * name-lookup.c (print_other_binding_stack): Make static.
+       * pt.c (build_template_decl): Make static.
+
+2018-04-26  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85545 - ICE with noexcept PMF conversion.
+       * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
+
+2018-04-25  Nathan Sidwell  <nathan@acm.org>
+
+       PR c++/85437
+       PR c++/49171
+       * cp-tree.h (REINTERPRET_CAST_P): New.
+       * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
+       Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
+       for non-trivial PTRMEM_CST cases.
+       * typeck.c (build_nop_reinterpret): New.
+       (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
+       NOP_EXPRs returned by cp_convert.
+
+2018-04-23  Jason Merrill  <jason@redhat.com>
+
+       PR c++/69560 - wrong alignof(double) on x86.
+       CWG 1879 - Inadequate definition of alignment requirement.
+       * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
+       * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
+       (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
+       (cxx_alignof_expr): Pass it.
+       * parser.c (cp_parser_unary_expression): Pass it.
+       * pt.c (tsubst_copy): Copy it.
+       (tsubst_copy_and_build): Pass it.
+       * decl.c (fold_sizeof_expr): Pass it.
+
+2018-04-23  Jakub Jelinek  <jakub@redhat.com>
+           Jason Merrill  <jason@redhat.com>
+
+       PR c++/85470 - wrong error with static data member.
+       * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
+       * typeck2.c (store_init_value): Likewise.
+
+2018-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/85462
+       * cp-tree.h (tinst_level): Remove in_system_header_p member,
+       change refcount member from unsigned char to unsigned short,
+       add refcount_infinity static data member, adjust comments.
+       * pt.c (tinst_level::refcount_infinity): Define.
+       (inc_refcount_use): Remove assert, don't increment if refcount
+       is already refcount_infinity, adjust comment.
+       (dec_refcount_use): Remove assert, don't decrement if refcount
+       is refcount_infinity, adjust comment.
+       (push_tinst_level_loc): Formatting fix.
+
+2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/84611
+       * pt.c (lookup_template_class_1): Check pushtag return value for
+       error_mark_node.
+
+2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR c++/80290
+       * cp-tree.h (tinst_level::free): Fix whitespace.
+
+2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/84630
+       * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
+       for error_mark_node.
+
+2018-04-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/84463
+       * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
+       tricks from here to ...
+       * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
+       if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
+
+2018-04-18  Alexandre Oliva <aoliva@redhat.com>
+
+       PR c++/80290
+       * cp-tree.h (struct tinst_level): Split decl into tldcl and
+       targs.  Add private split_list_p, tree_list_p, and not_list_p
+       inline const predicates; to_list private member function
+       declaration; free public member function declaration; list_p,
+       get_node and maybe_get_node accessors, and refcount data
+       member.  Narrow errors to unsigned short.
+       * error.c (print_instantiation_full_context): Use new
+       accessors.
+       (print_instantiation_partial_context_line): Likewise.  Drop
+       const from tinst_level-typed parameter.
+       * mangle.c (mangle_decl_string): Likewise.
+       * pt.c (freelist): New template class.
+       (tree_list_freelist_head): New var.
+       (tree_list_freelist): New fn, along with specializations.
+       (tinst_level_freelist_head): New var.
+       (pending_template_freelist_head): Likewise.
+       (tinst_level_freelist, pending_template_freelist): New fns.
+       (tinst_level::to_list, tinst_level::free): Define.
+       (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
+       (set_refcount_ptr): New template fn.
+       (add_pending_template): Adjust for refcounting, freelists and
+       new accessors.
+       (neglectable_inst_p): Take a NULL d as a non-DECL.
+       (limit_bad_template_recursion): Use new accessors.
+       (push_tinst_level): New overload to create the list.
+       (push_tinst_level_loc): Make it static, split decl into two
+       args, adjust tests and initialization to cope with split
+       lists, use freelist, adjust for refcounting.
+       (push_tinst_level_loc): New wrapper with the old interface.
+       (pop_tinst_level): Adjust for refcounting.
+       (record_last_problematic_instantiation): Likewise.
+       (reopen_tinst_level): Likewise.  Use new accessors.
+       (instantiate_alias_template): Adjust for split list.
+       (fn_type_unification): Likewise.
+       (get_partial_spec_bindings): Likewise.
+       (instantiate_pending_templates): Use new accessors.  Adjust
+       for refcount.  Release pending_template to freelist.
+       (instantiating_current_function_p): Use new accessors.
+
+2018-04-16  Alexandre Oliva <aoliva@redhat.com>
+
+       PR c++/85039
+       * parser.c (cp_parser_builtin_offset): Reject type definitions.
+       * mangle.c (nested_anon_class_index): Avoid crash returning -1
+       if we've seen errors.
+
+2018-04-12  David Malcolm  <dmalcolm@redhat.com>
+
+       PR c++/85385
+       * name-lookup.c (macro_use_before_def::maybe_make): New function,
+       checking that the use is indeed before the definition.
+       (macro_use_before_def::macro_use_before_def): Make private.
+       (macro_use_before_def::~macro_use_before_def): Make private.  Move
+       check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
+       (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
+       than using new directly.
+
+2018-04-12  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85356 - ICE with pointer to member function.
+       * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
+       flag_noexcept_type.  Build the new spec within the function context.
+       * except.c (build_noexcept_spec): Do get constant value in templates
+       if flag_noexcept_type.
+       * decl.c (check_redeclaration_exception_specification): Don't
+       instantiate noexcept on a dependent declaration.
+
+2018-04-12  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/85258
+       * constexpr.c (reduced_constant_expression_p): Return false for null
+       trees.
+
+2018-04-11  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/85032
+       * constexpr.c (potential_constant_expression_1): Consider conversions
+       from classes to literal types potentially constant.
+
+2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/70808
+       * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
+       the type like TYPE_PTR_OR_PTRMEM_P.
+
+2018-04-10  Jason Merrill  <jason@redhat.com>
+
+       PR debug/65821 - wrong location for main().
+       * call.c (clear_location_r, convert_default_arg): Revert.
+       * tree.c (break_out_target_exprs): Add clear_location parm.
+       (struct bot_data): New.
+       (bot_manip): Clear location if requested.
+       * init.c (get_nsdmi): Pass clear_location.
+
+2018-04-10  David Malcolm  <dmalcolm@redhat.com>
+
+       PR c++/85110
+       * call.c (get_fndecl_argument_location): Make non-static.
+       * cp-tree.h (get_fndecl_argument_location): New decl.
+       * typeck.c (convert_for_assignment): When complaining due to
+       conversions for an argument, show the location of the parameter
+       within the decl.
+
+2018-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/85312 - P0962 cleanup
+       * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
+       diagnostics.
+
+2018-04-10  Jason Merrill  <jason@redhat.com>
+
+       PR debug/65821 - wrong location for main().
+       * call.c (clear_location_r): New.
+       (convert_default_arg): Use it.
+       * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
+
+       PR c++/85285 - ICE with flexible array after substitution.
+       * pt.c (instantiate_class_template_1): Check for flexible array in
+       union.
+
+2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/85227
+       * decl.c (cp_finish_decomp): In a template, if the type is incomplete
+       issue a pedwarn and defer trying to do bindings.
+
+2018-04-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85279 - dump_expr doesn't understand decltype.
+       * error.c (dump_expr): Handle DECLTYPE_TYPE.
+
+       PR c++/85262 - ICE with redundant qualification on constructor.
+       * call.c (build_new_method_call_1): Move make_args_non_dependent
+       after A::A() handling.
+
+       PR c++/85277 - ICE with invalid offsetof.
+       * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
+       Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
+
+       PR c++/85264 - ICE with excess template-parameter-list.
+       * parser.c (cp_parser_check_template_parameters): Add template_id_p
+       parameter.  Don't allow an extra template header if true.
+       (cp_parser_class_head): Pass template_id_p.
+       (cp_parser_elaborated_type_specifier): Likewise.
+       (cp_parser_alias_declaration): Likewise.
+       (cp_parser_check_declarator_template_parameters): Likewise.
+
+2018-04-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/85194
+       * parser.c (cp_parser_simple_declaration): For structured bindings,
+       if *maybe_range_for_decl is NULL after parsing it, set it to
+       error_mark_node.
+
+2018-04-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85256 - ICE capturing pointer to VLA.
+       * lambda.c (add_capture): Distinguish between variable-size and
+       variably-modified types.
+
+2018-04-06  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85214 - ICE with alias, generic lambda, constexpr if.
+       * pt.c (extract_locals_r): Remember local typedefs.
+
+2018-04-06  David Malcolm  <dmalcolm@redhat.com>
+
+       PR c++/84269
+       * name-lookup.c (struct std_name_hint): Move out of
+       get_std_name_hint; add field "min_dialect".
+       (get_std_name_hint): Add min_dialect values to all initializers.
+       Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
+       <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
+       <shared_mutex>, <string_view>, <thread>, and <variant>.
+       Add fstream, ifstream, and ofstream to <fstream>.
+       Add istringstream, ostringstream, and stringstream to <sstream>.
+       Add basic_string to <string>.
+       Add tuple_element and tuple_size to <tuple>.
+       Add declval to <utility>.
+       Fix ordering of <queue> and <tuple>.
+       Return a std_name_hint, rather than a const char *.
+       (get_cxx_dialect_name): New function.
+       (maybe_suggest_missing_std_header): Detect names that aren't yet
+       available in the current dialect, and instead of suggesting a
+       missing #include, warn about the dialect.
+
+2018-04-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/85210
+       * pt.c (tsubst_decomp_names): Return error_mark_node and assert
+       errorcount is set if tsubst doesn't return a VAR_DECL.
+
+2018-04-06  David Malcolm  <dmalcolm@redhat.com>
+
+       PR c++/85021
+       * name-lookup.c (using_directives_contain_std_p): New function.
+       (has_using_namespace_std_directive_p): New function.
+       (suggest_alternatives_for): Simplify if/else logic using early
+       returns.  If no candidates were found, and there's a
+       "using namespace std;" directive, call
+       maybe_suggest_missing_std_header.
+       (maybe_suggest_missing_header): Split later part of the function
+       into..
+       (maybe_suggest_missing_std_header): New.
+
+2018-04-06  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85242 - ICE with class definition in template parm.
+       * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
+       processing_template_parmlist.
+
+       PR c++/85240 - LTO ICE with using of undeduced auto fn.
+       * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
+
+2018-04-05  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/85209
+       * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
+       is not prev, if prev == decl.
+
+       PR c++/85208
+       * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
+       maybe_apply_pragma_weak here...
+       (cp_maybe_mangle_decomp): ... but call it here instead.
+
+2018-04-05  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85136 - ICE with designated init in template.
+       * decl.c (maybe_deduce_size_from_array_init): Handle dependent
+       designated initializer.
+       (check_array_designated_initializer): Update ce->index with the
+       constant value.
+
+       PR c++/83808 - ICE with VLA initialization.
+       * typeck2.c (process_init_constructor_array): Don't require a VLA
+       initializer to have VLA type.
+
+2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/80956
+       * call.c (convert_like_real): Fail gracefully for a broken
+       std::initializer_list, missing a definition.
+
+       * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
+
+2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/84792
+       * decl.c (grokdeclarator): Fix diagnostic about typedef name used
+       as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
+
+2018-04-05  Jason Merrill  <jason@redhat.com>
+
+       PR c++/82152 - ICE with class deduction and inherited ctor.
+       * pt.c (do_class_deduction): Ignore inherited ctors.
+
+       PR c++/84665 - ICE with array of empty class.
+       * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
+
+       PR c++/85228 - ICE with lambda in enumerator in template.
+       * pt.c (bt_instantiate_type_proc): Don't assume
+       CLASSTYPE_TEMPLATE_INFO is non-null.
+
+2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
+
+       Implement P0969
+       * decl.c (find_decomp_class_base): Check accessibility instead
+       of declared access, adjust diagnostic.
+
+2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
+
+       Implement P0961
+       * decl.c (get_tuple_decomp_init): Check the templatedness
+       of a member get.
+
+2018-04-05  Jason Merrill  <jason@redhat.com>
+
+       PR c++/85200 - ICE with constexpr if in generic lambda.
+       * pt.c (extract_locals_r): Don't record the local specs of variables
+       declared within the pattern.
+
+2018-04-05  Alexandre Oliva <aoliva@redhat.com>
+
+       PR c++/84979
+       * pt.c (check_auto_in_tmpl_args): New.
+       (tsubst_qualified_id): Use it to reject template args
+       referencing auto for non-type templates.
+       * parser.c (cp_parser_template_id): Likewise.
+       * cp-tree.h (check_auto_in_tmpl_args): Declare.
+       * typeck2.c (build_functional_cast): Report correct location
+       for invalid use of auto.
+
 2018-04-04  Jason Merrill  <jason@redhat.com>
 
        PR c++/85215 - ICE with copy-init from conversion.