+2021-04-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97536
+ * decl.c (grokvardecl): Given an error when a concept is not defined
+ at namespace scope.
+
+2021-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/100111
+ * constexpr.c (cxx_eval_store_expression): Don't add CONSTRUCTORs
+ for empty classes into *valp when types don't match even when *valp
+ is NULL.
+
+2021-04-16 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99803
+ * decl.c (make_typename_type): Give an error and return when
+ name is is_overloaded_fn.
+ * parser.c (cp_parser_class_name): Don't check is_overloaded_fn
+ before calling make_typename_type.
+
+2021-04-16 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99700
+ * constexpr.c (reduced_constant_expression_p): For array
+ CONSTRUCTORs, use a dedicated loop that additionally verifies
+ the CONSTRUCTOR spans the entire array.
+
+2021-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99850
+ * parser.c (cp_parser_constraint_requires_parens) <case CPP_DEREF>:
+ If lambda_p, return pce_ok instead of pce_maybe_postfix.
+
+2021-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99833
+ * pt.c (extract_locals_r): When handling DECL_EXPR of a structured
+ binding, add to data.internal also all corresponding structured
+ binding decls.
+
+2021-04-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/100079
+ * cp-tree.h (first_field): Declare.
+ * mangle.c (range_expr_nelts): New.
+ (write_expression): Improve class NTTP mangling.
+ * pt.c (get_template_parm_object): Clear TREE_HAS_CONSTRUCTOR.
+ * tree.c (zero_init_expr_p): Improve class NTTP handling.
+ * decl.c: Adjust comment.
+
+2021-04-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/80456
+ * call.c (build_new_method_call_1): Check again for side-effects
+ with a volatile object.
+
+2021-04-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/100101
+ PR c++/99583
+ * pt.c (find_parameter_packs_r) [FUNCTION_TYPE]: Walk into
+ TYPE_RAISES_EXCEPTIONS here.
+ * tree.c (cp_walk_subtrees): Not here.
+
+2021-04-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/100091
+ PR c++/99478
+ * parser.c (cp_parser_default_type_template_argument): Set
+ parser->local_variables_forbidden_p.
+
+2021-04-15 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR c++/98852
+ * typeck.c (merge_type_attributes_from): New function.
+ (cp_common_type): Use it for vector types.
+
+2021-04-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/100078
+ PR c++/93085
+ * pt.c (uses_outer_template_parms): Also look at default
+ template argument.
+
+2021-04-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/93314
+ * semantics.c (finish_id_expression_1): Clear cp_unevaluated_operand
+ for a non-static data member in a constant-expression.
+
+2021-04-14 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/83476
+ PR c++/99885
+ * pt.c (deducible_expression): Look through implicit
+ INDIRECT_REFs as well.
+
+2021-04-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/99478
+ * parser.c (cp_parser_lambda_expression): Reject lambda
+ in template parameter type.
+
+2021-04-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/90674
+ * decl.c (duplicate_decls): Don't propagate
+ DECL_INITIALIZED_IN_CLASS_P to a specialization.
+
+2021-04-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/88742
+ PR c++/49951
+ PR c++/58123
+ * semantics.c (set_cleanup_locs): New.
+ (do_poplevel): Call it.
+ * parser.c (cp_parser_compound_statement): Consume the }
+ before finish_compound_stmt.
+
+2021-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/100032
+ * pt.c (get_underlying_template): Compare TYPE_QUALS.
+
+2021-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/100054
+ PR c++/90479
+ * init.c (get_nsdmi): Do more context adjustment for local classes.
+
+2021-04-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99008
+ * pt.c (do_class_deduction): Reject alias CTAD in C++17 mode
+ rather than issuing a pedwarn.
+ * typeck2.c (build_functional_cast_1): Handle CTAD uniformly
+ for consistent diagnostics.
+
+2021-04-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/91933
+ * class.c (build_base_path): Shortcut simple non-pointer case.
+
+2021-04-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * module.cc (ordinary_loc_of): Test LINEMAPS_MACRO_LOWEST_LOCATION
+ of the linemap.
+ (module_state::write_location): Likewise.
+
+2021-04-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97134
+ * pt.c (do_class_deduction): Look through EXPR_PACK_EXPANSION
+ when checking if the initializer is an equivalent class
+ placeholder template parameter.
+
+2021-04-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99961
+ PR c++/99994
+ * constraint.cc (satisfy_normalized_constraints): Set
+ cp_unevaluated.
+ * parser.c (cp_parser_concept_definition): Likewise.
+ (cp_parser_requires_clause_opt): Likewise.
+
+2021-04-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/93085
+ * pt.c (uses_outer_template_parms): Handle non-type and template
+ template parameters specifically.
+
+2021-04-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/97974
+ * decl.c (fixup_anonymous_aggr): Prune all functions from
+ CLASSTYPE_MEMBER_VEC.
+
+2021-04-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/98800
+ PR c++/97399
+ * parser.c (cp_parser_direct_declarator): Don't
+ inject_this_parameter if static_p.
+ (cp_parser_omp_var_list_no_open): Parse 'this' even if
+ current_class_ptr isn't set for a better diagnostic.
+
+2021-04-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/99180
+ PR c++/93295
+ PR c++/93867
+ PR c++/99118
+ PR c++/96873
+ * pt.c (alias_ctad_tweaks): Handle failure better.
+
+2021-04-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/100006
+ * pt.c (find_parameter_packs_r) [TAG_DEFN]: Look into bases.
+
+2021-04-09 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (LAMBDA_EXPR_REGENERATED_FROM)
+ (LAMBDA_EXPR_REGENERATING_TARGS): Replace these with ...
+ (LAMBDA_EXPR_REGEN_INFO): ... this.
+ (tree_lambda_expr::regenerated_from)
+ (tree_lambda_expr::regenerating_targs): Replace these with ...
+ (tree_lambda_expr::regen_info): ... this.
+ * constraint.cc (satisfy_declaration_constraints): Adjust
+ accordingly.
+ * lambda.c (build_lambda_expr): Likewise.
+ * pt.c (regenerated_lambda_fn_p): Likewise.
+ (most_general_lambda): Likewise.
+ (tsubst_lambda_expr): Likewise.
+
+2021-04-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99806
+ * parser.c (cp_parser_member_declaration): Call
+ cp_parser_save_default_args even for function templates. Use
+ STRIP_TEMPLATE on the declaration we're passing.
+
+2021-04-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99874
+ * constraint.cc (get_normalized_constraints_from_decl): Handle
+ regenerated lambdas.
+ (satisfy_declaration_constraints): Likewise. Check for
+ dependent args later.
+ * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): Replace with ...
+ (LAMBDA_EXPR_REGENERATED_FROM): ... this.
+ (LAMBDA_EXPR_REGENERATING_TARGS): New.
+ (tree_lambda_expr::regenerated_from): New data member.
+ (tree_lambda_expr::regenerating_targs): New data member.
+ (add_to_template_args): Declare.
+ (regenerated_lambda_fn_p): Likewise.
+ (most_general_lambda): Likewise.
+ * lambda.c (build_lambda_expr): Set LAMBDA_EXPR_REGENERATED_FROM
+ and LAMBDA_EXPR_REGENERATING_TARGS.
+ * pt.c (add_to_template_args): No longer static.
+ (tsubst_function_decl): Unconditionally propagate constraints on
+ the substituted function decl.
+ (instantiated_lambda_fn_p): Rename to ...
+ (regenerated_lambda_fn_p): ... this. Check
+ LAMBDA_EXPR_REGENERATED_FROM instead of
+ LAMBDA_EXPR_INSTANTIATED.
+ (most_general_lambda): Define.
+ (enclosing_instantiation_of): Adjust after renaming
+ instantiated_lambda_fn_p.
+ (tsubst_lambda_expr): Don't set LAMBDA_EXPR_INSTANTIATED. Set
+ LAMBDA_EXPR_REGENERATED_FROM and LAMBDA_EXPR_REGENERATING_TARGS.
+ Don't substitute or set constraints on the regenerated lambda.
+
+2021-04-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97679
+ * pt.c (build_deduction_guide): Document OUTER_ARGS. Substitute
+ them into the propagated constraints.
+
+2021-04-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/91849
+ * call.c (convert_like_internal): Improve reference diagnostic.
+
+2021-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99859
+ * constexpr.c (addr_of_non_const_var): New function.
+ (cxx_bind_parameters_in_call): Set *non_constant_args to true
+ even if cp_walk_tree on arg with addr_of_non_const_var callback
+ returns true.
+
+2021-04-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/94529
+ * pt.c (determine_specialization): Improve diagnostic.
+
+2021-04-08 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99844
+ * decl.c (build_explicit_specifier): Call
+ check_for_bare_parameter_packs.
+ * except.c (build_noexcept_spec): Likewise.
+
+2021-04-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/41723
+ * parser.c (cp_parser_class_name): Check dependent_scope_p.
+
+2021-04-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/52625
+ * pt.c (maybe_process_partial_specialization): Check
+ DECL_SELF_REFERENCE_P.
+
+2021-04-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/92918
+ * name-lookup.c (push_class_level_binding_1): Do overload a new
+ function with a previous using-declaration.
+
+2021-04-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/96673
+ * init.c (get_nsdmi): Don't defer access checking.
+
+2021-04-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/99901
+ * decl.c (cp_finish_decl): mark_needed an implicitly inline
+ static data member with an out-of-class redeclaration.
+
+2021-04-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/91241
+ * mangle.c (write_compact_number): Add sanity check.
+ (write_local_name): Use list_length for parm number.
+
+2021-04-06 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99899
+ * pt.c (do_auto_deduction): Don't exit early when deducing the
+ array type of a structured binding. Also handle adc_decomp_type
+ during constraint checking.
+
+2021-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/96311
+ * typeck.c (check_return_expr): Call mark_exp_read in dependent
+ case.
+
+2021-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/98440
+ * typeck.c (build_reinterpret_cast_1): Don't perform
+ temporary materialization.
+
+2021-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/95317
+ * pt.c (lookup_template_class_1): Do tsubst_enum when
+ tsubsting a generic lambda.
+
+2021-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/95870
+ * pt.c (enclosing_instantiation_of): Compare DECL_SOURCE_LOCATION if
+ there is no enclosing non-lambda function.
+
+2021-04-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99380
+ * module.cc (name_pending_imports): Drop 'atend' parm. Don't
+ query export when not needed.
+ (preprocess_module, preprocessed_module): Adjust.
+
+2021-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/99066
+ * pt.c (mark_decl_instantiated): Set DECL_EXTERNAL.
+
+2021-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/99201
+ * pt.c (class el_data): Add visited field.
+ (extract_local_specs): Pass it to cp_walk_tree.
+ (extract_locals_r): Walk into the body of a lambda.
+
+2021-04-05 Jason Merrill <jason@redhat.com>
+
+ * ptree.c (cxx_print_decl): Check DECL_MODULE_IMPORT_P on
+ template result.
+
+2021-04-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/99643
+ * typeck2.c (massage_init_elt): Don't strip TARGET_EXPR.
+
+2021-04-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91416
+ * parser.c: Create a GC root for attributes in a decl specifier.
+ (cp_parser_type_specifier): Push/pop ->attributes onto/from it.
+
+2021-04-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/91217
+ * pt.c (tsubst_lambda_expr): Skip the body block from
+ DECL_SAVED_TREE.
+
+2021-04-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/90664
+ * cvt.c (can_convert_qual): Check fnptr_conv_p.
+
+2021-04-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/97900
+ * pt.c (regenerate_decl_from_template): tsubst_decl
+ the parms.
+
+2021-04-02 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99869
+ * parser.c (do_range_for_auto_deduction): Pass adc_variable_type
+ to do_auto_deduction.
+
+2021-04-02 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99586
+ * semantics.c (finish_compound_literal): Check
+ template_placeholder_p instead of type_uses_auto.
+
+2021-04-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/97938
+ * cp-tree.h (PACK_EXPANSION_AUTO_P): New.
+ * lambda.c (add_capture): Set it.
+ * pt.c (tsubst_pack_expansion): Handle it.
+
+2021-04-02 Nathan Sidwell <nathan@acm.org>
+
+ * cp-tree.h (lang_decl_base): Correct module flag comment.
+ * module.cc (trees_in::assert_definition): Break out
+ not_tmpl var.
+ (trees_out::lang_decl_bools): Do not write purview for header units.
+
+2021-04-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99831
+ * method.c (defaulted_late_check): ++ and -- function_depth around
+ the call to synthesize_method.
+ * pt.c: Remove the saved_trees global.
+
+2021-04-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/99583
+ PR c++/99584
+ * tree.c (cp_walk_subtrees) [FUNCTION_TYPE]: Walk into
+ TYPE_RAISES_EXCEPTIONS.
+
+2021-04-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * mapper-client.cc (INCLUDE_MAP): New; require map to be
+ included from system.h.
+ * mapper-resolver.cc (INCLUDE_MAP): Likewise.
+
+2021-04-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/98481
+ * mangle.c (write_expression): Adjust.
+ * class.c (find_abi_tags_r): Disable PR98481 fix for ABI v14.
+ (mark_abi_tags_r): Likewise.
+
+2021-04-01 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99283
+ * module.cc (trees_out::decl_node): Adjust importedness reference
+ assert.
+ (module_state::intercluster_seed): New. Seed both imports and
+ inter-cluster references. Broken out of ...
+ (module_state::write_cluster): ... here. Call it.
+
+2021-03-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/99445
+ * tree.c (strip_typedefs): Handle TYPE_PACK_EXPANSION.
+
+2021-03-31 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/88115
+ * mangle.c (write_expression): Adjust the mangling of
+ __alignof__.
+
+2021-03-31 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99815
+ * pt.c (placeholder_type_constraint_dependent_p): Expand
+ argument packs to separate the first non-pack argument
+ from the rest.
+
+2021-03-30 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99283
+ * module.cc (dumper::operator): Make less brittle.
+ (trees_out::core_bools): VAR_DECLs always have a context.
+ (trees_out::key_mergeable): Use same_type_p for asserting.
+ (trees_in::read_var_def): Propagate
+ DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
+
+2021-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99790
+ * cp-gimplify.c (cp_gimplify_expr): Handle PTRMEM_CST.
+
+2021-03-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98352
+ * method.c (implicitly_declare_fn): Pass &raises to
+ synthesized_method_walk.
+
+2021-03-26 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99283
+ * cp-tree.h (DECL_MODULE_CHECK): Ban TEMPLATE_DECL.
+ (SET_TYPE_TEMPLATE_INFO): Restore Alias template setting.
+ * decl.c (duplicate_decls): Remove template_decl module flag
+ propagation.
+ * module.cc (merge_kind_name): Add alias tmpl spec as a thing.
+ (dumper::impl::nested_name): Adjust for template-decl module flag
+ change.
+ (trees_in::assert_definition): Likewise.
+ (trees_in::install_entity): Likewise.
+ (trees_out::decl_value): Likewise. Remove alias template
+ separation of template and type_decl.
+ (trees_in::decl_value): Likewise.
+ (trees_out::key_mergeable): Likewise,
+ (trees_in::key_mergeable): Likewise.
+ (trees_out::decl_node): Adjust for template-decl module flag
+ change.
+ (depset::hash::make_dependency): Likewise.
+ (get_originating_module, module_may_redeclare): Likewise.
+ (set_instantiating_module, set_defining_module): Likewise.
+ * name-lookup.c (name_lookup::search_adl): Likewise.
+ (do_pushdecl): Likewise.
+ * pt.c (build_template_decl): Likewise.
+ (lookup_template_class_1): Remove special alias_template handling
+ of DECL_TI_TEMPLATE.
+ (tsubst_template_decl): Likewise.
+
+2021-03-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99705
+ * tree.c (bot_manip): Remap artificial automatic temporaries mentioned
+ in DECL_EXPR or in BIND_EXPR_VARS.
+
+2021-03-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99672
+ * parser.c (cp_parser_postfix_expression): For calls, create
+ combined_loc and temporarily set input_location to it before
+ calling finish_call_expr.
+
+2021-03-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94751
+ * call.c (build_over_call): Maybe call mark_used in case
+ deduce_inheriting_ctor fails and return error_mark_node.
+ * cp-tree.h (deduce_inheriting_ctor): Adjust declaration.
+ * method.c (deduce_inheriting_ctor): Return bool if the deduction
+ fails.
+ (implicitly_declare_fn): If raises is error_mark_node, call
+ synthesized_method_walk with diag being true.
+
+2021-03-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99745
+ * decl2.c (grokbitfield): Diagnose bitfields containing bare parameter
+ packs and don't set DECL_BIT_FIELD_REPRESENTATIVE in that case.
+
+2021-03-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99331
+ * call.c (build_converted_constant_expr_internal): Don't emit
+ -Wconversion warnings.
+
+2021-03-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99565
+ * call.c (build_conditional_expr_1): Pass OEP_ADDRESS_OF_SAME_FIELD
+ to operand_equal_p.
+ * cvt.c (convert_to_void): Preserve location_t on COND_EXPR or
+ or COMPOUND_EXPR.
+
+2021-03-23 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99283
+ * name-lookup.c (check_module_override): Set global or partition
+ DUP on the binding vector.
+
+2021-03-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99318
+ * decl2.c (cp_warn_deprecated_use_scopes): Only call
+ cp_warn_deprecated_use when decl is a namespace, class, or enum.
+
+2021-03-23 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99239
+ * decl.c (duplicate_decls): Remove assert about maybe-imported
+ artificial decls.
+
+2021-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99650
+ * decl.c (cp_finish_decomp): Diagnose void initializers when
+ using tuple_element and get.
+
+2021-03-22 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99480
+ * module.cc (depset::hash::make_dependency): Propagate flags for
+ partial specialization.
+ (module_may_redeclare): Handle partial specialization.
+
+2021-03-22 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99425
+ * cp-tree.h (map_context_from, map_context_to): Delete.
+ (add_mergeable_specialization): Add is_alias parm.
+ * pt.c (add_mergeable_specialization): Add is_alias parm, add them.
+ * module.cc (map_context_from, map_context_to): Delete.
+ (trees_in::decl_value): Add specializations later, adjust call.
+ Drop useless alias lookup. Set duplicate fn parm context.
+ (check_mergeable_decl): Drop context mapping.
+ (trees_in::is_matching_decl): Likewise.
+ (trees_in::read_function_def): Drop parameter context adjustment
+ here.
+
+2021-03-22 Martin Liska <mliska@suse.cz>
+
+ PR c++/99687
+ * module.cc (fini_modules): Call vec_free instead of delete.
+
+2021-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/99230
+ * cp-gimplify.c (cp_genericize_r) <case STATEMENT_LIST>: Remove
+ special code, instead call c_genericize_control_stmt.
+
+2021-03-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99456
+ * constexpr.c (cxx_eval_constant_expression): For CONVERT_EXPR from
+ INDIRECT_TYPE_P to ARITHMETIC_TYPE_P, when !ctx->manifestly_const_eval
+ don't diagnose it, set *non_constant_p nor return t.
+
+2021-03-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99500
+ * parser.c (cp_parser_requirement_parameter_list): Handle
+ error_mark_node.
+
+2021-03-18 Marek Polacek <polacek@redhat.com>
+
+ * pt.c (tsubst_copy_and_build) <case FLOAT_EXPR>: Remove.
+
+2021-03-18 Marek Polacek <polacek@redhat.com>
+
+ * pt.c (tsubst_copy_and_build): Add assert.
+
+2021-03-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR objc++/49070
+ * parser.c (cp_debug_parser): Add Objective-C++ message
+ state flag.
+ (cp_parser_nested_name_specifier_opt): Allow colon to
+ terminate an assignment-expression when parsing Objective-
+ C++ messages.
+ (cp_parser_objc_message_expression): Set and clear message
+ parsing state on entry and exit.
+ * parser.h (struct cp_parser): Add a context flag for
+ Objective-C++ message state.
+
+2021-03-18 Martin Liska <mliska@suse.cz>
+
+ PR c++/99617
+ * coroutines.cc (struct var_nest_node): Init then_cl and else_cl
+ to NULL.
+
+2021-03-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97973
+ * call.c (conv_unsafe_in_template_p): New.
+ (convert_like): Use it.
+
+2021-03-17 Anthony Sharp <anthonysharp15@gmail.com>
+ Jason Merrill <jason@redhat.com>
+
+ * semantics.c (get_class_access_diagnostic_decl): New
+ function that examines special cases when a parent
+ class causes a private access failure.
+ (enforce_access): Slightly modified to call function
+ above.
+
+2021-03-16 Jason Merrill <jason@redhat.com>
+
+ * tree.c (cp_tree_equal): Use real_identical.
+
+2021-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99613
+ * decl.c (expand_static_init): For thread guards, call __cxa_atexit
+ before calling __cxa_guard_release rather than after it. Formatting
+ fixes.
+
+2021-03-16 Martin Liska <mliska@suse.cz>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/99108
+ * call.c (get_function_version_dispatcher): Handle
+ DECL_LOCAL_DECL_P.
+ * decl.c (maybe_version_functions): Likewise.
+ (maybe_mark_function_versioned): New.
+ * name-lookup.c (push_local_extern_decl_alias): No longer static.
+ * name-lookup.h (push_local_extern_decl_alias): Adjust.
+
+2021-03-16 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99496
+ * module.cc (trees_out::decl_value): Adjust typedef streaming,
+ indicate whether it is a dependent alias.
+ (trees_in::decl_value): Likewise. Set as dependent alias, if it
+ is one.
+
+2021-03-15 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/99047
+ * coroutines.cc (expand_one_await_expression): If the
+ await_ready() expression is not a boolean then convert it
+ as required.
+
+2021-03-15 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/98704
+ * coroutines.cc (build_actor_fn): Make destroy index 1
+ correspond to the abnormal unhandled_exception() exit.
+ Substitute the proxy for the resume index.
+ (coro_rewrite_function_body): Arrange to reset the resume
+ index and make done = true for a rethrown exception from
+ unhandled_exception ().
+ (morph_fn_to_coro): Adjust calls to build_actor_fn and
+ coro_rewrite_function_body.
+
+2021-03-15 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/98480
+ * coroutines.cc (replace_continue): Rewrite continue into
+ 'goto label'.
+ (await_statement_walker): Handle await expressions in the
+ initializer, condition and iteration expressions of for
+ loops.
+
+2021-03-15 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/96749
+ * coroutines.cc (flatten_await_stmt): Allow for the case
+ where a target expression variable only has uses in the
+ second part of a compound expression.
+ (maybe_promote_temps): Avoid emiting empty statements.
+
+2021-03-15 Tobias Burnus <tobias@codesourcery.com>
+
+ PR c++/99509
+ * decl.c (cp_finish_decl): For 'omp declare target implicit' vars,
+ ensure that the varpool node is marked as offloadable.
+
+2021-03-12 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99238
+ * module.cc (depset::hash::add_binding_entity): Assert not
+ visited.
+ (depset::add::add_specializations): Likewise.
+ * name-lookup.c (name_lookup::dedup): New.
+ (name_lookup::~name_lookup): Assert not deduping.
+ (name_lookup::restore_state): Likewise.
+ (name_lookup::add_overload): Replace outlined code with dedup
+ call.
+ (name_lookup::add_value): Likewise.
+ (name_lookup::search_namespace_only): Likewise.
+ (name_lookup::adl_namespace_fns): Likewise.
+ (name_lookup::adl_class_fns): Likewise.
+ (name_lookup::search_adl): Likewise. Add clearing dedup call.
+ (name_lookup::search_qualified): Likewise.
+ (name_lookup::search_unqualified): Likewise.
+
+2021-03-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99507
+ * call.c (build_over_call): For immediate evaluation of functions
+ that return references, undo convert_from_reference effects before
+ calling cxx_constant_value and call convert_from_reference
+ afterwards.
+
+2021-03-11 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99248
+ * name-lookup.c (lookup_elaborated_type_1): Access slot not bind
+ when there's a binding vector.
+ * ptree.c (cxx_print_xnode): Lazy flags are no longer a thing.
+
+2021-03-11 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99528
+ * module.cc (enum merge_kind): Delete MK_type_tmpl_spec,
+ MK_decl_tmpl_spec.
+ (trees_in::decl_value): Adjust add_mergeable_specialization call.
+ (trees_out::get_merge_kind): Adjust detecting a partial template
+ instantiation.
+ (trees_out::key_mergeable): Adjust handling same.
+ (trees_in::key_mergeabvle): Likewise.
+
+2021-03-10 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99423
+ * module.cc (post_load_processing): Assert not gcable.
+ (laxy_load_pendings): Extend no-gc region around
+ post_load_processing.
+
+2021-03-10 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99508
+ * decl.c (make_rtl_for_nonlocal_decl): Propagate local-extern's
+ assembler name to the ns alias.
+
+2021-03-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99459
+ * coroutines.cc (build_co_await): Look through NOP_EXPRs in
+ build_special_member_call return value to find the CALL_EXPR.
+ Simplify.
+
+2021-03-09 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99472
+ * parser.c (cp_parser_diagnose_invalid_type_name): Clarify
+ that C++20 does not yet imply modules.
+
+2021-03-08 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99436
+ * name-lookup.c (get_cxx_dialect_name): Add cxx23.
+
+2021-03-08 Nathan Sidwell <nathan@acm.org>
+
+ * lex.c (module_token_filter::resume): Ignore module-decls inside
+ header-unit.
+ * parser.c (cp_parser_module_declaration): Reject in header-unit.
+
+2021-03-08 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99285
+ * cp-tree.h (match_mergeable_specialization)
+ (add_mergeable_specialization): Adjust parms.
+ * module.cc (trees_in::decl_value): Adjust
+ add_mergeable_specialization calls.
+ (trees_out::key_mergeable): Adjust match_mergeable_specialization
+ calls.
+ (specialization_add): Likewise.
+ * pt.c (match_mergeable_specialization): Do not insert.
+ (add_mergeable_specialization): Add to hash table here.
+
+2021-03-06 Patrick Palka <ppalka@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99287
+ * constexpr.c (cxx_eval_increment_expression): Pass lval when
+ evaluating the MODIFY_EXPR, and update 'mod' with the result of
+ this evaluation. Check *non_constant_p afterwards. For prefix
+ ops, just return 'mod'.
+
+2021-03-06 Patrick Palka <ppalka@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/96330
+ * pt.c (tsubst_copy) <case TEMPLATE_ID_EXPR>: Rename local
+ variable 'fn' to 'tmpl'. Handle a variable template-id by
+ calling lookup_template_variable.
+
+2021-03-06 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99365
+ * pt.c (unify) <case TEMPLATE_TYPE_PARM>: Pass targs as
+ outer_targs to do_auto_deduction.
+ (placeholder_type_constraint_dependent_p): Define.
+ (do_auto_deduction): When processing_template_decl != 0
+ and context is adc_unify and we have constraints, pretend the
+ constraints are satisfied instead of punting. Otherwise don't
+ punt unless placeholder_type_constraint_dependent_p holds.
+ Add some clarifying sanity checks. Add a hack to add missing
+ outermost template levels to outer_args before checking
+ satisfaction. Don't substitute outer_targs into type if it's
+ already been done.
+
+2021-03-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99374
+ * call.c (standard_conversion): When converting pointers to
+ member, don't return NULL when the bases are equivalent but
+ incomplete.
+
+2021-03-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99120
+ * name-lookup.c (check_local_shadow): Check if the type of decl
+ is non-null before checking TYPE_PTR*.
+
+2021-03-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99245
+ * module.cc (module_state::write_cluster): Relax binding assert.
+
+2021-03-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99377
+ * pt.c (instantiate_decl): Call set_instantiating_module.
+
+2021-03-05 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/98118
+ * coroutines.cc (build_co_await): Use type_build_ctor_call()
+ to determine cases when a CTOR needs to be built.
+ (flatten_await_stmt): Likewise.
+ (morph_fn_to_coro): Likewise.
+
+2021-03-05 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95616
+ * coroutines.cc (coro_diagnose_throwing_fn): New helper.
+ (coro_diagnose_throwing_final_aw_expr): New helper.
+ (build_co_await): Diagnose throwing final await expression
+ components.
+ (build_init_or_final_await): Diagnose a throwing promise
+ final_suspend() call.
+
+2021-03-05 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95615
+ * coroutines.cc (struct param_info): Track parameter copies that need
+ a DTOR.
+ (coro_get_frame_dtor): New helper function factored from build_actor().
+ (build_actor_fn): Use coro_get_frame_dtor().
+ (morph_fn_to_coro): Track parameters that need DTORs on exception,
+ likewise the frame promise and the return object. On exception, run the
+ DTORs for these, destroy the frame and then rethrow the exception.
+
+2021-03-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99389
+ * pt.c (instantiate_class_template_1): Set instantiating module
+ here.
+
+2021-03-05 Tobias Burnus <tobias@codesourcery.com>
+
+ PR c/99137
+ * parser.c (cp_parser_oacc_clause_async): Reject comma expressions.
+
+2021-03-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88146
+ PR c++/99362
+ * cvt.c (convert_to_void): Revert 2019-10-17 changes. Clarify
+ comment.
+
+2021-03-04 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99170
+ * module.cc (class uintset): Delete.
+ (typedef attached_map_t): A hash map.
+ (attached_table): Use attached_map_t. Adjust uses ...
+ (trees_out::decl_value, trees_in::decl_value): ... here ...
+ (trees_out::key_mergeable): ... here ...
+ (trees_in::key_mergeable): ... here ...
+ (maybe_attach_decl): ... here ...
+ (direct_import): ... and here.
+
+2021-03-04 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99170
+ * cp-tree.h
+ * lex.c (cxx_dup_lang_specific_decl): Adjust for module_attached_p
+ rename.
+ * module.cc (class pending_key): New.
+ (default_hash_traits<pending_key>): New specialization.
+ (pending_map_t): New typedef.
+ (pending_table): Replace old table.
+ (trees_out::lang_decl_bools): Adjust.
+ (trees_in::lang_decl_bools): Adjust.
+ (trees_in::install_entity): Drop pending member and specialization
+ handling.
+ (find_pending_key): New.
+ (depset::hash::fiund_dependencies): Use it.
+ (pendset_lazy_load): Delete.
+ (module_state::write_cluster): Don't count pendings here. Bye
+ Duff's device-like thing.
+ (module_state::write_pendings): Reimplement.
+ (module_state::read_pendings): Reimplement.
+ (lazy_specializations_p): Delete.
+ (module_state::write): Adjust write_pendings call.
+ (lazy_load_pendings): New.
+ (lazy_load_specializations): Delete.
+ (lazy_load_members): Delete.
+ (init_modules): Adjust.
+ * name-lookup.c (maybe_lazily_declare): Call lazy_load_pendings
+ not lazy_load_members.
+ (note_pending_specializations): Delete.
+ (load_pending_specializations): Delete.
+ * name-lookup.h (BINDING_VECTR_PENDING_SPECIALIZATIONS_P): Delete.
+ (BINDING_VECTOR_PENDING_MEMBERS_P): Delete.
+ (BINDING_VECTR_PENDING_MEMBERS_P): Delete.
+ (note_pending_specializations): Delete.
+ (load_pending_specializations): Delete.
+ * pt.c (lookup_template_class_1): Call lazy_load_pendings not
+ lazy_load_specializations.
+ (instantiate_template_class_1): Likewise.
+ (instantiate_decl): Call lazy_load_pendings.
+ * typeck.c (complete_type): Likewise.
+
+2021-03-03 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99170
+ * module.cc (post_load_decls): New.
+ (lazy_snum, recursive_lazy): Move earlier.
+ (module_state::read_cluster): Push cloning onto post_load_decls.
+ (post_load_processing): New. Do the cloning here.
+ (module_state::read_inits): Call post_load_processing.
+ (module_state::read_language): Likewise.
+ (lazy_load_binding, lazy_load_specializations): Likewise
+ (lazy_load_members): Likewise
+
+2021-03-03 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99170
+ * module.cc (trees_out::decl_value): Stream specialization keys
+ after decl.
+ (trees_in::decl_value): Stream them back and insert after
+ completing the decl.
+ (trees_out::key_mergeable): Drop some streaming here ...
+ (trees_in::key_mergeable): ... and here. Don't insert into
+ specialization tables.
+
+2021-03-03 Patrick Palka <ppalka@redhat.com>
+
+ * constraint.cc (struct sat_info): Document the different
+ meanings of noisy() and diagnose_unsatisfaction_p() during
+ satisfaction and requires-expression evaluation.
+ (tsubst_valid_expression_requirement): Take a sat_info instead
+ of a subst_info. Perform the substitution quietly first. Fold
+ in error-replaying code from diagnose_valid_expression.
+ (tsubst_simple_requirement): Take a sat_info instead of a
+ subst_info.
+ (tsubst_type_requirement_1): New. Fold in error-replaying code
+ from diagnose_valid_type.
+ (tsubst_type_requirement): Use the above. Take a sat_info
+ instead of a subst_info.
+ (tsubst_compound_requirement): Likewise. Fold in
+ error-replaying code from diagnose_compound_requirement.
+ (tsubst_nested_requirement): Take a sat_info instead of a
+ subst_info. Fold in error-replaying code from
+ diagnose_nested_requirement.
+ (tsubst_requirement): Take a sat_info instead of a subst_info.
+ (tsubst_requires_expr): Split into two versions, one that takes
+ a sat_info argument and another that takes a complain and
+ in_decl argument. Remove outdated documentation. Document the
+ effects of the sat_info argument. Don't short-circuit
+ processing of requirements when diagnosing unsatisfaction,
+ mirroring diagnose_requires_expr.
+ (satisfy_nondeclaration_constraint) <case REQUIRES_EXPR>: Remove
+ assert, and se the three-parameter version of tsubst_requires_expr.
+ (diagnose_trait_expr): Make static. Take a template argument
+ vector instead of a parameter mapping.
+ (diagnose_valid_expression): Remove.
+ (diagnose_valid_type): Remove.
+ (diagnose_simple_requirement): Remove.
+ (diagnose_compound_requirement): Remove.
+ (diagnose_type_requirement): Remove.
+ (diagnose_nested_requirement): Remove.
+ (diagnose_requirement): Remove.
+ (diagnose_requires_expr): Remove.
+ (diagnose_atomic_constraint): Take a sat_info instead of a
+ subst_info. Adjust call to diagnose_trait_expr. Call
+ tsubst_requires_expr instead of diagnose_requires_expr.
+ (diagnose_constraints): Remove special casing of REQUIRES_EXPR
+ and just always call constraint_satisfaction_value.
+
+2021-03-03 Patrick Palka <ppalka@redhat.com>
+
+ * constexpr.c (cxx_eval_call_expression): Adjust call to
+ evaluate_concept_check.
+ (cxx_eval_constant_expression) <case REQUIRES_EXPR>: Use
+ evaluate_requires_expression instead of
+ satisfy_constraint_expression.
+ <case TEMPLATE_ID_EXPR>: Adjust call to evaluate_concept_check.
+ * constraint.cc (struct sat_info): Adjust comment about which
+ satisfaction entrypoints use noisy-unsat.
+ (normalize_template_requirements): Remove (and adjust callers
+ appropriately).
+ (normalize_nontemplate_requirements): Likewise.
+ (tsubst_nested_requirement): Use constraint_satisfaction_value
+ instead of satisfy_constraint_expression, which'll do the
+ noisy replaying of ill-formed quiet satisfaction for us.
+ (decl_satisfied_cache): Adjust comment.
+ (satisfy_constraint): Rename to ...
+ (satisfy_normalized_constraints): ... this.
+ (satisfy_associated_constraints): Remove (and make its
+ callers check for dependent arguments).
+ (satisfy_constraint_expression): Rename to ...
+ (satisfy_nondeclaration_constraints): ... this. Assert that
+ 'args' is empty when 't' is a concept-id. Removing handling
+ bare constraint-expressions, and handle REQUIRES_EXPRs
+ specially. Adjust comment accordingly.
+ (satisfy_declaration_constraints): Assert in the two-parameter
+ version that 't' is not a TEMPLATE_DECL. Adjust following
+ removal of normalize_(non)?template_requirements and
+ satisfy_asociated_constraints.
+ (constraint_satisfaction_value): Combine the two- and
+ three-parameter versions in the natural way.
+ (constraints_satisfied_p): Combine the one- and two-parameter
+ versions in the natural way. Improve documentation.
+ (evaluate_requires_expr): Define.
+ (evaluate_concept_check): Remove 'complain' parameter. Use
+ constraint_satisfaction_value instead of
+ satisfy_constraint_expression.
+ (diagnose_nested_requirement): Adjust following renaming of
+ satisfy_constraint_expression.
+ (diagnose_constraints): Handle REQUIRES_EXPR by going through
+ diagnose_requires_expr directly instead of treating it as a
+ constraint-expression. Improve documentation.
+ * cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Adjust call
+ to evaluate_concept_check.
+ <case REQUIRES_EXPR>: Use evaluate_requires_expr instead of
+ constraints_satisfied_p.
+ <case TEMPLATE_ID_EXPR>: Adjust call to evaluate_concept_check.
+ * cp-tree.h (evaluate_requires_expr): Declare.
+ (evaluate_concept_check): Remove tsubst_flag_t parameter.
+ (satisfy_constraint_expression): Remove declaration.
+ (constraints_satisfied_p): Remove one-parameter declaration.
+ Add a default argument to the two-parameter declaration.
+ * cvt.c (convert_to_void): Adjust call to
+ evaluate_concept_check.
+
+2021-03-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/82959
+ * call.c (op_is_ordered): Handle TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR
+ and COMPOUND_EXPR.
+
+2021-03-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97034
+ PR c++/99009
+ * pt.c (build_deduction_guide): Use INNERMOST_TEMPLATE_ARGS.
+ (maybe_aggr_guide): Use the original template type where needed. In
+ a class member template, partially instantiate the result of
+ collect_ctor_idx_types.
+ (do_class_deduction): Defer the deduction until the enclosing
+ scope is non-dependent.
+
+2021-03-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/95675
+ * call.c (build_temp): Wrap a CALL_EXPR in a TARGET_EXPR
+ if it didn't get one before.
+
+2021-03-03 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99344
+ * module.cc (trees_out::decl_node): Small refactor.
+ (depset::hash::add_binding_entity): Return true on meeting an
+ import. Set namespace's import here.
+ (module_state:write_namespaces): Inform of purview too.
+ (module_state:read_namespaces): Adjust.
+ * name-lookup.c (implicitly_export_namespace): Delete.
+ (do_pushdecl): Don't call it.
+ (push_namespace): Likewise, set purview.
+ (add_imported_namespace): Reorder parms.
+ * name-lookup.h (add_imported_namespace): Alter param ordering.
+
+2021-03-02 Martin Sebor <msebor@redhat.com>
+
+ PR c++/99251
+ * class.c (build_base_path): Call build_if_nonnull.
+ * cp-tree.h (build_if_nonnull): Declare.
+ * rtti.c (ifnonnull): Rename...
+ (build_if_nonnull): ...to this. Set no-warning bit on COND_EXPR.
+ (build_dynamic_cast_1): Adjust to name change.
+
+2021-03-02 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96443
+ PR c++/96960
+ * constraint.cc (type_deducible_p): Don't substitute into the
+ constraints, and instead just pass 'args' to do_auto_deduction
+ as the outer template arguments.
+ (tsubst_parameter_mapping): Remove confused code for handling
+ placeholder type arguments.
+ (normalize_placeholder_type_constraint): Define.
+ (satisfy_constraint_expression): Use it to handle placeholder
+ 'auto' types.
+ * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Define.
+ (PLACEHOLDER_TYPE_CONSTRAINTS): Redefine in terms of the above.
+ * pt.c (tsubst) <case TEMPLATE_TYPE_PARM>: Use
+ PLACEHOLDER_TYPE_CONSTRAINTS_INFO instead.
+ (make_constrained_placeholder_type): Set
+ PLACEHOLDER_TYPE_CONSTRAINTS_INFO instead.
+ (do_auto_deduction): Clarify comments about the outer_targs
+ parameter. Rework satisfaction of a placeholder type constraint
+ to pass in the complete set of template arguments directly to
+ constraints_satisfied_p.
+ (splice_late_return_type): Use PLACEHOLDER_TYPE_CONSTRAINTS_INFO
+ instead. Also rebuild the the constraint info on the new auto.
+
+2021-03-02 Patrick Palka <ppalka@redhat.com>
+
+ * constraint.cc (build_parameter_mapping): Rely on the caller to
+ determine the in-scope template parameters.
+ (norm_info::norm_info): Delegate the tsubst_flags_t constructor
+ to the two-parameter constructor. In the two-parameter
+ constructor, fold in the definition of make_context, set
+ initial_parms appropriately, and don't set the now-removed
+ orig_decl member.
+ (norm_info::make_context): Remove, now that its only use is
+ inlined into the caller.
+ (norm_info::update_context): Adjust call to
+ build_parameter_mapping to pass in the relevant set of in-scope
+ template parameters.
+ (norm_info::ctx_parms): Define this member function.
+ (norm_info::context): Initialize to NULL_TREE.
+ (norm_info::orig_decl): Remove this data member.
+ (norm_info::initial_parms): Define this data member.
+ (normalize_atom): Adjust call to build_parameter_mapping to pass
+ in the relevant set of in-scope template parameters. Use
+ info.initial_parms instead of info.orig_decl.
+ (normalize_constraint_expression): Take a norm_info object
+ instead of a bool. Cache the result of normalization.
+ (tsubst_nested_requirement): Call satisfy_constraint_expression
+ instead of satisfy_constraint, so that we normalize on demand.
+ (satisfy_constraint_expression): Handle a NESTED_REQ argument.
+ Adjust call to normalize_constraint_expression.
+ (finish_nested_requirement): Set the TREE_TYPE of the NESTED_REQ
+ to current_template_parms.
+ (diagnose_nested_requirements): Go through
+ satisfy_constraint_expression, as with tsubst_nested_requirement.
+
+2021-03-02 Patrick Palka <ppalka@redhat.com>
+
+ * constraint.cc (tsubst_parameter_mapping): Canonicalize the
+ arguments of a substituted TYPE_ARGUMENT_PACK even if we've
+ started with a TYPE_ARGUMENT_PACK.
+ (finish_requires_expr): Don't set DECL_CONTEXT and
+ CONSTRAINT_VAR_P on each of the introduced parameters here.
+ * parser.c (cp_parser_requirement_parameter_list): Instead set
+ these fields earlier, here.
+ * pt.c (do_auto_deduction): Canonicalize the result of
+ do_auto_deduction. Pass 'complain' to finish_decltype_type.
+
+2021-03-02 Patrick Palka <ppalka@redhat.com>
+
+ * constraint.cc (tsubst_simple_requirement): Just return
+ boolean_true_node on success.
+ (tsubst_type_requirement): Likewise.
+ (tsubst_compound_requirement): Likewise.
+ (tsubst_nested_requirement): Likewise.
+ (tsubst_requirement_body): Remove.
+ (check_constaint_variables): Rename to ...
+ (check_constraint_variables): ... this.
+ (tsubst_constraint_variables): Adjust.
+ (tsubst_requires_expr): Fold tsubst_requirement_body into here.
+
+2021-03-01 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99294
+ * class.c (fixup_type_variants): Propagate mode, precision,
+ alignment & emptiness.
+ * module.cc (trees_out::type_node): Use TYPE_ALIGN_RAW.
+ (trees_in::tree_node): Rematerialize alignment here.
+
+2021-02-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/90333
+ * parser.c (cp_parser_lambda_declarator_opt): Accept GNU attributes
+ between () and ->.
+
+2021-02-26 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_lambda_declarator_opt): Implement
+ P1102R2 - Down with ()! Make ()s optional before lambda specifiers
+ for -std={c,gnu}++2b or with pedwarn in earlier versions.
+
+2021-02-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/95451
+ * lambda.c (is_lambda_ignored_entity): Before checking for
+ LAMBDA_FUNCTION_P, use OVL_FIRST. Drop FUNCTION_DECL check.
+
+2021-02-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/98810
+ * pt.c (tsubst_copy) [VIEW_CONVERT_EXPR]: Add const
+ to a class non-type template argument that needs it.
+
+2021-02-26 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/98990
+ * pt.c (splice_late_return_type): Rebuild the entire return type
+ if we have to adjust the level of an auto within.
+ (type_uses_auto): Adjust call to find_type_usage.
+ * type-utils.h (find_type_usage): Revert r10-6571 change that
+ made this function return a pointer to the auto node.
+
+2021-02-25 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99213
+ PR c++/94521
+ * error.c (dump_scope): Pass TFF_NO_TEMPLATE_BINDINGS instead of
+ TFF_NO_FUNCTION_ARGUMENTS when dumping a function scope.
+
+2021-02-25 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99103
+ * pt.c (is_spec_or_derived): Drop cv-qualifiers from 'etype'.
+ (maybe_aggr_guide): Fix order of arguments to is_spec_or_derived.
+
+2021-02-25 Marek Polacek <polacek@redhat.com>
+
+ DR 1312
+ PR c++/99176
+ * constexpr.c (is_std_construct_at): New overload.
+ (is_std_allocator_allocate): New overload.
+ (cxx_eval_call_expression): Use the new overloads.
+ (cxx_eval_constant_expression): Reject casting
+ from void * as per DR 1312. Don't check can_convert.
+
+2021-02-25 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/97587
+ * coroutines.cc (struct param_info): Track rvalue refs.
+ (morph_fn_to_coro): Track rvalue refs, and call the promise
+ CTOR with the frame copy of passed parms.
+
+2021-02-25 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95822
+ * coroutines.cc (morph_fn_to_coro): Unconditionally remove any
+ set throwing_cleanup marker.
+
+2021-02-25 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99166
+ * module.cc (module_state::inform_cmi_p): Renamed field.
+ (module_state::do_import): Adjust.
+ (init_modules, finish_module_processing): Likewise.
+ (handle_module_option): Likewise.
+
+2021-02-25 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98318
+ * mapper-client.cc (module_client::open_module_client): Fix typo
+ of fd init.
+
+2021-02-24 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98718
+ * module.cc (ool): New indirection vector.
+ (loc_spans::maybe_propagate): Location is not optional.
+ (loc_spans::open): Likewise. Assert monotonically advancing.
+ (module_for_ordinary_loc): Use ool indirection vector.
+ (module_state::write_prepare_maps): Do not count empty macro
+ expansions. Elide empty spans.
+ (module_state::write_macro_maps): Skip empty expansions.
+ (ool_cmp): New qsort comparator.
+ (module_state::write): Create and destroy ool vector.
+ (name_pending_imports): Fix dump push/pop.
+ (preprocess_module): Likewise. Add more dumping.
+ (preprocessed_module): Likewise.
+
+2021-02-24 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/96251
+ * coroutines.cc (coro_common_keyword_context_valid_p): Suppress
+ error reporting when instantiating for a constexpr.
+
+2021-02-23 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99208
+ * decl.c (name_unnamed_type): Check DECL identity, not IDENTIFIER
+ identity.
+
+2021-02-23 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95468
+ * pt.c (tsubst_copy_and_build) <case BASELINK>: New case, copied
+ over from tsubst_copy.
+
+2021-02-23 Patrick Palka <ppalka@redhat.com>
+
+ * pt.c (instantiation_dependent_expression_p): Check
+ processing_template_decl before calling
+ potential_constant_expression.
+
+2021-02-22 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99174
+ * module.cc (struct module_state): Add visited_p flag.
+ (name_pending_imports): Use it to avoid duplicate requests.
+ (preprocess_module): Don't read preprocessor state if we failed to
+ load a module's config.
+
+2021-02-22 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99153
+ * decl.c (duplicate_decls): Move DECL_MODULE_IMPORT_P propagation
+ to common-path.
+ * module.cc (set_defining_module): Add assert.
+
+2021-02-19 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98741
+ * module.cc (pending_imports): New.
+ (declare_module): Adjust test condition.
+ (name_pending_imports): New.
+ (preprocess_module): Reimplement using pending_imports.
+ (preprocessed_module): Move name-getting to name_pending_imports.
+ * name-lookup.c (append_imported_binding_slot): Assert module
+ ordering is increasing.
+
+2021-02-19 Nathan Sidwell <nathan@acm.org>
+
+ * module.cc (note_cmis): New.
+ (struct module_state): Add inform_read_p bit.
+ (module_state::do_import): Inform of CMI location, if enabled.
+ (init_modules): Canonicalize note_cmis entries.
+ (handle_module_option): Handle -flang-info-module-read=FOO.
+
+2021-02-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/96926
+ * call.c (perfect_conversion_p): Limit rvalueness
+ test to reference bindings.
+
+2021-02-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/96926
+ * call.c (perfect_conversion_p): New.
+ (perfect_candidate_p): New.
+ (add_candidates): Ignore templates after a perfect non-template.
+
+2021-02-18 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99023
+ * module.cc (canonicalize_header_name): Use
+ cpp_probe_header_unit.
+ (maybe_translate_include): Fix note_includes comparison.
+ (init_modules): Fix note_includes string termination.
+
+2021-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99132
+ * cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Use
+ cp_get_callee_fndecl_nofold instead of cp_get_callee_fndecl to check
+ for immediate function calls.
+
+2021-02-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99023
+ * module.cc (struct macro_export): Add GTY markers.
+ (macro_exports): Likewise, us a va_gc Vector.
+
+2021-02-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/99106
+ * init.c (build_zero_init_1): For flexible array members just return
+ NULL_TREE instead of returning empty CONSTRUCTOR with non-complete
+ ARRAY_TYPE.
+
+2021-02-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99116
+ * name-lookup.c (do_pushdecl): Don't peek under template_parm
+ bindings here ...
+ (set_identifier_type_value_with_scope): ... or here.
+ (do_pushtag): Only set_identifier_type_value_with_scope at
+ non-class template parm scope, and use parent scope.
+
+2021-02-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99071
+ * name-lookup.c (maybe_record_mergeable_decl): Deref the correct
+ pointer.
+
+2021-02-17 Patrick Palka <ppalka@redhat.com>
+
+ PR debug/96997
+ PR c++/94034
+ * tree.c (build_aggr_init_expr): Revert r10-7718 change.
+
+2021-02-12 Nathan Sidwell <nathan@acm.org>
+
+ * module.cc (module_state::write_cluster): Check bindings for
+ imported using-decls.
+
+2021-02-12 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99040
+ * module.cc (trees_in::decl_value): Call add_module_namespace_decl
+ for new namespace-scope entities.
+ (module_state::read_cluster): Don't call add_module_decl here.
+ * name-lookup.h (add_module_decl): Rename to ...
+ (add_module_namespace_decl): ... this.
+ * name-lookup.c (newbinding_bookkeeping): Move into ...
+ (do_pushdecl): ... here. Its only remaining caller.
+ (add_module_decl): Rename to ...
+ (add_module_namespace_decl): ... here. Add checking-assert for
+ circularity. Don't call newbinding_bookkeeping, just extern_c
+ checking and incomplete var checking.
+
+2021-02-12 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99039
+ PR c++/99040
+ * cp-tree.h (CPTI_GLOBAL_TYPE): Delete.
+ (global_type_node): Delete.
+ (IDENTIFIER_TYPE_VALUE): Delete.
+ (IDENTIFIER_HAS_TYPE_VALUE): Delete.
+ (get_type_value): Delete.
+ * name-lookup.h (identifier_type_value): Delete.
+ * name-lookup.c (check_module_override): Don't
+ SET_IDENTIFIER_TYPE_VALUE here.
+ (do_pushdecl): Nor here.
+ (identifier_type_value_1, identifier_type_value): Delete.
+ (set_identifier_type_value_with_scope): Only
+ SET_IDENTIFIER_TYPE_VALUE for local and class scopes.
+ (pushdecl_nanmespace_level): Remove shadow stack nadgering.
+ (do_pushtag): Use REAL_IDENTIFIER_TYPE_VALUE.
+ * call.c (check_dtor_name): Use lookup_name.
+ * decl.c (cxx_init_decl_processing): Drop global_type_node.
+ * decl2.c (cplus_decl_attributes): Don't SET_IDENTIFIER_TYPE_VALUE
+ here.
+ * init.c (get_type_value): Delete.
+ * pt.c (instantiate_class_template_1): Don't call pushtag or
+ SET_IDENTIFIER_TYPE_VALUE here.
+ (tsubst): Assert never an identifier.
+ (dependent_type_p): Drop global_type_node assert.
+ * typeck.c (error_args_num): Don't use IDENTIFIER_HAS_TYPE_VALUE
+ to determine ctorness.
+
+2021-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97742
+ * parser.c (cp_parser_requirement_seq): Stop iterating after reaching
+ CPP_EOF.
+
+2021-02-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/97246
+ PR c++/94546
+ * pt.c (extract_fnparm_pack): Check DECL_PACK_P here.
+ (register_parameter_specializations): Not here.
+
+2021-02-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95888
+ * pt.c (lookup_template_class_1): Pass tf_none to tsubst when looking
+ for the partial instantiation.
+
+2021-02-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/99033
+ * init.c (build_zero_init_1): Handle zero initialiation of
+ flexible array members like initialization of [0] arrays.
+ Use integer_minus_onep instead of comparison to integer_minus_one_node
+ and integer_zerop instead of comparison against size_zero_node.
+ Formatting fixes.
+
+2021-02-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/99063
+ * semantics.c (finish_do_stmt): Check for unexpanded parameter packs.
+
+2021-02-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97582
+ * name-lookup.c (op_unqualified_lookup): Handle an ambiguous
+ lookup result by discarding it if the first element is a
+ class-scope declaration, otherwise return it.
+ (push_operator_bindings): Handle an ambiguous lookup result by
+ doing push_local_binding on each element in the list.
+
+2021-02-11 Marek Polacek <polacek@redhat.com>
+
+ * parser.c (cp_parser_selection_statement): Use vec_free.
+
+2021-02-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98988
+ PR c++/99031
+ * constexpr.c: Include cgraph.h.
+ (cxx_eval_call_expression): Call varpool_node::finalize_decl on
+ heap artificial vars.
+ (cxx_eval_outermost_constant_expr): Remove varpool nodes for
+ heap artificial vars.
+
+2021-02-10 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/99030
+ * pt.c (tsubst_copy) [VAR_DECL]: For a DECL_LOCAL_DECL_P T is the
+ answer if there's no local specialization.
+
+2021-02-09 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98944
+ * module.cc (module_state::is_rooted): Rename to ...
+ (module_state::has_location): ... here. Adjust callers.
+ (module_state::read_partitions): Adjust validity check.
+ Don't overwrite a known location.
+
+2021-02-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/96905
+ * pt.c (mark_decl_instantiated): Exit early if consteval.
+
+2021-02-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/98326
+ PR c++/20408
+ * cp-gimplify.c (simple_empty_class_p): Don't touch an invisiref
+ parm.
+
+2021-02-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/98994
+ PR c++/97566
+ * constexpr.c (cxx_eval_store_expression): Only skip empty fields in
+ RECORD_TYPE.
+
+2021-02-08 Nathan Sidwell <nathan@acm.org>
+
+ * decl.c (start_cleanup_fn): Push function into
+ namespace.
+
+2021-02-08 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98531
+ * cp-tree.h (push_abi_namespace, pop_abi_namespace): Declare.
+ * decl.c (push_abi_namespace, pop_abi_namespace): Moved
+ from rtti.c, add default namespace arg.
+ (check_redeclaration_exception_specification): Allow a lazy
+ builtin's eh spec to differ from an lready-declared user
+ declaration.
+ (declare_global_var): Use push/pop_abi_namespace.
+ (get_atexit_node): Push the fndecl into a namespace.
+ * rtti.c (push_abi_namespace, pop_abi_namespace): Moved to
+ decl.c.
+
+2021-02-08 Marek Polacek <polacek@redhat.com>
+
+ * cp-tree.h (CLASSTYPE_TI_TEMPLATE): Fix typo.
+
+2021-02-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98947
+ * call.c (build_conditional_expr_1): Don't call mark_lvalue_use
+ on arg2/arg3.
+ * expr.c (mark_use) <case MODIFY_EXPR>: Don't check read_p when
+ issuing the -Wvolatile warning. Only set TREE_THIS_VOLATILE if
+ a warning was emitted.
+
+2021-02-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/96462
+ * name-lookup.c (lookup_using_decl): Hoist the destructor check.
+
+2021-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97878
+ * decl.c (check_array_initializer): For structured bindings, require
+ the array type to be complete.
+
+2021-02-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/98717
+ * constraint.cc (build_concept_check_arguments): Remove assert.
+ (build_concept_check): Allow empty args.
+
+2021-02-04 Tom Greenslade (thomgree) <thomgree@cisco.com>
+
+ PR c++/90926
+ * call.c (can_convert_array): Extend to handle all valid aggregate
+ initializers of an array; including by string literals, not just by
+ brace-init-list.
+ (build_aggr_conv): Call can_convert_array more often, not just in
+ brace-init-list case.
+ * typeck2.c (array_string_literal_compatible_p): New function.
+ (digest_init_r): call array_string_literal_compatible_p
+ * cp-tree.h: (array_string_literal_compatible_p): Declare.
+
+2021-02-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/98802
+ * pt.c (do_class_deduction): No aggregate guide if any_dguides_p.
+
+2021-02-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/95192
+ * pt.c (tsubst_attribute): Handle error.
+ (apply_late_template_attributes): Return false on error.
+ (tsubst_function_decl): Check its return value.
+ (tsubst_decl): Likewise.
+ (push_template_decl): Assert current_template_parms.
+ (tsubst_template_decl): Set current_template_parms.
+
+2021-02-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98951
+ * call.c (struct z_candidate): Mark rewritten and reversed as const.
+ (struct NonPublicField): Mark operator() as const.
+ (struct NonTrivialField): Likewise.
+
+2021-02-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/98926
+ PR c++/98570
+ * pt.c (spec_hasher::equal): Set processing_template_decl.
+ * Make-lang.in (check-g++-strict-gc): Add --param
+ hash-table-verification-limit=10000.
+
+2021-02-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98899
+ * parser.c (cp_parser_class_specifier_1): Use any possible
+ DEFPARSE_INSTANTIATIONS to update DEFERRED_NOEXCEPT_PATTERN.
+ (cp_parser_save_noexcept): Initialize DEFPARSE_INSTANTIATIONS.
+ * pt.c (tsubst_exception_specification): Stash new_specs into
+ DEFPARSE_INSTANTIATIONS.
+ * tree.c (fixup_deferred_exception_variants): Use
+ UNPARSED_NOEXCEPT_SPEC_P.
+
+2021-02-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/98929
+ PR c++/96199
+ * error.c (dump_expr): Ignore dummy object.
+ * pt.c (tsubst_baselink): Handle dependent scope.
+
+2021-02-01 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/98295
+ * constexpr.c (cxx_eval_array_reference): Also set
+ new_ctx.object when setting new_ctx.ctor.
+
+2021-02-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98355
+ * parser.c (cp_parser_has_attribute_expression): Use
+ uses_template_parms instead of type_dependent_expression_p.
+
+2021-02-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/98570
+ * cp-tree.h: Declare it.
+ * pt.c (comparing_dependent_aliases): New flag.
+ (template_args_equal, spec_hasher::equal): Set it.
+ (dependent_alias_template_spec_p): Assert that we don't
+ get non-types other than error_mark_node.
+ (instantiate_alias_template): SET_TYPE_STRUCTURAL_EQUALITY
+ on complex alias specializations. Set TYPE_DEPENDENT_P here.
+ (tsubst_decl): Not here.
+ * module.cc (module_state::read_cluster): Set
+ comparing_dependent_aliases instead of
+ comparing_specializations.
+ * tree.c (cp_tree_equal): Remove comparing_specializations
+ module handling.
+ * typeck.c (structural_comptypes): Adjust.
+ (comptypes): Remove comparing_specializations handling.
+
2021-01-29 Nathan Sidwell <nathan@acm.org>
PR c++/98843