+2021-11-30 Jason Merrill <jason@redhat.com>
+
+ * cp-gimplify.c (genericize_if_stmt): Always build a COND_EXPR.
+
+2021-11-30 Richard Biener <rguenther@suse.de>
+
+ * logic.cc (cnf_size_r): Remove unreachable and inconsistently
+ placed gcc_unreachable ()s.
+ * pt.c (iterative_hash_template_arg): Remove unreachable
+ gcc_unreachable and return.
+
+2021-11-30 Thomas Schwinge <thomas@codesourcery.com>
+
+ * semantics.c (finish_omp_clauses): Remove "gang reduction on an
+ orphan loop" checking.
+
+2021-11-30 Cesar Philippidis <cesar@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ * semantics.c (finish_omp_clauses): Emit an error on orphan
+ OpenACC gang reductions.
+
+2021-11-30 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-gimplify.c (cp_fold_r): Perform folding of
+ std::source_location::current() calls here...
+ (cp_fold): ... rather than here.
+
+2021-11-30 Richard Biener <rguenther@suse.de>
+
+ * parser.c (cp_parser_postfix_expression): Remove
+ unreachable code.
+ * pt.c (tsubst_expr): Remove unreachable breaks.
+
+2021-11-29 Eric Gallager <egallager@gcc.gnu.org>
+
+ PR other/103021
+ * Make-lang.in: Use ETAGS variable in TAGS target.
+
+2021-11-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/100493
+ * parser.c (cp_parser_lambda_introducer): In C++17, don't
+ diagnose a redundant 'this' capture alongside a by-copy
+ capture default unless -pedantic. Move the diagnostic into
+ -Wc++20-extensions and adjust wording accordingly.
+
+2021-11-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102753
+ * cp-tree.h (struct ptrmem_cst): Add locus member.
+ (PTRMEM_CST_LOCATION): Define.
+ * tree.c (make_ptrmem_cst): Set PTRMEM_CST_LOCATION to input_location.
+ (cp_expr_location): Return PTRMEM_CST_LOCATION for PTRMEM_CST.
+ * typeck.c (build_x_unary_op): Overwrite PTRMEM_CST_LOCATION for
+ PTRMEM_CST instead of calling maybe_wrap_with_location.
+ (cp_build_addr_expr_1): Don't diagnose taking address of
+ immediate functions here. Instead when taking their address make
+ sure the returned ADDR_EXPR has EXPR_LOCATION set.
+ (expand_ptrmemfunc_cst): Copy over PTRMEM_CST_LOCATION to ADDR_EXPR's
+ EXPR_LOCATION.
+ (convert_for_assignment): Use cp_expr_loc_or_input_loc instead of
+ EXPR_LOC_OR_LOC.
+ * pt.c (tsubst_copy): Use build1_loc instead of build1. Ensure
+ ADDR_EXPR of immediate function has EXPR_LOCATION set.
+ * cp-gimplify.c (cp_fold_r): Diagnose taking address of immediate
+ functions here. For consteval if don't walk THEN_CLAUSE.
+ (cp_genericize_r): Move evaluation of calls to
+ std::source_location::current from here to...
+ (cp_fold): ... here. Don't assert calls to immediate functions must
+ be source_location_current_p, instead only constant evaluate
+ calls to source_location_current_p.
+
+2021-11-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/101180
+ * pt.c (apply_late_template_attributes): Return early if there are no
+ dependent attributes.
+
+2021-11-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102611
+ * cp-tree.h (build_op_subscript): Implement P2128R6
+ - Multidimensional subscript operator. Declare.
+ (class releasing_vec): Add release method.
+ (grok_array_decl): Remove bool argument, add vec<tree, va_gc> **
+ and tsubst_flags_t arguments.
+ (build_min_non_dep_op_overload): Declare another overload.
+ * parser.c (cp_parser_parenthesized_expression_list_elt): New function.
+ (cp_parser_postfix_open_square_expression): Mention C++23 syntax in
+ function comment. For C++23 parse zero or more than one initializer
+ clauses in expression list, adjust grok_array_decl caller.
+ (cp_parser_parenthesized_expression_list): Use
+ cp_parser_parenthesized_expression_list_elt.
+ (cp_parser_builtin_offsetof): Adjust grok_array_decl caller.
+ * decl.c (grok_op_properties): For C++23 don't check number
+ of arguments of operator[].
+ * decl2.c (grok_array_decl): Remove decltype_p argument, add
+ index_exp_list and complain arguments. If index_exp is NULL,
+ handle *index_exp_list as the subscript expression list.
+ * tree.c (build_min_non_dep_op_overload): New overload.
+ * call.c (add_operator_candidates, build_over_call): Adjust comments
+ for removal of build_new_op_1.
+ (build_op_subscript): New function.
+ * pt.c (tsubst_copy_and_build_call_args): New function.
+ (tsubst_copy_and_build) <case ARRAY_REF>: If second
+ operand is magic CALL_EXPR with ovl_op_identifier (ARRAY_REF)
+ as CALL_EXPR_FN, tsubst CALL_EXPR arguments including expanding
+ pack expressions in it and call grok_array_decl instead of
+ build_x_array_ref.
+ <case CALL_EXPR>: Use tsubst_copy_and_build_call_args.
+ * semantics.c (handle_omp_array_sections_1): Adjust grok_array_decl
+ caller.
+
+2021-11-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/103347
+ * cp-tree.h (struct cp_declarator): Add a location_t member.
+ (maybe_warn_cpp0x): Add a location_t parameter with a default argument.
+ (loc_or_input_loc): New.
+ * decl.c (grokdeclarator): Use loc_or_input_loc. Pass init_loc down
+ to maybe_warn_cpp0x.
+ * error.c (maybe_warn_cpp0x): Add a location_t parameter. Use it.
+ * parser.c (make_declarator): Initialize init_loc.
+ (cp_parser_member_declaration): Set init_loc.
+ (cp_parser_condition): Likewise.
+ (cp_parser_init_declarator): Likewise.
+ (cp_parser_parameter_declaration): Likewise.
+
+2021-11-24 Jason Merrill <jason@redhat.com>
+
+ * call.c
+ * decl.c
+ * name-lookup.c:
+ Use auto_cond_timevar instead of timevar_cond_start/stop.
+ Remove wrapper functions.
+
+2021-11-23 Martin Sebor <msebor@redhat.com>
+
+ PR c++/96507
+ * typeck.c (warn_for_null_address): Handle reference members.
+
+2021-11-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/19808
+ * init.c (emit_mem_initializers): Don't add is_really_empty_class
+ members into uninitialized.
+
+2021-11-23 Jakub Jelinek <jakub@redhat.com>
+
+ * semantics.c (clone_omp_udr): Don't initialize
+ id.transform_lang_insert_block.
+ * optimize.c (clone_body): Likewise.
+
+2021-11-22 Jason Merrill <jason@redhat.com>
+
+ * typeck.c (build_x_unary_op): Set address location.
+ (convert_member_func_to_ptr): Handle location wrapper.
+ * pt.c (convert_nontype_argument): Likewise.
+
+2021-11-22 Jason Merrill <jason@redhat.com>
+
+ * typeck.c (check_return_expr): Only strip location wrapper during
+ NRV handling.
+
+2021-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/101731
+ * parser.c (cp_parser_late_parsing_oacc_routine): Set
+ parser->oacc_routine->fndecl_seen here, rather than ...
+ (cp_finalize_oacc_routine): ... here. Don't error if
+ parser->oacc_routine->fndecl_seen is set for FUNCTION_DECLs.
+
+2021-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/103349
+ * constexpr.c (potential_constant_expression_1): Punt on OMP_MASKED.
+
+2021-11-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/101180
+ * pt.c (apply_late_template_attributes): Temporarily override
+ current_optimize_pragma, optimization_current_node,
+ current_target_pragma and scope_chain->omp_declare_target_attribute,
+ so that cplus_decl_attributes doesn't add implicit attributes.
+
+2021-11-19 Martin Sebor <msebor@redhat.com>
+
+ PR c++/33925
+ PR c/102867
+ * typeck.c (warn_for_null_address): Suppress warnings for code
+ resulting from macro expansion.
+
+2021-11-19 Martin Liska <mliska@suse.cz>
+
+ Revert:
+ 2021-11-19 Martin Liska <mliska@suse.cz>
+
+ * parser.c (add_debug_begin_stmt): Use option directly.
+
+2021-11-19 Patrick Palka <ppalka@redhat.com>
+
+ * tree.c (cp_walk_subtrees) <case *_CAST_EXPR>: Don't explicitly
+ walk the operands.
+
+2021-11-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94376
+ * lambda.c (lambda_capture_field_type): Simplify by handling the
+ is_this case first. When capturing by-value a capture proxy,
+ consider the type of the corresponding field instead.
+
+2021-11-19 Richard Biener <rguenther@suse.de>
+
+ PR c++/103326
+ * pt.c (tsubst_copy): Handle VECTOR_CST.
+
+2021-11-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70796
+ * cp-gimplify.c (cp_gimplify_arg): New function.
+ (cp_gimplify_expr): Use cp_gimplify_arg instead of gimplify_arg,
+ pass true as last argument to it if there are any following
+ arguments in strong evaluation order with side-effects.
+
+2021-11-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/19808
+ PR c++/96121
+ * init.c (perform_member_init): Remove a forward declaration.
+ Walk the initializer using find_uninit_fields_r. New parameter
+ to track uninitialized fields. If a member is initialized,
+ remove it from the hash set.
+ (perform_target_ctor): Return the initializer.
+ (struct find_uninit_data): New class.
+ (find_uninit_fields_r): New function.
+ (find_uninit_fields): New function.
+ (emit_mem_initializers): Keep and initialize a set holding fields
+ that are not initialized. When handling delegating constructors,
+ walk the constructor tree using find_uninit_fields_r. Also when
+ initializing base clases. Pass uninitialized down to
+ perform_member_init.
+
+2021-11-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/103198
+ * pt.c (any_template_parm_r): Walk the TREE_TYPE of a dummy
+ object.
+
+2021-11-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/103049
+ * semantics.c (finish_compound_literal): Accept C++23 auto{x}.
+ * typeck2.c (build_functional_cast_1): Accept C++23 auto(x).
+
+2021-11-18 Patrick Palka <ppalka@redhat.com>
+
+ * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: Disable the
+ -fpermissive fallback for C++20 template-id ADL, but keep the
+ diagnostic.
+
+2021-11-18 Jan Hubicka <hubicka@ucw.cz>
+
+ * decl.c (finish_function): Update use of decl_replaceable_p.
+
+2021-11-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99911
+ * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: Don't diagnose
+ name lookup failure if the arguments to an unresolved template
+ name are still dependent.
+
+2021-11-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102670
+ * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: When looking
+ for an identifier callee in the koenig_p case, also look through
+ TEMPLATE_ID_EXPR. Use tsubst_copy to substitute through the
+ template arguments of the template-id.
+
+2021-11-18 Matthias Kretz <m.kretz@gsi.de>
+
+ * constexpr.c (cxx_eval_constant_expression): Handle PAREN_EXPR
+ via cxx_eval_constant_expression.
+ * cp-objcp-common.c (names_builtin_p): Handle
+ RID_BUILTIN_ASSOC_BARRIER.
+ * cp-tree.h: Adjust TREE_LANG_FLAG documentation to include
+ PAREN_EXPR in REF_PARENTHESIZED_P.
+ (REF_PARENTHESIZED_P): Add PAREN_EXPR.
+ * parser.c (cp_parser_postfix_expression): Handle
+ RID_BUILTIN_ASSOC_BARRIER.
+ * pt.c (tsubst_copy_and_build): If the PAREN_EXPR is not a
+ parenthesized initializer, build a new PAREN_EXPR.
+ * semantics.c (force_paren_expr): Simplify conditionals. Set
+ REF_PARENTHESIZED_P on PAREN_EXPR.
+ (maybe_undo_parenthesized_ref): Test PAREN_EXPR for
+ REF_PARENTHESIZED_P.
+
+2021-11-18 Martin Liska <mliska@suse.cz>
+
+ * parser.c (add_debug_begin_stmt): Use option directly.
+
+2021-11-16 Jason Merrill <jason@redhat.com>
+
+ * ptree.c (cxx_print_xnode): Handle PTRMEM_CST.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (struct lang_decl_fn): Add implicit_constexpr.
+ (decl_implicit_constexpr_p): New.
+ * class.c (type_maybe_constexpr_destructor): Use
+ TYPE_HAS_TRIVIAL_DESTRUCTOR and maybe_constexpr_fn.
+ (finalize_literal_type_property): Simplify.
+ * constexpr.c (is_valid_constexpr_fn): Check for dtor.
+ (maybe_save_constexpr_fundef): Try to set DECL_DECLARED_CONSTEXPR_P
+ on inlines.
+ (cxx_eval_call_expression): Use maybe_constexpr_fn.
+ (maybe_constexpr_fn): Handle flag_implicit_constexpr.
+ (var_in_maybe_constexpr_fn): Use maybe_constexpr_fn.
+ (potential_constant_expression_1): Likewise.
+ (decl_implicit_constexpr_p): New.
+ * decl.c (validate_constexpr_redeclaration): Allow change with
+ -fimplicit-constexpr.
+ (grok_special_member_properties): Use maybe_constexpr_fn.
+ * error.c (dump_function_decl): Don't print 'constexpr'
+ if it's implicit.
+ * Make-lang.in (check-c++-all): Update.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ * typeck2.c (split_nonconstant_init_1): Handle flexarrays better.
+
+2021-11-15 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (OMP_TARGET_CLAUSE_MASK): Add
+ PRAGMA_OMP_CLAUSE_THREAD_LIMIT.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ * call.c (perform_implicit_conversion_flags): Use the location of
+ the argument.
+ * lambda.c (build_lambda_object): Set location on the TARGET_EXPR.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (maybe_save_constexpr_fundef): Also check whether the
+ body of a constructor is potentially constant.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ * semantics.c (is_this_parameter): Check DECL_HAS_VALUE_EXPR_P
+ instead of is_capture_proxy.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/70690
+ * init.c (build_vec_init): Check default_init_uninitialized_part in
+ C++20.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (maybe_constant_value): Don't evaluate
+ in an unevaluated operand unless manifestly const-evaluated.
+ (fold_non_dependent_expr_template): Likewise.
+ * decl.c (compute_array_index_type_loc): This context is
+ manifestly constant-evaluated.
+
+2021-11-15 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (cxx_eval_thunk_call): Error instead of ICE
+ on vbase thunk to constexpr function.
+
+2021-11-11 Patrick Palka <ppalka@redhat.com>
+
+ * parser.c (cp_parser_template_argument_list): Use auto_vec
+ instead of manual memory management.
+
+2021-11-11 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_clause_num_teams): Parse optional
+ lower-bound and store it into OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR.
+ Use OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR instead of
+ OMP_CLAUSE_NUM_TEAMS_EXPR.
+ (cp_parser_omp_target): For OMP_CLAUSE_NUM_TEAMS evaluate before
+ combined target teams even lower-bound expression.
+ * semantics.c (finish_omp_clauses): Handle
+ OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR of OMP_CLAUSE_NUM_TEAMS clause.
+ * pt.c (tsubst_omp_clauses): Likewise.
+ (tsubst_expr): For OMP_CLAUSE_NUM_TEAMS evaluate before
+ combined target teams even lower-bound expression.
+
+2021-11-09 Marek Polacek <polacek@redhat.com>
+
+ * class.c (default_init_uninitialized_part): Use
+ next_initializable_field.
+ * method.c (walk_field_subobs): Skip unnamed bit-fields.
+
+2021-11-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/103114
+ * parser.c (cp_parser_userdef_numeric_literal): Use fold_build2
+ with COMPLEX_EXPR arg instead of build_complex, use build_zero_cst
+ instead of fold_convert from integer_zero_node.
+
+2021-11-09 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/98394
+ PR c++/85846
+ * parser.c (cp_parser_placeholder_type_specifier): Declare
+ static. Don't override tentative to false when tmpl is a
+ concept-id with empty argument list. Don't emit a "does not
+ constrain a type" error when tentative.
+
+2021-11-09 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/100652
+ * pt.c (push_template_decl): Check for bare parameter packs in
+ the argument list of a variable template partial specialization.
+
+2021-11-09 Aldy Hernandez <aldyh@redhat.com>
+
+ * ptree.c (cxx_print_xnode): Add more space to pfx array.
+
+2021-11-04 Jason Merrill <jason@redhat.com>
+
+ * call.c (build_array_conv): Use range-for.
+ (build_complex_conv): Likewise.
+ * constexpr.c (clear_no_implicit_zero)
+ (reduced_constant_expression_p): Likewise.
+ * decl.c (cp_complete_array_type): Likewise.
+ * decl2.c (mark_vtable_entries): Likewise.
+ * pt.c (iterative_hash_template_arg):
+ (invalid_tparm_referent_p, unify)
+ (type_dependent_expression_p): Likewise.
+ * typeck.c (build_ptrmemfunc_access_expr): Likewise.
+
+2021-11-03 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/103031
+ * cvt.c (convert_init): New function.
+
+2021-11-02 Richard Sandiford <richard.sandiford@arm.com>
+
+ * decl.c: Include langhooks-def.h.
+ (cxx_simulate_record_decl): New function.
+ * cp-objcp-common.h (cxx_simulate_record_decl): Declare.
+ (LANG_HOOKS_SIMULATE_RECORD_DECL): Override.
+
+2021-10-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102820
+ * semantics.c (maybe_zero_constructor_nelts): New function.
+ (finish_compound_literal): Implement DR2351 - void{}.
+ If type is cv void and compound_literal has no elements, return
+ void_node. If type is cv void and compound_literal might have no
+ elements after expansion, handle it like other dependent compound
+ literals.
+
+2021-10-28 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102933
+ * parser.c (cp_parser_simple_type_specifier): Adjust diagnostic
+ for using auto in parameter declaration.
+ * pt.c (extract_autos_r): Ignore CTAD placeholders.
+ (extract_autos): Use range-based for.
+ (do_auto_deduction): Use extract_autos only for the concepts TS
+ and not also for standard concepts.
+ (type_uses_auto): Likewise with for_each_template_parm.
+ (check_auto_in_tmpl_args): Just return false outside of the
+ concepts TS. Simplify.
+
+2021-10-28 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102780
+ * constexpr.c (potential_constant_expression_1) <case TRUTH_*_EXPR>:
+ When tf_error isn't set, preemptively check potentiality of the
+ second operand before performing trial evaluation of the first
+ operand.
+ (potential_constant_expression_1): When tf_error is set, first check
+ potentiality quietly and return true if successful, otherwise
+ proceed noisily to give errors.
+
+2021-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102854
+ * semantics.c (handle_omp_for_class_iterator,
+ finish_omp_for): Adjust c_omp_check_loop_iv_exprs caller.
+
+2021-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102753
+ * constexpr.c (cxx_eval_outermost_constant_expr): Perform
+ find_immediate_fndecl discovery if is_consteval or
+ in_immediate_context () rather than if is_consteval, t != r
+ and not in immediate function's body.
+
+2021-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102753
+ * cp-tree.h (saved_scope): Document that consteval_if_p member
+ is also set while processing immediate invocation.
+ (in_immediate_context): Declare.
+ * call.c (in_immediate_context): New function.
+ (immediate_invocation_p): Use it.
+ (struct in_consteval_if_p_temp_override): New class.
+ (build_over_call): Temporarily set in_consteval_if_p for processing
+ immediate invocation arguments.
+ * typeck.c (cp_build_addr_expr_1): Diagnose taking address of
+ an immediate method. Use t instead of TREE_OPERAND (arg, 1).
+ Use in_immediate_context function.
+ * constexpr.c (find_immediate_fndecl): Handle PTRMEM_CST
+ which refers to immediate function decl.
+
+2021-10-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/102617
+ * parser.c (cp_parser_for): Maybe call cp_parser_init_statement
+ twice. Warn about range-based for loops with initializer here.
+ (cp_parser_init_statement): Don't duplicate code. Allow
+ alias-declaration in init-statement.
+
+2021-10-22 Eric Gallager <egallager@gcc.gnu.org>
+
+ PR other/102663
+ * Make-lang.in: Add dummy c++.install-dvi target.
+
+2021-10-20 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
+ Pass true for declarator_p.
+ (cp_parser_nested_name_specifier_opt): Only look through
+ TYPENAME_TYPE if check_dependency_p is false.
+
+2021-10-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102642
+ * name-lookup.c (push_local_extern_decl_alias): Don't call
+ set_decl_tls_model on error_mark_node.
+ * decl.c (make_rtl_for_nonlocal_decl): Don't call
+ set_user_assembler_name on error_mark_node.
+ * parser.c (cp_parser_oacc_declare): Ignore DECL_LOCAL_DECL_ALIAS
+ if it is error_mark_node.
+ (cp_parser_omp_declare_target): Likewise.
+
+2021-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102786
+ * constexpr.c (cxx_eval_constant_expression): Don't reject
+ INTEGER_CSTs with type POINTER_TYPE to METHOD_TYPE.
+
+2021-10-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/51851
+ PR c++/101402
+ PR c++/102033
+ PR c++/102034
+ PR c++/102039
+ PR c++/102044
+ * pt.c (determine_specialization): Remove redundant code.
+ (fn_type_unification): Check for mismatched length.
+ (type_unification_real): Ignore terminal void.
+ (get_bindings): Don't stop at void_list_node.
+ * class.c (resolve_address_of_overloaded_function): Likewise.
+
+2021-10-15 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (cxx_bind_parameters_in_call): Replace
+ new_call parameter with fun.
+ (cxx_eval_call_expression): Call it before instantiation.
+ (cxx_eval_outermost_constant_expr): Only instantiate fns
+ when manifestly_const_eval.
+ * typeck2.c (check_narrowing): This context is manifestly
+ constant-evaluated.
+
+2021-10-14 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * decl.c (omp_declare_variant_finalize_one): Change call from
+ c_omp_mark_declare_variant to omp_mark_declare_variant.
+ * parser.c (cp_finish_omp_declare_variant): Change call from
+ c_omp_check_context_selector to omp_check_context_selector.
+
+2021-10-09 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_structured_block): Remove disallow_omp_attrs
+ argument.
+ (cp_parser_omp_structured_block_sequence): New function.
+ (cp_parser_omp_scan_loop_body): Use it.
+ (cp_parser_omp_sections_scope): Likewise.
+
+2021-10-08 Martin Liska <mliska@suse.cz>
+
+ * constexpr.c (maybe_warn_about_constant_value): Use new macro
+ OPTION_SET_P.
+ * decl.c (redeclaration_error_message): Likewise.
+ (cxx_init_decl_processing): Likewise.
+
+2021-10-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102640
+ * parser.c (handle_omp_declare_target_clause): New function.
+ (cp_parser_omp_declare_target): Use it.
+
+2021-10-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/61355
+ * pt.c (convert_template_argument): Perform array/function to
+ pointer conversion on the substituted type of an NTTP.
+
+2021-10-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99904
+ * pt.c (is_compatible_template_arg): Set processing_template_decl
+ around tsubst_constraint_info.
+
+2021-10-07 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/102482
+ * init.c (maybe_warn_list_ctor): Do not warn for a reference to
+ a non-const std::initializer_list.
+
+2021-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102612
+ * parser.c (cp_parser_jump_statement): Implement C++23 P2242R3.
+ Allow goto expressions in constexpr function bodies for C++23.
+ Adjust error message for older standards to mention it.
+ * decl.c (start_decl): Allow static and thread_local declarations
+ in constexpr function bodies for C++23. Adjust error message for
+ older standards to mention it.
+ * constexpr.c (ensure_literal_type_for_constexpr_object): Allow
+ declarations of variables with non-literal type in constexpr function
+ bodies for C++23. Adjust error message for older standards to mention
+ it.
+ (cxx_eval_constant_expression) <case DECL_EXPR>: Diagnose declarations
+ of initialization of static or thread_local vars.
+ (cxx_eval_constant_expression) <case GOTO_EXPR>: Diagnose goto
+ statements for C++23.
+ (potential_constant_expression_1) <case DECL_EXPR>: Swap the
+ CP_DECL_THREAD_LOCAL_P and TREE_STATIC checks.
+ (potential_constant_expression_1) <case LABEL_EXPR>: Allow labels for
+ C++23. Adjust error message for older standards to mention it.
+
+2021-10-06 Jakub Jelinek <jakub@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/98712
+ PR c++/102490
+ * cp-tree.h (maybe_synthesize_method): Declare.
+ * method.c (genericize_spaceship): Use
+ LOOKUP_NORMAL | LOOKUP_NONVIRTUAL | LOOKUP_DEFAULTED instead of
+ LOOKUP_NORMAL for flags.
+ (comp_info): Remove defining member. Add complain, code, retcat.
+ (comp_info::comp_info): Adjust.
+ (do_one_comp): Split out from build_comparison_op. Use
+ LOOKUP_NORMAL | LOOKUP_NONVIRTUAL | LOOKUP_DEFAULTED instead of
+ LOOKUP_NORMAL for flags.
+ (build_comparison_op): Add defining argument. Adjust comp_info
+ construction. Use defining instead of info.defining. Assert that
+ if defining, ctype is a complete type. Walk base binfos.
+ (synthesize_method, maybe_explain_implicit_delete,
+ explain_implicit_non_constexpr): Adjust build_comparison_op callers.
+ (maybe_synthesize_method): New function.
+ * class.c (check_bases_and_members): Don't call defaulted_late_check
+ for sfk_comparison.
+ (finish_struct_1): Call it here instead after class has been
+ completed.
+ * pt.c (maybe_instantiate_noexcept): Call maybe_synthesize_method
+ instead of synthesize_method.
+
+2021-10-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102548
+ * tree.c (apply_identity_attributes): Fix handling of the
+ case where an attribute in the list doesn't affect type
+ identity but some attribute before it does.
+
+2021-10-05 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102547
+ * constexpr.c (potential_constant_expression_1): Handle
+ NONTYPE_ARGUMENT_PACK.
+
+2021-10-05 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/98930
+ * pt.c (has_value_dependent_address): Return true for a static
+ local variable from a function template.
+
+2021-10-04 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97573
+ * typeck.c (cp_build_binary_op): Call do_warn_array_compare.
+
+2021-10-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/101765
+ * coroutines.cc (register_local_var_uses): Emit a sorry if
+ we encounter a VLA in the coroutine local variables.
+
+2021-10-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/99710
+ * coroutines.cc (await_statement_walker): Report an error if
+ an await expression is found in a handler body.
+
+2021-10-03 John Eivind Helset <jehelset@gmail.com>
+
+ PR c++/100673
+ * coroutines.cc (build_co_await): Guard against NULL
+ await_suspend types.
+
+2021-10-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/101133
+ * coroutines.cc (build_co_await): Mark co_await_expr trees
+ with TREE_SIDE_EFFECTS, also mark any containing expression.
+ (finish_co_await_expr): Mark type-dependent co_await_expr
+ trees with TREE_SIDE_EFFECTS.
+
+2021-10-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/99575
+ * coroutines.cc (build_co_await): Strip NOPs from
+ candidate awaiter expressions before testing to see
+ if they need a temporary.
+
+2021-10-01 Martin Sebor <msebor@redhat.com>
+
+ PR c/102103
+ * typeck.c (warn_for_null_address): Enhance.
+ (cp_build_binary_op): Call it also for member pointers.
+
+2021-10-01 qingzhe huang <nickhuang99@hotmail.com>
+
+ PR c++/101783
+ * tree.c (cp_build_qualified_type_real): Exclude typedef from
+ error.
+
+2021-10-01 Jakub Jelinek <jakub@redhat.com>
+ Richard Biener <rguenther@suse.de>
+
+ PR sanitizer/102515
+ * typeck.c (cp_build_binary_op): Call ubsan_instrument_division
+ for division even for SANITIZE_SI_OVERFLOW.
+
+2021-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_clause_order): Set
+ OMP_CLAUSE_ORDER_REPRODUCIBLE for explicit reproducible: modifier.
+
+2021-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102496
+ * name-lookup.c (push_local_extern_decl_alias): Return early even for
+ tls vars with non-dependent type when processing_template_decl. For
+ CP_DECL_THREAD_LOCAL_P vars call set_decl_tls_model on alias.
+
+2021-09-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102535
+ * method.c (is_xible_helper): Don't exit early for multi-arg
+ ctors in C++20.
+
+2021-09-30 Patrick Palka <ppalka@redhat.com>
+
+ * parser.c (cp_parser_trait_expr): Call nreverse on the reversed
+ list of trailing arguments.
+
+2021-09-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95567
+ * method.c (build_comparison_op): Skip DECL_VIRTUAL_P fields.
+
+2021-09-28 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99909
+ * pt.c (coerce_template_template_parms): Keep
+ processing_template_decl set around the call to unify as well.
+
+2021-09-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/102454
+ * coroutines.cc (analyze_fn_parms): Clean up synthetic names for
+ unnamed function params.
+ (morph_fn_to_coro): Do not try to set a guard variable for param
+ DTORs in the ramp, unless we have exceptions active.
+
+2021-09-27 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102479
+ * pt.c (rewrite_template_parm): Handle single-level tsubst_args.
+ Avoid a tree cycle when assigning the DECL_TEMPLATE_PARMS for a
+ rewritten ttp.
+ (alias_ctad_tweaks): Set current_template_parms accordingly.
+
+2021-09-23 Michel Morin <mimomorin@gmail.com>
+
+ * parser.c (cp_keyword_starts_decl_specifier_p): Do not
+ handle RID_ATTRIBUTE.
+ (cp_parser_constructor_declarator_p): Remove now-redundant
+ checks.
+ (cp_parser_lambda_declarator_opt): Likewise.
+
+2021-09-23 Michel Morin <mimomorin@gmail.com>
+
+ PR c++/77565
+ * parser.c (cp_keyword_starts_decl_specifier_p): Handle more
+ decl-specifiers (typedef/inline/cv/explicit/virtual/friend).
+
+2021-09-23 Patrick Palka <ppalka@redhat.com>
+
+ * ptree.c (cxx_print_decl): Dump the DECL_TEMPLATE_RESULT of
+ a TEMPLATE_DECL. Dump the DECL_TEMPLATE_INFO rather than just
+ printing its pointer value.
+
+2021-09-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102413
+ * parser.c (cp_parser_omp_directive_args): Diagnose if omp::directive
+ is not followed by a balanced token sequence starting with open paren.
+
+2021-09-22 Patrick Palka <ppalka@redhat.com>
+
+ DR 2446
+ PR c++/102412
+ * constexpr.c (cxx_eval_constant_expression)
+ <case TEMPLATE_ID_EXPR>: Check value_dependent_expression_p
+ instead of processing_template_decl.
+ * pt.c (value_dependent_expression_p) <case TEMPLATE_ID_EXPR>:
+ Return true only if any_dependent_template_arguments_p.
+ (instantiation_dependent_r) <case CALL_EXPR>: Remove this case.
+ <case TEMPLATE_ID_EXPR>: Likewise.
+
+2021-09-22 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_clause_allocate): Parse allocate clause
+ modifiers.
+ * semantics.c (finish_omp_clauses) <OMP_CLAUSE_ALLOCATE>: Perform
+ semantic analysis of OMP_CLAUSE_ALLOCATE_ALIGN.
+ * pt.c (tsubst_omp_clauses) <case OMP_CLAUSE_ALLOCATE>: Handle
+ also OMP_CLAUSE_ALLOCATE_ALIGN.
+
+2021-09-22 Barrett Adair <barrettellisadair@gmail.com>
+
+ * pt.c (find_parm_usage_r): New walk_tree callback to find func
+ parms.
+ (any_template_arguments_need_structural_equality_p): New special
+ case.
+
+2021-09-21 wangpc <pc.wang@linux.alibaba.com>
+
+ * decl.c (start_decl_1): Move verify_type_context to ...
+ (cp_finish_decl): ... to here.
+
+2021-09-18 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_clause_order): Parse unconstrained
+ and reproducible modifiers.
+ (OMP_DISTRIBUTE_CLAUSE_MASK): Add order clause.
+
+2021-09-18 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_clause_default): Handle private and
+ firstprivate arguments, adjust diagnostics on unknown argument.
+ * cp-gimplify.c (cxx_omp_finish_clause): Handle OMP_CLAUSE_PRIVATE.
+
+2021-09-18 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (dependentish_scope_p): Declare.
+ * pt.c (dependentish_scope_p): New.
+ * parser.c (cp_parser_lookup_name): Return a TYPENAME_TYPE
+ for lookup of a type in a dependent object.
+ (cp_parser_template_id): Handle TYPENAME_TYPE.
+ (cp_parser_template_name): If we're looking for a type,
+ a name followed by < names a template.
+
+2021-09-18 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h: Fix typo in LANG_FLAG list.
+
+2021-09-17 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-tree.h (finish_omp_atomic): Add r and weak arguments.
+ * parser.c (cp_parser_omp_atomic): Update function comment for
+ OpenMP 5.1 atomics, parse OpenMP 5.1 atomics and fail, compare and
+ weak clauses.
+ * semantics.c (finish_omp_atomic): Add r and weak arguments, handle
+ them, handle COND_EXPRs.
+ * pt.c (tsubst_expr): Adjust for COND_EXPR forms that
+ finish_omp_atomic can now produce.
+
+2021-09-16 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/98486
+ * constraint.cc (get_normalized_constraints_from_decl): Always
+ look up constraints using the most general template.
+ * decl.c (grokdeclarator): Set constraints on a static data
+ member template.
+ * pt.c (determine_specialization): Check constraints on a
+ variable template.
+
+2021-09-16 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (await_statement_walker): Code cleanups.
+
+2021-09-16 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (cxx_eval_outermost_constant_expr): Use
+ protected_set_expr_location.
+
+2021-09-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/101904
+ * call.c (build_user_type_conversion_1): Add tf_conv to complain.
+ (add_candidates): When in a SFINAE context, instead of adding a
+ candidate to bad_fns just mark it unviable.
+
+2021-09-15 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (parsing_function_declarator): Declare.
+ * name-lookup.c (set_decl_context_in_fn): Use it.
+ * parser.c (cp_parser_direct_declarator): Use it.
+ (parsing_function_declarator): New.
+
+2021-09-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88578
+ PR c++/102295
+ * typeck2.c (split_nonconstant_init_1): Don't throw away empty
+ initializers of flexible array members if they have non-zero type
+ size.
+
+2021-09-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102050
+ * decl.c (grok_special_member_properties): Set
+ TYPE_HAS_COPY_CTOR, TYPE_HAS_DEFAULT_CONSTRUCTOR
+ and TYPE_HAS_LIST_CTOR independently from each other.
+
+2021-09-15 Jason Merrill <jason@redhat.com>
+
+ * decl.c (cxx_init_decl_processing): Only warn about odd
+ interference sizes if they were specified with --param.
+
+2021-09-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/48396
+ * cp-tree.h (enum cp_tree_index): Remove CPTI_TYPE_INFO_PTR_TYPE.
+ (type_info_ptr_type): Remove.
+ * rtti.c (init_rtti_processing): Don't predeclare std::type_info.
+ (typeid_ok_p): Check for null const_type_info_type_node.
+ (type_info_ptr_type, get_void_tinfo_ptr): New fns.
+ (get_tinfo_decl_dynamic, get_tinfo_ptr): Use them.
+ (ptr_initializer, ptm_initializer, get_pseudo_ti_init): Use them.
+ (get_tinfo_desc): Use const_ptr_type_node.
+
+2021-09-15 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_template_name): Move object type.
+ (cp_parser_pre_parsed_nested_name_specifier): Likewise.
+
+2021-09-15 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_unqualified_id): Only complain about ~A<T> in
+ a declarator.
+
+2021-09-14 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (struct param_info): Add copy_var.
+ (build_actor_fn): Use simplified param references.
+ (register_param_uses): Likewise.
+ (rewrite_param_uses): Likewise.
+ (analyze_fn_parms): New function.
+ (coro_rewrite_function_body): Add proxies for the fn
+ parameters to the outer bind scope of the rewritten code.
+ (morph_fn_to_coro): Use simplified version of param ref.
+
+2021-09-14 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (coro_resume_fn_id, coro_destroy_fn_id,
+ coro_promise_id, coro_frame_needs_free_id, coro_resume_index_id,
+ coro_self_handle_id, coro_actor_continue_id,
+ coro_frame_i_a_r_c_id): New.
+ (coro_init_identifiers): Initialize new name identifiers.
+ (coro_promise_type_found_p): Use pre-built identifiers.
+ (struct await_xform_data): Remove unused fields.
+ (transform_await_expr): Delete code that is now unused.
+ (build_actor_fn): Simplify interface, use pre-built identifiers and
+ remove transforms that are no longer needed.
+ (build_destroy_fn): Use revised field names.
+ (register_local_var_uses): Use pre-built identifiers.
+ (coro_rewrite_function_body): Simplify interface, use pre-built
+ identifiers. Generate proxy vars in the outer bind expr scope for the
+ implementation state that we wish to expose.
+ (morph_fn_to_coro): Adjust comments for new variable names, use pre-
+ built identifiers. Remove unused code to generate frame entries for
+ the implementation state. Adjust call for build_actor_fn.
+
+2021-09-14 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/102163
+ * constexpr.c (cxx_eval_call_expression): After evaluating a
+ subobject constructor call for an empty union member, produce a
+ side effect that makes sure the member gets activated.
+
+2021-09-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102295
+ * decl.c (layout_var_decl): For aggregates ending with a flexible
+ array member, add the size of the initializer for that member to
+ DECL_SIZE and DECL_SIZE_UNIT.
+
+2021-09-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/102305
+ * method.c (is_xible_helper): Call complete_type on to.
+
+2021-09-14 Jason Merrill <jason@redhat.com>
+
+ * decl.c (cxx_init_decl_processing): Don't warn if L1 cache line
+ size is smaller than maxalign.
+
+2021-09-13 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (maybe_warn_about_constant_value):
+ Complain about std::hardware_destructive_interference_size.
+ (cxx_eval_constant_expression): Call it.
+ * decl.c (cxx_init_decl_processing): Check
+ --param *-interference-size values.
+
+2021-09-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/101764
+ * cp-tree.h (PACK_EXPANSION_FORCE_EXTRA_ARGS_P): New accessor
+ macro.
+ * pt.c (has_extra_args_mechanism_p): New function.
+ (find_parameter_pack_data::found_extra_args_tree_p): New data
+ member.
+ (find_parameter_packs_r): Set ppd->found_extra_args_tree_p
+ appropriately.
+ (make_pack_expansion): Set PACK_EXPANSION_FORCE_EXTRA_ARGS_P if
+ ppd.found_extra_args_tree_p.
+ (use_pack_expansion_extra_args_p): Return true if there were
+ unsubstituted packs and PACK_EXPANSION_FORCE_EXTRA_ARGS_P.
+ (tsubst_pack_expansion): Pass the pack expansion to
+ use_pack_expansion_extra_args_p.
+
+2021-09-10 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_atomic): Allow acq_rel on atomic read/write
+ and acq_rel/acquire clauses on update.
+ * semantics.c (finish_omp_atomic): Adjust c_finish_omp_atomic caller.
+
+2021-09-08 Richard Biener <rguenther@suse.de>
+
+ PR c++/102228
+ * cp-tree.h (ANON_AGGR_TYPE_FIELD): New define.
+ * decl.c (fixup_anonymous_aggr): Wipe RTTI info put in
+ place on invalid code.
+ * decl2.c (reset_type_linkage): Guard CLASSTYPE_TYPEINFO_VAR
+ access.
+ * module.cc (trees_in::read_class_def): Likewise. Reconstruct
+ ANON_AGGR_TYPE_FIELD.
+ * semantics.c (finish_member_declaration): Populate
+ ANON_AGGR_TYPE_FIELD for anon aggregate typed members.
+ * typeck.c (lookup_anon_field): Remove DFS search and return
+ ANON_AGGR_TYPE_FIELD directly.
+
+2021-09-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/100495
+ * constexpr.c (maybe_save_constexpr_fundef): Save body even for
+ constexpr deleting dtors.
+ (cxx_eval_call_expression): Don't use DECL_CLONED_FUNCTION for
+ deleting dtors.
+
+2021-09-07 Marcel Vollweiler <marcel@codesourcery.com>
+
+ * parser.c (cp_parser_omp_flush): Parse 'seq_cst' clause on 'flush'
+ directive.
+ * semantics.c (finish_omp_flush): Handle MEMMODEL_SEQ_CST.
+
+2021-09-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (register_local_var_uses): Do not mangle
+ frame entries for the outermost scope. Record the outer
+ scope as nesting depth 0.
+
+2021-09-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (coro_build_artificial_var): New.
+ (build_actor_fn): Use var builder, rename vars to use
+ implementation namespace.
+ (coro_rewrite_function_body): Likewise.
+ (morph_fn_to_coro): Likewise.
+
+2021-09-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (transform_local_var_uses): Record
+ frame offset expressions as DECL_VALUE_EXPRs instead of
+ rewriting them.
+
+2021-09-03 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/101904
+ * call.c (build_this_conversion): New function, split out from
+ add_function_candidate.
+ (add_function_candidate): New parameter shortcut_bad_convs.
+ Document it. Use build_this_conversion. Stop at the first bad
+ argument conversion when shortcut_bad_convs is true.
+ (add_template_candidate_real): New parameter shortcut_bad_convs.
+ Use build_this_conversion to check the 'this' conversion before
+ attempting deduction. When the rejection reason code is
+ rr_bad_arg_conversion, pass -1 instead of 0 as the viable
+ parameter to add_candidate. Pass 'convs' to add_candidate.
+ (add_template_candidate): New parameter shortcut_bad_convs.
+ (add_template_conv_candidate): Pass false as shortcut_bad_convs
+ to add_template_candidate_real.
+ (add_candidates): Prefer to shortcut bad conversions during
+ overload resolution under the assumption that we'll eventually
+ see a strictly viable candidate. If this assumption turns out
+ to be false, re-process the non-strictly viable candidates
+ without shortcutting those bad conversions.
+
+2021-09-03 Jason Merrill <jason@redhat.com>
+
+ * pt.c (limit_bad_template_recursion): Suppress -Wunused for decls
+ we decide not to instantiate.
+
+2021-09-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/102024
+ * class.c (build_base_field): Use SET_DECL_FIELD_ABI_IGNORED
+ instead of writing to DECL_FIELD_ABI_IGNORED.
+ (layout_class_type): Likewise. In the place where zero-width
+ bitfields used to be removed, use
+ SET_DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD on those fields instead.
+
+2021-09-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * call.c (build_over_call): Handle unavailable state in addition to
+ deprecation.
+ * class.c (type_build_ctor_call): Likewise.
+ (type_build_dtor_call): Likewise.
+ * cp-tree.h: Rename cp_warn_deprecated_use to
+ cp_handle_deprecated_or_unavailable.
+ * decl.c (duplicate_decls): Merge unavailability.
+ (grokdeclarator): Handle unavailability in addition to deprecation.
+ (type_is_unavailable): New.
+ (grokparms): Handle unavailability in addition to deprecation.
+ * decl.h (enum deprecated_states): Add
+ UNAVAILABLE_DEPRECATED_SUPPRESS.
+ * decl2.c (cplus_decl_attributes): Propagate unavailability to
+ templates.
+ (cp_warn_deprecated_use): Rename to ...
+ (cp_handle_deprecated_or_unavailable): ... this and amend to handle
+ the unavailable case. It remains a warning in the case of deprecation
+ but becomes an error in the case of unavailability.
+ (cp_warn_deprecated_use_scopes): Handle unavailability.
+ (mark_used): Likewise.
+ * parser.c (cp_parser_template_name): Likewise.
+ (cp_parser_template_argument): Likewise.
+ (cp_parser_parameter_declaration_list): Likewise.
+ * typeck.c (build_class_member_access_expr): Likewise.
+ (finish_class_member_access_expr): Likewise.
+ * typeck2.c (build_functional_cast_1): Likewise.
+
+2021-09-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (build_actor_fn): Add begin/finish clauses
+ to the initial test in the actor function.
+
+2021-09-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (await_statement_walker): Use build_stmt and
+ add_stmt instead of build1 and finish_expr_stmt.
+
+2021-08-31 Jason Merrill <jason@redhat.com>
+
+ * coroutines.cc (flatten_await_stmt): Fix copyo.
+ * decl.c (reshape_init_class): Simplify.
+ * module.cc (module_state::read_language): Add null check.
+ * parser.c (build_range_temp): Avoid type_uses_auto.
+ (cp_parser_class_specifier_1): Add null check.
+
+2021-08-31 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/12672
+ * call.c (rejection_reason::call_varargs_p): Rename this
+ previously unused member to ...
+ (rejection_reason::least_p): ... this.
+ (arity_rejection): Add least_p parameter.
+ (add_template_candidate_real): When there are explicit
+ template arguments, check that the arity of the call agrees with
+ the arity of the function before attempting deduction.
+ (print_arity_information): Add least_p parameter.
+ (print_z_candidate): Adjust call to print_arity_information.
+
+2021-08-31 Martin Sebor <msebor@redhat.com>
+
+ * parser.c (cp_parser_selection_statement): Use direct initialization
+ instead of copy.
+
+2021-08-31 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (explain_invalid_constexpr_fn): Use iloc_sentinel.
+
+2021-08-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/92193
+ * cp-tree.h (FNDECL_MANIFESTLY_CONST_EVALUATED): New.
+ * constexpr.c (cxx_eval_call_expression): Set it.
+ * pt.c (neglectable_inst_p): Check it.
+
+2021-08-31 Marcel Vollweiler <marcel@codesourcery.com>
+
+ * parser.c (cp_parser_omp_clause_device): Parse device-modifiers 'device_num'
+ and 'ancestor' in 'target device' clauses.
+ * semantics.c (finish_omp_clauses): Error handling. Constant device ids must
+ evaluate to '1' if 'ancestor' is used.
+
+2021-08-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/96286
+ * cp-tree.h (struct lang_type): Add erroneous bit-field.
+ (CLASSTYPE_ERRONEOUS): New.
+ * pt.c (limit_bad_template_recursion): Check it.
+ (instantiate_class_template_1): Set it.
+
+2021-08-30 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (cxx_eval_outermost_constant_expr): Copy
+ expr location to result.
+
+2021-08-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/101460
+ * cp-tree.h (cxx_constant_value_sfinae): Declare.
+ * constexpr.c (cxx_constant_value_sfinae): New.
+ * pt.c (fold_targs_r, maybe_fold_fn_template_args): New.
+ (tsubst_copy_and_build) [CALL_EXPR]: Call
+ maybe_fold_fn_template_args.
+
+2021-08-30 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_simple_requirement): Warn about missing
+ requires.
+
+2021-08-27 Jason Merrill <jason@redhat.com>
+
+ * typeck2.c (build_x_arrow): Do set TREE_TYPE when operand is
+ a dependent pointer.
+
2021-08-25 Andrew Pinski <apinski@marvell.com>
PR c++/66590