]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/cp/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / cp / ChangeLog
index 8d14d38bf777ffdfa2e841507c02be528dabedc8..72e099a0d37a319c178a40a2d4907b81c47e1c08 100644 (file)
+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
+       * cp-objcp-common.c (cxx_block_may_fallthru): Handle
+       CLEANUP_STMT for the case which will be try/finally.
+
+2021-08-25  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/102019
+       * init.c (build_value_init_noctor): Ignore unnamed zero-width
+       bitfields.
+
+2021-08-23  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_clause_num_tasks,
+       cp_parser_omp_clause_grainsize): Parse the optional strict: modifier.
+
+2021-08-20  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_handle_statement_omp_attributes): Determine if
+       PRAGMA_OMP_ERROR directive is C_OMP_DIR_STANDALONE.
+       (cp_parser_omp_error): New function.
+       (cp_parser_pragma): Handle PRAGMA_OMP_ERROR.
+
+2021-08-20  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_clause_depend_sink): Reject spurious
+       comma at the end of list.  Don't parse closing paren here...
+       (cp_parser_omp_clause_depend): ... but here instead.
+
+2021-08-19  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101803
+       * cp-tree.h (CONSTRUCTOR_IS_PAREN_INIT): Clarify comment.
+
+2021-08-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_requires): Don't call cp_lexer_nth_token_is
+       and optionally consume token if current token is CPP_EOF,
+       CPP_PRAGMA_EOL or CPP_CLOSE_PAREN.
+
+2021-08-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_nothing): Use cp_parser_require_pragma_eol
+       instead of cp_parser_skip_to_pragma_eol.
+
+2021-08-18  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101344
+       PR c++/101803
+       * cp-tree.h (CONSTRUCTOR_BRACES_ELIDED_P): Define.
+       * decl.c (reshape_init_r): Set it.
+       * pt.c (collect_ctor_idx_types): Recurse into a sub-CONSTRUCTOR
+       iff CONSTRUCTOR_BRACES_ELIDED_P.
+
+2021-08-18  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101883
+       * pt.c (convert_template_argument): Pass LOOKUP_IMPLICIT to
+       do_auto_deduction.
+
+2021-08-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_nothing): New function.
+       (cp_parser_pragma): Handle PRAGMA_OMP_NOTHING.
+
+2021-08-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_ordered): Return true instead of
+       false after emitting errors that the directive is not allowed in
+       pragma_stmt context.
+       (cp_parser_omp_target_update): Likewise.
+       (cp_parser_omp_cancellation_point): Change return type from void to
+       bool, return false if the directive should be ignored in pragma_stmt
+       contexts.
+       (cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data):
+       Change return type from tree to bool, return false if the
+       directive should be ignored in pragma_stmt contexts.
+       (cp_parser_omp_target): Adjust callers of cp_parser_omp_target_*_data,
+       return their result directly.
+       (cp_parser_pragma): For PRAGMA_OMP_CANCELLATION_POINT return what
+       cp_parser_omp_cancellation_point returned.  Return true instead of
+       false after emitting errors that the directive is not allowed in
+       pragma_stmt context.
+
+2021-08-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/101539
+       * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_LAYOUT_COMPATIBLE.
+       (enum cp_built_in_function): Add CP_BUILT_IN_IS_CORRESPONDING_MEMBER.
+       (fold_builtin_is_corresponding_member, next_common_initial_seqence,
+       layout_compatible_type_p): Declare.
+       * parser.c (cp_parser_primary_expression): Handle
+       RID_IS_LAYOUT_COMPATIBLE.
+       (cp_parser_trait_expr): Likewise.
+       * cp-objcp-common.c (names_builtin_p): Likewise.
+       * constraint.cc (diagnose_trait_expr): Handle
+       CPTK_IS_LAYOUT_COMPATIBLE.
+       * decl.c (cxx_init_decl_processing): Register
+       __builtin_is_corresponding_member builtin.
+       * constexpr.c (cxx_eval_builtin_function_call): Handle
+       CP_BUILT_IN_IS_CORRESPONDING_MEMBER builtin.
+       * semantics.c (is_corresponding_member_union,
+       is_corresponding_member_aggr, fold_builtin_is_corresponding_member):
+       New functions.
+       (trait_expr_value): Handle CPTK_IS_LAYOUT_COMPATIBLE.
+       (finish_trait_expr): Likewise.
+       * typeck.c (next_common_initial_seqence, layout_compatible_type_p):
+       New functions.
+       * cp-gimplify.c (cp_gimplify_expr): Fold
+       CP_BUILT_IN_IS_CORRESPONDING_MEMBER.
+       (cp_fold): Likewise.
+       * tree.c (builtin_valid_in_constant_expr_p): Handle
+       CP_BUILT_IN_IS_CORRESPONDING_MEMBER.
+       * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
+       CPTK_IS_LAYOUT_COMPATIBLE.
+       * class.c (remove_zero_width_bit_fields): Remove.
+       (layout_class_type): Don't call it.
+
+2021-08-17  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (OMP_SCOPE_CLAUSE_MASK): Define.
+       (cp_parser_omp_scope): New function.
+       (cp_parser_omp_construct, cp_parser_pragma): Handle PRAGMA_OMP_SCOPE.
+       * pt.c (tsubst_expr): Handle OMP_SCOPE.
+
+2021-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_clause_name): Parse filter clause name.
+       (cp_parser_omp_clause_filter): New function.
+       (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FILTER.
+       (OMP_MASKED_CLAUSE_MASK): Define.
+       (cp_parser_omp_masked): New function.
+       (cp_parser_omp_parallel): Handle parallel masked.
+       (cp_parser_omp_construct, cp_parser_pragma): Handle PRAGMA_OMP_MASKED.
+       * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_FILTER.
+       * pt.c (tsubst_omp_clauses): Likewise.
+       (tsubst_expr): Handle OMP_MASKED.
+
+2021-08-12  Sergei Trofimovich  <siarheit@google.com>
+
+       PR c++/101219
+       * pt.c (tsubst_copy_and_build): Use build_ptrmemfunc_access_expr
+       to construct ptrmemfunc expression instantiation.
+
+2021-08-12  Tobias Burnus  <tobias@codesourcery.com>
+
+       * parser.c (cp_parser_omp_clause_proc_bind): Accept
+       'primary' as alias for 'master'.
+
+2021-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * cp-tree.h (omp_declare_target_attr): New type.
+       (struct saved_scope): Change type of omp_declare_target_attribute
+       from int to vec<omp_declare_target_attr, va_gc> * and move it.
+       * parser.c (cp_parser_omp_declare_target): Instead of
+       incrementing scope_chain->omp_declare_target_attribute, push
+       a struct containing parser->lexer->in_omp_attribute_pragma to
+       the vector.
+       (cp_parser_omp_end_declare_target): Instead of decrementing
+       scope_chain->omp_declare_target_attribute, pop a structure
+       from it.  Diagnose mismatching declare target vs.
+       end declare target syntax.
+       * semantics.c (finish_translation_unit): Use vec_safe_length
+       and vec_safe_truncate on scope_chain->omp_declare_target_attributes.
+       * decl2.c (cplus_decl_attributes): Use vec_safe_length
+       on scope_chain->omp_declare_target_attributes.
+
+2021-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_lambda_body): Add temp overrides
+       for parser->{omp_declare_simd,oacc_routine,omp_attrs_forbidden_p}.
+       (cp_parser_statement): Restore parser->omp_attrs_forbidden_p for
+       cp_parser_declaration_statement.
+       (cp_parser_default_argument): Add temp override for
+       parser->omp_attrs_forbidden_p.
+       (cp_parser_late_parsing_omp_declare_simd): Diagnose declare simd
+       or declare variant in attribute syntax on a declaration immediately
+       following an OpenMP construct in pragma syntax.
+
+2021-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/94162
+       * method.c (cat_tag_for): Return cc_last for !CLASS_TYPE_P
+       or for classes not in std namespace.
+
+2021-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * name-lookup.c (finish_using_directive): Diagnose omp::directive
+       or omp::sequence attributes on using-directive.
+
+2021-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_block_declaration): Call
+       cp_parser_using_directive for C++11 attributes followed by
+       using namespace tokens.
+       (cp_parser_using_directive): Parse C++11 attributes at the start
+       of the directive rather than at the end, only parse GNU attributes
+       at the end.
+
+2021-08-12  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101663
+       * constexpr.c (cxx_eval_store_expression): Handle the lval=true
+       case in the early exit code path for empty stores with mismatched
+       types.
+
+2021-08-11  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101725
+       DR 2082
+       * cp-tree.h (unevaluated_p): Return true for REQUIRES_EXPR.
+       * decl.c (local_variable_p_walkfn): Don't walk into unevaluated
+       operands.
+       * parser.c (cp_parser_primary_expression) <case CPP_NAME>: Never
+       reject uses of local variables in unevaluated contexts.
+       * tree.c (cp_walk_subtrees) <case REQUIRES_EXPR>: Increment
+       cp_unevaluated_operand.  Use cp_walk_tree directly instead of
+       WALK_SUBTREE to avoid the goto.  Use REQUIRES_EXPR_REQS instead
+       of TREE_OPERAND directly.
+
+2021-08-11  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/101786
+       * decl2.c (var_defined_without_dynamic_init): Return true for
+       DECL_DECLARED_CONSTINIT_P with complete type and trivial destructor.
+
+2021-08-11  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/79501
+       * parser.c (maybe_adjust_declarator_for_dguide): New, split
+       out from ...
+       (cp_parser_init_declarator): ... here.
+       (cp_parser_member_declaration): Use it.
+
+2021-08-11  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/89062
+       * parser.c (cp_parser_parameter_declaration_list): Don't call
+       grokdeclarator if cp_parser_error_occurred.
+       (cp_parser_parameter_declaration): Simulate an error if we see
+       the beginning of a CTAD form, i.e. if we see an opening brace
+       after the decl-specifier-seq and the type is a CTAD placeholder.
+
+2021-08-10  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_member_declaration): Move odsd declaration
+       before cp_parser_using_declaration call to avoid errors with
+       GCC 4.8 to 6.
+
+2021-08-10  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.h (struct cp_omp_declare_simd_data): Remove
+       in_omp_attribute_pragma and clauses members, add loc and attribs.
+       (struct cp_oacc_routine_data): Remove loc member, add clauses
+       member.
+       * parser.c (cp_finalize_omp_declare_simd): New function.
+       (cp_parser_handle_statement_omp_attributes): Mention in
+       function comment the function is used also for
+       attribute-declaration.
+       (cp_parser_handle_directive_omp_attributes): New function.
+       (cp_parser_statement): Don't call
+       cp_parser_handle_statement_omp_attributes if statement doesn't
+       have attribute-specifier-seq at the beginning at all or if
+       if those attributes don't appertain to the statement.
+       (cp_parser_simple_declaration): Call
+       cp_parser_handle_directive_omp_attributes and
+       cp_finalize_omp_declare_simd.
+       (cp_parser_explicit_instantiation): Likewise.
+       (cp_parser_init_declarator): Initialize prefix_attributes
+       only after parsing declarators.
+       (cp_parser_direct_declarator): Call
+       cp_parser_handle_directive_omp_attributes and
+       cp_finalize_omp_declare_simd.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_single_declaration): Likewise.
+       (cp_parser_omp_declare_simd): Don't initialize
+       data.in_omp_attribute_pragma, instead initialize
+       data.attribs[0] and data.attribs[1].
+       (cp_finish_omp_declare_variant): Remove
+       in_omp_attribute_pragma argument, instead use
+       parser->lexer->in_omp_attribute_pragma.
+       (cp_parser_late_parsing_omp_declare_simd): Adjust
+       cp_finish_omp_declare_variant caller.  Handle attribute-syntax
+       declare simd/variant.
+
+2021-08-06  Tamar Christina  <tamar.christina@arm.com>
+
+       * cp-objcp-common.h (cxx_simulate_enum_decl): Pass vec<> by pointer.
+       * decl.c (cxx_simulate_enum_decl): Likewise.
+
+2021-08-04  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/101759
+       * parser.c (cp_parser_default_argument): Temporarily override
+       parser->omp_declare_simd and parser->oacc_routine to NULL.
+
+2021-08-02  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/100828
+       * logic.cc (formula::formula): Use emplace_back instead of
+       push_back.
+       (formula::branch): Insert a copy of m_current directly after
+       m_current instead of at the end of the list.
+       (formula::erase): Define.
+       (decompose_formula): Remove.
+       (decompose_antecedents): Remove.
+       (decompose_consequents): Remove.
+       (derive_proofs): Remove.
+       (max_problem_size): Remove.
+       (diagnose_constraint_size): Remove.
+       (subsumes_constraints_nonnull): Rewrite directly in terms of
+       decompose_clause and derive_proof, interleaving decomposition
+       with implication checking.  Remove limit on constraint complexity.
+       Use formula::erase to free the current clause before moving on to
+       the next one.
+
+2021-07-31  Jason Merrill  <jason@redhat.com>
+
+       PR c++/96636
+       * decl.c (fixup_anonymous_aggr): Clear TYPE_NEEDS_CONSTRUCTING
+       after error.
+
+2021-07-31  Jason Merrill  <jason@redhat.com>
+
+       * ptree.c (cxx_print_type) [TYPE_PACK_EXPANSION]: Also print
+       PACK_EXPANSION_PATTERN.
+
+2021-07-31  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_declaration): Handle OpenMP directives
+       in attribute-declaration.
+
+2021-07-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/101539
+       * cp-tree.h (enum cp_trait_kind): Add
+       CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF.
+       (enum cp_built_in_function): Add
+       CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS.
+       (fold_builtin_is_pointer_inverconvertible_with_class): Declare.
+       * parser.c (cp_parser_primary_expression): Handle
+       RID_IS_POINTER_INTERCONVERTIBLE_BASE_OF.
+       (cp_parser_trait_expr): Likewise.
+       * cp-objcp-common.c (names_builtin_p): Likewise.
+       * constraint.cc (diagnose_trait_expr): Handle
+       CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF.
+       * decl.c (cxx_init_decl_processing): Register
+       __builtin_is_pointer_interconvertible_with_class builtin.
+       * constexpr.c (cxx_eval_builtin_function_call): Handle
+       CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS builtin.
+       * semantics.c (pointer_interconvertible_base_of_p,
+       first_nonstatic_data_member_p,
+       fold_builtin_is_pointer_inverconvertible_with_class): New functions.
+       (trait_expr_value): Handle CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF.
+       (finish_trait_expr): Likewise.  Formatting fix.
+       * cp-gimplify.c (cp_gimplify_expr): Fold
+       CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS.  Call
+       fndecl_built_in_p just once.
+       (cp_fold): Likewise.
+       * tree.c (builtin_valid_in_constant_expr_p): Handle
+       CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS.  Call
+       fndecl_built_in_p just once.
+       * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
+       CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF.
+
+2021-07-30  Jason Merrill  <jason@redhat.com>
+
+       * class.c (finish_struct_anon): Improve comment.
+       * decl.c (fixup_anonymous_aggr): Reject anonymous struct
+       with bases.
+
+2021-07-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_statement): Rollback attributes not just
+       when std_attrs is non-NULL, but whenever
+       cp_parser_std_attribute_spec_seq parsed any tokens.
+
+2021-07-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/101582
+       * parser.c (cp_parser_skip_std_attribute_spec_seq): Add a forward
+       declaration.
+       (cp_parser_declaration): Parse empty-declaration and
+       attribute-declaration.
+       (cp_parser_toplevel_declaration): Don't parse empty-declaration here.
+
+2021-07-28  Martin Sebor  <msebor@redhat.com>
+
+       * init.c: Include new header.
+
+2021-07-27  Marek Polacek  <polacek@redhat.com>
+
+       DR 1512
+       PR c++/99701
+       * cp-gimplify.c (cp_fold): Remove {LE,LT,GE,GT_EXPR} from
+       a switch.
+       * typeck.c (cp_build_binary_op): Reject ordered comparison
+       of two null pointers.
+
+2021-07-26  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.h (struct cp_lexer): Add orphan_p member.
+       * parser.c (cp_parser_statement): Don't change in_omp_attribute_pragma
+       upon restart from CPP_PRAGMA handling.  Fix up condition when a lexer
+       should be destroyed and adjust saved_tokens if it records tokens from
+       the to be destroyed lexer.
+       (cp_parser_omp_section_scan): New function.
+       (cp_parser_omp_scan_loop_body): Use it.  If
+       parser->lexer->in_omp_attribute_pragma, allow optional comma
+       after scan.
+       (cp_parser_omp_sections_scope): Use cp_parser_omp_section_scan.
+
+2021-07-23  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.h (struct cp_parser): Add omp_attrs_forbidden_p member.
+       * parser.c (cp_parser_handle_statement_omp_attributes): Diagnose
+       mixing of attribute and pragma syntax directives when seeing
+       omp::directive if parser->omp_attrs_forbidden_p or if attribute syntax
+       directives are followed by OpenMP pragma.
+       (cp_parser_statement): Clear parser->omp_attrs_forbidden_p after
+       the cp_parser_handle_statement_omp_attributes call.
+       (cp_parser_omp_structured_block): Add disallow_omp_attrs argument,
+       if true, set parser->omp_attrs_forbidden_p.
+       (cp_parser_omp_scan_loop_body, cp_parser_omp_sections_scope): Pass
+       false as disallow_omp_attrs to cp_parser_omp_structured_block.
+       (cp_parser_omp_parallel, cp_parser_omp_task): Set
+       parser->omp_attrs_forbidden_p.
+
+2021-07-21  Thomas Schwinge  <thomas@codesourcery.com>
+           Joseph Myers  <joseph@codesourcery.com>
+           Cesar Philippidis  <cesar@codesourcery.com>
+
+       * parser.c (cp_parser_omp_clause_name): Handle 'nohost'.
+       (cp_parser_oacc_all_clauses): Handle 'PRAGMA_OACC_CLAUSE_NOHOST'.
+       (OACC_ROUTINE_CLAUSE_MASK): Add 'PRAGMA_OACC_CLAUSE_NOHOST'.
+       * pt.c (tsubst_omp_clauses): Handle 'OMP_CLAUSE_NOHOST'.
+       * semantics.c (finish_omp_clauses): Likewise.
+
+2021-07-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/101516
+       * semantics.c (finish_omp_reduction_clause): Also call
+       complete_type_or_else and return true if it fails.
+
+2021-07-19  Iain Sandoe  <iain@sandoe.co.uk>
+
+       PR c++/95520
+       * coroutines.cc (struct coroutine_info): Add fields for
+       actor and destroy function decls.
+       (to_ramp): New.
+       (coro_get_ramp_function): New.
+       (coro_get_actor_function): New.
+       (coro_get_destroy_function): New.
+       (act_des_fn): Set up mapping between ramp, actor and
+       destroy functions.
+       (morph_fn_to_coro): Adjust interface to the builder for
+       helper function decls.
+       * cp-tree.h (DECL_ACTOR_FN, DECL_DESTROY_FN, DECL_RAMP_FN,
+       JOIN_STR): New.
+       * mangle.c (write_encoding): Handle coroutine helpers.
+       (write_unqualified_name): Handle lambda coroutine helpers.
+
+2021-07-16  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101233
+       * pt.c (alias_ctad_tweaks): Clear cp_unevaluated_operand for
+       substituting DECL_ARGUMENTS.
+
+2021-07-16  Patrick Palka  <ppalka@redhat.com>
+
+       DR 960
+       PR c++/99664
+       * search.c (check_final_overrider): Compare TYPE_REF_IS_RVALUE
+       when the return types are references.
+
+2021-07-16  Marek Polacek  <polacek@redhat.com>
+
+       * typeck2.c (check_narrowing): Don't suppress the pedantic error
+       in system headers.
+
+2021-07-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/101443
+       * cp-gimplify.c (cp_fold): For comparisons with NULLPTR_TYPE
+       operands, fold them right away to true or false.
+
+2021-07-15  Jason Merrill  <jason@redhat.com>
+
+       PR c++/101095
+       * cp-objcp-common.c (cp_common_init_ts): Mark types as types.
+       (cp_tree_size): Remove redundant entries.
+
+2021-07-14  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/88252
+       * cp-tree.h (TEMPLATE_TYPE_PARM_FOR_CLASS): Remove.
+       * pt.c (push_template_decl): Remove TEMPLATE_TYPE_PARM_FOR_CLASS
+       handling.
+       (redeclare_class_template): Likewise.
+       (forwarding_reference_p): Define.
+       (maybe_adjust_types_for_deduction): Use it instead.  Add 'tparms'
+       parameter.
+       (unify_one_argument): Pass tparms to
+       maybe_adjust_types_for_deduction.
+       (try_one_overload): Likewise.
+       (unify): Likewise.
+       (rewrite_template_parm): Remove TEMPLATE_TYPE_PARM_FOR_CLASS
+       handling.
+
+2021-07-14  Jason Merrill  <jason@redhat.com>
+
+       * class.c (struct find_final_overrider_data): Use auto_vec.
+       (find_final_overrider): Remove explicit release.
+       * coroutines.cc (process_conditional): Use auto_vec.
+       * cp-gimplify.c (struct cp_genericize_data): Use auto_vec.
+       (cp_genericize_tree): Remove explicit release.
+       * parser.c (cp_parser_objc_at_property_declaration): Use
+       auto_delete_vec.
+       * semantics.c (omp_reduction_lookup): Use auto_vec.
+
+2021-07-14  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/101371
+       * constexpr.c (cxx_eval_array_reference): Create a new .object
+       and .ctor for the non-aggregate non-scalar case too when
+       value-initializing.
+
+2021-07-12  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/79501
+       PR c++/100983
+       * decl.c (grokfndecl): Don't require that deduction guides are
+       declared at namespace scope.  Check that class-scope deduction
+       guides have the same access as the member class template.
+       (grokdeclarator): Pretend class-scope deduction guides are static.
+       * search.c (lookup_member): Don't use a BASELINK for (class-scope)
+       deduction guides.
+
+2021-07-10  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/82110
+       * init.c (build_aggr_init): Return error_mark_node if
+       expand_aggr_init_1 returns false.
+       (expand_default_init): Change return type to bool.  Return false
+       on error, true on success.
+       (expand_aggr_init_1): Likewise.
+
+2021-07-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/101098
+       * decl.c (function_requirements_equivalent_p): Only compare
+       trailing requirements on a specialization.
+
+2021-07-09  Iain Sandoe  <iain@sandoe.co.uk>
+
+       * coroutines.cc (build_actor_fn): Move common code to
+       act_des_fn.
+       (build_destroy_fn): Likewise.
+       (act_des_fn): Build the void return here.  Ensure that the
+       source location matches the original function.
+
+2021-07-09  Iain Sandoe  <iain@sandoe.co.uk>
+
+       * coroutines.cc
+       (coro_rewrite_function_body): Connect the replacement
+       function block to the block nest correctly.
+
+2021-07-09  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101181
+       * constraint.cc (tsubst_requires_expr): Pass complain/in_decl to
+       add_extra_args.
+       * cp-tree.h (add_extra_args): Add complain/in_decl parameters.
+       * pt.c (build_extra_args): Make a copy of args.
+       (add_extra_args): Add complain/in_decl parameters.  Enable the
+       code for handling the case where the extra arguments are
+       dependent.
+       (tsubst_pack_expansion): Pass complain/in_decl to
+       add_extra_args.
+       (tsubst_template_args): Handle missing template arguments.
+       (tsubst_expr) <case IF_STMT>: Pass complain/in_decl to
+       add_extra_args.
+
+2021-07-09  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101247
+       * pt.c (any_template_parm_r) <case TEMPLATE_DECL>: Just walk the
+       DECL_CONTEXT.
+
+2021-07-08  Martin Sebor  <msebor@redhat.com>
+
+       PR bootstrap/101372
+       * module.cc (identifier): Suppress warning.
+       (module_state::read_macro_maps): Remove warning suppression.
+       (module_state::install_macros): Ditto.
+
+2021-07-08  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/101087
+       * cp-tree.h (unevaluated_p): New.
+       * except.c (check_noexcept_r): Use it.  Don't walk into
+       unevaluated operands.
+
+2021-07-08  Martin Sebor  <msebor@redhat.com>
+
+       PR bootstrap/101374
+       * module.cc (module_state::read_macro_maps): Temporarily disable
+       -Warray-bounds.
+       (module_state::install_macros): Same.
+
+2021-07-06  Martin Sebor  <msebor@redhat.com>
+
+       * error.c (cp_printer):  Remove support for %G and %K.
+
+2021-07-02  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.h (struct cp_lexer): Add in_omp_attribute_pragma member.
+       (struct cp_omp_declare_simd_data): Likewise.
+       * cp-tree.h (enum cp_tree_index): Add CPTI_OMP_IDENTIFIER.
+       (omp_identifier): Define.
+       * parser.c (cp_parser_skip_to_pragma_eol): Handle
+       in_omp_attribute_pragma CPP_PRAGMA_EOL followed by CPP_EOF.
+       (cp_parser_require_pragma_eol): Likewise.
+       (struct cp_omp_attribute_data): New type.
+       (cp_parser_handle_statement_omp_attributes): New function.
+       (cp_parser_statement): Handle OpenMP directives in statement's
+       attribute-specifier-seq.
+       (cp_parser_omp_directive_args, cp_parser_omp_sequence_args): New
+       functions.
+       (cp_parser_std_attribute): Handle omp::directive and omp::sequence
+       attributes.
+       (cp_parser_omp_all_clauses): If in_omp_attribute_pragma, allow
+       a comma also before the first clause.
+       (cp_parser_omp_allocate): Likewise.
+       (cp_parser_omp_atomic): Likewise.
+       (cp_parser_omp_depobj): Likewise.
+       (cp_parser_omp_flush): Likewise.
+       (cp_parser_omp_ordered): Likewise.
+       (cp_parser_omp_declare_simd): Save in_omp_attribute_pragma
+       into struct cp_omp_declare_simd_data.
+       (cp_finish_omp_declare_variant): Add in_omp_attribute_pragma
+       argument.  If set, allow a comma also before match clause.
+       (cp_parser_late_parsing_omp_declare_simd): If in_omp_attribute_pragma,
+       allow a comma also before the first clause.  Adjust
+       cp_finish_omp_declare_variant caller.
+       (cp_parser_omp_declare_target): If in_omp_attribute_pragma, allow
+       a comma also before the first clause.
+       (cp_parser_omp_declare_reduction_exprs): Likewise.
+       (cp_parser_omp_requires): Likewise.
+       * decl.c (initialize_predefined_identifiers): Initialize
+       omp_identifier.
+       * decl2.c (cplus_decl_attributes): Reject omp::directive and
+       omp::sequence attributes.
+
+2021-07-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/101297
+       * parser.c (cp_parser_omp_atomic): Consume comma only if it
+       appears before a CPP_NAME.
+
+2021-07-02  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101247
+       * pt.c (any_template_parm_r) <case TEMPLATE_DECL>: Rewrite to
+       use common_enclosing_class and to not depend on the TREE_TYPE
+       of outer levels pointing to the corresponding primary template.
+
+2021-07-01  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101194
+       * constexpr.c (cxx_eval_array_reference): When the element type
+       is an empty type and the corresponding element is omitted, just
+       return an empty CONSTRUCTOR instead of attempting value
+       initialization.
+
+2021-07-01  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/96204
+       * pt.c (finish_template_variable): Pass the partially
+       instantiated template and its args to instantiate_template.
+       (instantiate_class_template_1): No need to call
+       push_nested_class and pop_nested_class around the call to
+       most_specialized_partial_spec.
+       (instantiate_template_1): Pass the partially instantiated
+       template to lookup_template_variable.
+       (most_specialized_partial_spec):  Use push_access_scope_guard
+       to set the access scope appropriately.  Use
+       deferring_access_check_sentinel to force access to get checked
+       immediately.
+       (instantiate_decl): Just pass the VAR_DECL to
+       most_specialized_partial_spec.
+
+2021-06-30  Patrick Palka  <ppalka@redhat.com>
+
+       * constraint.cc (get_normalized_constraints_from_decl): Use
+       push_access_scope_guard instead of push_nested_class_guard.
+       * cp-tree.h (struct push_nested_class_guard): Replace with ...
+       (struct push_access_scope_guard): ... this.
+       * pt.c (push_access_scope): When the argument corresponds to
+       a class type, push the class instead of its context.
+       (pop_access_scope): Adjust accordingly.
+
+2021-06-30  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/100975
+       DR 2397
+       * decl.c (create_array_type_for_decl): Allow array of auto.
+
+2021-06-29  Jason Merrill  <jason@redhat.com>
+
+       * pt.c (instantiate_decl): Only consider partial specializations of
+       actual variable templates.
+
+2021-06-26  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/96204
+       * pt.c (instantiate_class_template_1): Enter the scope of the
+       type when calling most_specialized_partial_spec.
+
+2021-06-26  Jason Merrill  <jason@redhat.com>
+
+       PR c++/101040
+       PR c++/97566
+       * class.c (is_empty_field): Handle null argument.
+       * constexpr.c (cxx_eval_bare_aggregate): Discard initializer
+       for empty field.
+
+2021-06-26  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/100752
+       * parser.c (cp_parser_declarator): Pass flags down to
+       cp_parser_declarator.  Also pass static_p/member_p.
+
+2021-06-25  Martin Sebor  <msebor@redhat.com>
+
+       * call.c (build_over_call): Replace direct uses of TREE_NO_WARNING
+       with warning_suppressed_p, suppress_warning, and copy_no_warning, or
+       nothing if not necessary.
+       (set_up_extended_ref_temp): Same.
+       * class.c (layout_class_type): Same.
+       * constraint.cc (constraint_satisfaction_value): Same.
+       * coroutines.cc (finish_co_await_expr): Same.
+       (finish_co_yield_expr): Same.
+       (finish_co_return_stmt): Same.
+       (build_actor_fn): Same.
+       (coro_rewrite_function_body): Same.
+       (morph_fn_to_coro): Same.
+       * cp-gimplify.c (genericize_eh_spec_block): Same.
+       (gimplify_expr_stmt): Same.
+       (cp_genericize_r): Same.
+       (cp_fold): Same.
+       * cp-ubsan.c (cp_ubsan_instrument_vptr): Same.
+       * cvt.c (cp_fold_convert): Same.
+       (convert_to_void): Same.
+       * decl.c (wrapup_namespace_globals): Same.
+       (grokdeclarator): Same.
+       (finish_function): Same.
+       (require_deduced_type): Same.
+       * decl2.c (no_linkage_error): Same.
+       (c_parse_final_cleanups): Same.
+       * except.c (expand_end_catch_block): Same.
+       * init.c (build_new_1): Same.
+       (build_new): Same.
+       (build_vec_delete_1): Same.
+       (build_vec_init): Same.
+       (build_delete): Same.
+       * method.c (defaultable_fn_check): Same.
+       * parser.c (cp_parser_fold_expression): Same.
+       (cp_parser_primary_expression): Same.
+       * pt.c (push_tinst_level_loc): Same.
+       (tsubst_copy): Same.
+       (tsubst_omp_udr): Same.
+       (tsubst_copy_and_build): Same.
+       * rtti.c (build_if_nonnull): Same.
+       * semantics.c (maybe_convert_cond): Same.
+       (finish_return_stmt): Same.
+       (finish_parenthesized_expr): Same.
+       (cp_check_omp_declare_reduction): Same.
+       * tree.c (build_cplus_array_type): Same.
+       * typeck.c (build_ptrmemfunc_access_expr): Same.
+       (cp_build_indirect_ref_1): Same.
+       (cp_build_function_call_vec): Same.
+       (warn_for_null_address): Same.
+       (cp_build_binary_op): Same.
+       (unary_complex_lvalue): Same.
+       (cp_build_modify_expr): Same.
+       (build_x_modify_expr): Same.
+       (convert_for_assignment): Same.
+
+2021-06-24  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/98832
+       * pt.c (maybe_aggr_guide): Handle alias templates appropriately.
+
+2021-06-24  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101182
+       * constraint.cc (evaluate_requires_expr): Adjust function comment.
+       * cp-gimplify.c (cp_genericize_r) <case REQUIRES_EXPR>: Move to ...
+       (cp_fold) <case REQUIRES_EXPR>: ... here.
+
+2021-06-24  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_omp_split_clauses): Pass C_ORT_OMP_TARGET instead of
+       C_ORT_OMP for clauses on target construct.
+       (OMP_TARGET_CLAUSE_MASK): Add in_reduction clause.
+       (cp_parser_omp_target): For non-combined target add
+       map (always, tofrom:) clauses for OMP_CLAUSE_IN_REDUCTION.  Pass
+       C_ORT_OMP_TARGET to finish_omp_clauses.
+       * semantics.c (handle_omp_array_sections_1): Adjust ort handling
+       for addition of C_ORT_OMP_TARGET and simplify, mapping clauses are
+       never present on C_ORT_*DECLARE_SIMD.
+       (handle_omp_array_sections): Likewise.
+       (finish_omp_clauses): Likewise.  Handle OMP_CLAUSE_IN_REDUCTION
+       on C_ORT_OMP_TARGET, set OMP_CLAUSE_MAP_IN_REDUCTION on
+       corresponding map clauses.
+       * pt.c (tsubst_expr): Pass C_ORT_OMP_TARGET instead of C_ORT_OMP for
+       clauses on target construct.
+
+2021-06-23  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/101174
+       * pt.c (push_access_scope): For artificial deduction guides,
+       set the access scope to that of the constructor.
+       (pop_access_scope): Likewise.
+       (build_deduction_guide): Don't set DECL_CONTEXT on the guide.
+
+2021-06-23  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/86439
+       * call.c (print_error_for_call_failure): Constify 'args' parameter.
+       (perform_dguide_overload_resolution): Define.
+       * cp-tree.h: (perform_dguide_overload_resolution): Declare.
+       * pt.c (do_class_deduction): Use perform_dguide_overload_resolution
+       instead of build_new_function_call.  Don't use tf_decltype or
+       set cp_unevaluated_operand.  Remove unnecessary NULL_TREE tests.
+
+2021-06-21  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/67302
+       * typeck.c (check_return_expr): Call maybe_undo_parenthesized_ref
+       sooner, before the NRVO handling.
+
+2021-06-21  Patrick Palka  <ppalka@redhat.com>
+
+       PR c++/80431
+       * tree.c (bot_replace): Use convert_to_base to build the
+       conversion to the (morally) virtual base.
+
+2021-06-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR inline-asm/100785
+       * typeck.c (cxx_mark_addressable): Diagnose trying to make
+       bit-fields addressable.
+
+2021-06-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/101106
+       * decl.c (duplicate_decls): Make 'deleted after first declaration'
+       pedwarn on by default.
+
+2021-06-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/101029
+       * init.c (build_vec_init): Preserve the type of base.
+
 2021-06-16  Jason Merrill  <jason@redhat.com>
 
        PR c++/101078