+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.