diff options
author | Jakub Jelinek <jakub@redhat.com> | 2022-01-03 10:18:16 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2022-01-03 10:18:16 +0100 |
commit | d04ae83244d346b95c36c2e3d39918548310f142 (patch) | |
tree | e43a3f46b8b840023c8e188f449fb989554c9a0d /gcc/cp | |
parent | 660e5834667a9efdb4d400dfb83caa48c9dd9f9b (diff) | |
download | gcc-d04ae83244d346b95c36c2e3d39918548310f142.zip gcc-d04ae83244d346b95c36c2e3d39918548310f142.tar.gz gcc-d04ae83244d346b95c36c2e3d39918548310f142.tar.bz2 |
Rotate ChangeLog files - part 1 - add ChangeLog-2021.
2022-01-03 Jakub Jelinek <jakub@redhat.com>
gcc/
* ChangeLog-2021: Rotate ChangeLog. New file.
gcc/ada/
* ChangeLog-2021: Rotate ChangeLog. New file.
gcc/cp/
* ChangeLog-2021: Rotate ChangeLog. New file.
gcc/d/
* ChangeLog-2021: Rotate ChangeLog. New file.
gcc/fortran/
* ChangeLog-2021: Rotate ChangeLog. New file.
gcc/testsuite/
* ChangeLog-2021: Rotate ChangeLog. New file.
libgfortran/
* ChangeLog-2021: Rotate ChangeLog. New file.
libstdc++-v3/
* ChangeLog-2021: Rotate ChangeLog. New file.
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog-2021 | 5512 |
1 files changed, 5512 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog-2021 b/gcc/cp/ChangeLog-2021 new file mode 100644 index 0000000..c577b82 --- /dev/null +++ b/gcc/cp/ChangeLog-2021 @@ -0,0 +1,5512 @@ +2021-12-20 Patrick Palka <ppalka@redhat.com> + + * call.c (build_new_method_call): Set + BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P on the pruned baselink. + * cp-tree.h (BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P): Define. + * pt.c (filter_memfn_lookup): New subroutine of tsubst_baselink. + (tsubst_baselink): Use filter_memfn_lookup on the new lookup + result when BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P is set on the + old baselink. Remove redundant BASELINK_P check. + * search.c (build_baselink): Set + BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P appropriately. + +2021-12-20 Patrick Palka <ppalka@redhat.com> + + * call.c (build_new_method_call): For a non-dependent call + expression inside a template, returning a templated tree + whose overload set contains just the selected function. + * semantics.c (finish_call_expr): Likewise. + +2021-12-19 Matthias Kretz <m.kretz@gsi.de> + + * module.cc (trees_out::get_merge_kind): NAMESPACE_DECLs also + cannot have a DECL_TEMPLATE_INFO. + +2021-12-19 Patrick Palka <ppalka@redhat.com> + + PR c++/94376 + * lambda.c (lambda_capture_field_type): Strip location wrappers + before checking for a capture proxy. + (is_capture_proxy): Assert that we don't see a location wrapper. + (mark_const_cap_r): Don't call is_constant_capture_proxy on a + location wrapper. + +2021-12-19 Patrick Palka <ppalka@redhat.com> + + PR c++/103714 + * constraint.cc (satisfy_declaration_constraints): Do + push_to_top_level and pop_from_top_level around the call to + satisfy_normalized_constraints. + +2021-12-17 Marek Polacek <polacek@redhat.com> + + PR c/103649 + * parser.c (cp_parser_declaration): Don't warn for attribute_ignored_p. + (cp_parser_std_attribute): Skip parsing of the attribute + arguments when the attribute is ignored. + +2021-12-17 Marek Polacek <polacek@redhat.com> + + PR c++/103749 + * decl.c (lookup_and_check_tag): Give an error when a class was + declared as template but no template header has been provided. + * pt.c (do_class_deduction): Don't deduce CLASSTYPE_ERRONEOUS + types. + +2021-12-17 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/100127 + * coroutines.cc (coro_rewrite_function_body): Handle initial + await expressions that try to produce a reference value. + +2021-12-17 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/100772 + * coroutines.cc (morph_fn_to_coro): Convert function parms + from reference before constructing any operator-new args + list. + +2021-12-17 Jason Merrill <jason@redhat.com> + + * constraint.cc (deduce_concept_introduction): Adjust comment. + +2021-12-17 Jason Merrill <jason@redhat.com> + + PR c++/103681 + * cp-tree.h (struct lang_type): Add non_pod_aggregate. + (CLASSTYPE_NON_POD_AGGREGATE): New. + * class.c (check_field_decls): Set it. + (check_bases_and_members): Check it. + (check_non_pod_aggregate): New. + (enum eoc_mode): New. + (end_of_class): Always include non-empty fields. + Add eoc_nv_or_dsize mode. + (include_empty_classes, layout_class_type): Adjust. + +2021-12-16 Marek Polacek <polacek@redhat.com> + + PR c++/99980 + * parser.c (cp_parser_single_declaration): Maybe pass + CP_PARSER_FLAGS_DELAY_NOEXCEPT down to cp_parser_init_declarator. + +2021-12-16 Martin Sebor <msebor@redhat.com> + + PR c++/103703 + * parser.c (class_decl_loc_t::diag_mismatched_tags): Check for class + type before assuming a type is one. + +2021-12-16 Patrick Palka <ppalka@redhat.com> + + PR c++/51577 + PR c++/83035 + PR c++/100465 + * call.c (add_operator_candidates): Add lookups parameter. + Use it to avoid performing a second unqualified lookup when + instantiating a dependent operator expression. + (build_new_op): Add lookups parameter and pass it appropriately. + * constraint.cc (finish_constraint_binary_op): Use + build_min_nt_loc instead of build_x_binary_op. + * coroutines.cc (build_co_await): Adjust call to build_new_op. + * cp-objcp-common.c (cp_common_init_ts): Mark + DEPENDENT_OPERATOR_TYPE appropriately. + * cp-tree.def (DEPENDENT_OPERATOR_TYPE): Define. + * cp-tree.h (WILDCARD_TYPE_P): Accept DEPENDENT_OPERATOR_TYPE. + (FOLD_EXPR_OP_RAW): New, renamed from ... + (FOLD_EXPR_OP): ... this. Change this to return the tree_code directly. + (DEPENDENT_OPERATOR_TYPE_SAVED_LOOKUPS): Define. + (templated_operator_saved_lookups): Define. + (build_new_op): Add lookups parameter. + (build_dependent_operator_type): Declare. + (build_x_indirect_ref): Add lookups parameter. + (build_x_binary_op): Likewise. + (build_x_unary_op): Likewise. + (build_x_compound_expr): Likewise. + (build_x_modify_expr): Likewise. + * cxx-pretty-print.c (get_fold_operator): Adjust after + FOLD_EXPR_OP change. + * decl.c (start_preparsed_function): Don't call + push_operator_bindings. + * decl2.c (grok_array_decl): Adjust calls to build_new_op. + * method.c (do_one_comp): Likewise. + (build_comparison_op): Likewise. + * module.cc (trees_out::type_node): Handle DEPENDENT_OPERATOR_TYPE. + (trees_in::tree_node): Likewise. + * name-lookup.c (lookup_name): Revert r11-2876 change. + (op_unqualified_lookup): Remove. + (maybe_save_operator_binding): Remove. + (discard_operator_bindings): Remove. + (push_operator_bindings): Remove. + * name-lookup.h (maybe_save_operator_binding): Remove. + (push_operator_bindings): Remove. + (discard_operator_bindings): Remove. + * parser.c (cp_parser_unary_expression): Adjust calls to build_x_*. + (cp_parser_binary_expression): Likewise. + (cp_parser_assignment_expression): Likewise. + (cp_parser_expression): Likewise. + (do_range_for_auto_deduction): Likewise. + (cp_convert_range_for): Likewise. + (cp_parser_perform_range_for_lookup): Likewise. + (cp_parser_template_argument): Likewise. + (cp_parser_omp_for_cond): Likewise. + (cp_parser_omp_for_incr): Likewise. + (cp_parser_omp_for_loop_init): Likewise. + (cp_convert_omp_range_for): Likewise. + (cp_finish_omp_range_for): Likewise. + * pt.c (fold_expression): Adjust after FOLD_EXPR_OP change. Pass + templated_operator_saved_lookups to build_x_*. + (tsubst_omp_for_iterator): Adjust call to build_x_modify_expr. + (tsubst_expr) <case COMPOUND_EXPR>: Pass + templated_operator_saved_lookups to build_x_*. + (tsubst_copy_and_build) <case INDIRECT_REF>: Likewise. + <case tcc_unary>: Likewise. + <case tcc_binary>: Likewise. + <case MODOP_EXPR>: Likewise. + <case COMPOUND_EXPR>: Likewise. + (dependent_type_p_r): Return true for DEPENDENT_OPERATOR_TYPE. + * ptree.c (cxx_print_type): Handle DEPENDENT_OPERATOR_TYPE. + * semantics.c (finish_increment_expr): Adjust call to + build_x_unary_op. + (finish_unary_op_expr): Likewise. + (handle_omp_for_class_iterator): Adjust calls to build_x_*. + (finish_omp_cancel): Likewise. + (finish_unary_fold_expr): Use build_dependent_operator_type. + (finish_binary_fold_expr): Likewise. + * tree.c (cp_free_lang_data): Don't call discard_operator_bindings. + * typeck.c (rationalize_conditional_expr): Adjust call to + build_x_binary_op. + (op_unqualified_lookup): Define. + (build_dependent_operator_type): Define. + (build_x_indirect_ref): Add lookups parameter and use + build_dependent_operator_type. + (build_x_binary_op): Likewise. + (build_x_array_ref): Likewise. + (build_x_unary_op): Likewise. + (build_x_compound_expr_from_list): Adjust call to + build_x_compound_expr. + (build_x_compound_expr_from_vec): Likewise. + (build_x_compound_expr): Add lookups parameter and use + build_dependent_operator_type. + (cp_build_modify_expr): Adjust call to build_new_op. + (build_x_modify_expr): Add lookups parameter and use + build_dependent_operator_type. + * typeck2.c (build_x_arrow): Adjust call to build_new_op. + +2021-12-15 Marek Polacek <polacek@redhat.com> + + PR c++/102229 + * decl.c (check_decltype_auto): New. + (grokdeclarator): Call it. + * pt.c (do_auto_deduction): Don't check decltype(auto) here. + +2021-12-15 Martin Liska <mliska@suse.cz> + + PR c++/103713 + * tree.c (maybe_warn_parm_abi): Fix warning word splitting. + +2021-12-15 Jakub Jelinek <jakub@redhat.com> + + PR c++/103704 + * semantics.c (finish_omp_target_clauses_r): For OMP_CLAUSEs + just walk subtrees. + +2021-12-14 Patrick Palka <ppalka@redhat.com> + + PR c++/103408 + * constraint.cc (type_deducible_p): Remove workaround for + non-templated requires-expressions. + (normalize_placeholder_type_constraints): Likewise. + * cp-tree.h (current_template_depth): Define. + (PROCESSING_REAL_TEMPLATE_DECL): Inspect current_template_depth + instead of the magnitude of processing_template_decl. + * decl.c (start_decl): Likewise. + (grokfndecl): Likewise. + (grokvardecl): Likewise. + (grokdeclarator): Likewise. + * friend.c (make_friend_class): Likewise. Calculate + friend_depth differently when called at instantiation time + instead of parse time. + (do_friend): Likewise. + * parser.c (cp_parser_requires_clause_expression): Remove + workaround for lambdas inside constraints. + (cp_parser_constraint_expression): Likewise. + (cp_parser_requires_expression): Likewise. + (synthesize_implicit_template_parm): Add to current_template_parms + before calling process_template_parm. + * pt.c (inline_needs_template_parms): Inspect + current_template_depth instead of the magnitude of + processing_template_decl. + (push_inline_template_parms_recursive): Likewise. + (maybe_begin_member_template_processing): Likewise. + (begin_template_parm_list): Likewise. + (process_template_parm): Likewise. + (end_template_parm_list): Likewise. + (push_template_decl): Likewise. + (add_inherited_template_parms): Likewise. + (instantiate_class_template_1): Don't adjust + processing_template_decl around the call to make_friend_class. + adjust_processing_template_decl to adjust_template_depth. Set + current_template_parms instead of processing_template_decl when + adjust_template_depth. + (make_auto_1): Inspect current_template_depth instead of the + magnitude of processing_template_decl. + (splice_late_return_type): Likewise. + * semantics.c (fixup_template_type): Likewise. + +2021-12-14 Patrick Palka <ppalka@redhat.com> + + * call.c (build_new_op): Use releasing_vec for arglist. Declare + conv in the scope it's used. + +2021-12-14 Patrick Palka <ppalka@redhat.com> + + * cp-tree.h (COMPOUND_EXPR_OVERLOADED): Remove. + * pt.c (build_non_dependent_expr): Don't inspect the flag. + * tree.c (build_min_non_dep): Don't set the flag. + +2021-12-12 Jonathan Wakely <jwakely@redhat.com> + + * error.c: Define INCLUDE_MEMORY instead of + INCLUDE_UNIQUE_PTR. + * lex.c: Likewise. + * name-lookup.c: Likewise. + (class namespace_limit_reached): Use std::unique_ptr instead of + gnu::unique_ptr. + (suggest_alternatives_for): Use std::move instead of gnu::move. + (suggest_alternatives_in_other_namespaces): Likewise. + * parser.c: Define INCLUDE_MEMORY instead of INCLUDE_UNIQUE_PTR. + +2021-12-09 Marek Polacek <polacek@redhat.com> + + PR c++/103401 + * parser.c (cp_parser_decltype): Clear + auto_is_implicit_function_template_parm_p. + (cp_parser_type_id_1): Give errors only when !cp_parser_simulate_error. + (cp_parser_parameter_declaration): Clear + auto_is_implicit_function_template_parm_p after parsing the + decl-specifier-seq. + (cp_parser_sizeof_operand): Clear + auto_is_implicit_function_template_parm_p. + +2021-12-09 Jakub Jelinek <jakub@redhat.com> + + PR pch/71934 + * module.cc (nop): Add another void * argument. + * name-lookup.c (resort_member_name_cmp): Pass the same pointer twice + to resort_data.new_value. + +2021-12-08 Chung-Lin Tang <cltang@codesourcery.com> + + * parser.c (struct omp_dim): New struct type for use inside + cp_parser_omp_var_list_no_open. + (cp_parser_omp_var_list_no_open): Allow multiple levels of array and + component accesses in array section base-pointer expression. + (cp_parser_omp_all_clauses): Set 'allow_deref' to true in call to + cp_parser_omp_var_list for to/from clauses. + * semantics.c (handle_omp_array_sections_1): Extend allowed range + of base-pointer expressions involving INDIRECT/MEM/ARRAY_REF and + POINTER_PLUS_EXPR. + (handle_omp_array_sections): Adjust pointer map generation of + references. + (finish_omp_clauses): Extend allowed ranged of expressions + involving INDIRECT/MEM/ARRAY_REF and POINTER_PLUS_EXPR. + +2021-12-08 Chung-Lin Tang <cltang@codesourcery.com> + + PR middle-end/92120 + * cp-tree.h (finish_omp_target): New declaration. + (finish_omp_target_clauses): Likewise. + * parser.c (cp_parser_omp_clause_map): Adjust call to + cp_parser_omp_var_list_no_open to set 'allow_deref' argument to true. + (cp_parser_omp_target): Factor out code, adjust into calls to new + function finish_omp_target. + * pt.c (tsubst_expr): Add call to finish_omp_target_clauses for + OMP_TARGET case. + * semantics.c (handle_omp_array_sections_1): Add handling to create + 'this->member' from 'member' FIELD_DECL. Remove case of rejecting + 'this' when not in declare simd. + (handle_omp_array_sections): Likewise. + (finish_omp_clauses): Likewise. Adjust to allow 'this[]' in OpenMP + map clauses. Handle 'A->member' case in map clauses. Remove case of + rejecting 'this' when not in declare simd. + (struct omp_target_walk_data): New struct for walking over + target-directive tree body. + (finish_omp_target_clauses_r): New function for tree walk. + (finish_omp_target_clauses): New function. + (finish_omp_target): New function. + +2021-12-07 Marek Polacek <polacek@redhat.com> + + PR c++/95009 + * typeck.c (is_bitfield_expr_with_lowered_type) <case MODIFY_EXPR>: + Handle UNARY_PLUS_EXPR, NEGATE_EXPR, NON_LVALUE_EXPR, BIT_NOT_EXPR, + P*CREMENT_EXPR too. + +2021-12-04 Jakub Jelinek <jakub@redhat.com> + + * cp-tree.h (is_byte_access_type_not_plain_char): Declare. + * tree.c (is_byte_access_type_not_plain_char): New function. + * constexpr.c (clear_uchar_or_std_byte_in_mask): New function. + (cxx_eval_bit_cast): Don't error about padding bits if target + type is unsigned char or std::byte, instead return no clearing + ctor. Use clear_uchar_or_std_byte_in_mask. + +2021-12-03 Jason Merrill <jason@redhat.com> + + * error.c (current_dump_scope): New variable. + (dump_scope): Check it. + (dump_function_decl): Set it. + +2021-12-03 Marek Polacek <polacek@redhat.com> + + PR c++/103403 + * cp-gimplify.c (cp_fold): Don't recurse if maybe_undo_parenthesized_ref + doesn't change its argument. + * pt.c (do_auto_deduction): Don't strip REFERENCE_REF_P trees if they + are REF_PARENTHESIZED_P. Use stripped_init when checking for + id-expression. + * semantics.c (force_paren_expr): Set REF_PARENTHESIZED_P on + REFERENCE_REF_P trees too. + (maybe_undo_parenthesized_ref): Remove dead code. + +2021-12-02 Marek Polacek <polacek@redhat.com> + + PR c++/94490 + * pt.c (expand_integer_pack): Call + instantiate_non_dependent_expr_sfinae. + +2021-12-02 Marek Polacek <polacek@redhat.com> + + PR c++/103408 + * cxx-pretty-print.c (pp_cxx_parameter_mapping): Print "<unnamed>" + rather than crash on an unnamed template parameter. + +2021-12-01 Jason Merrill <jason@redhat.com> + + PR c++/103310 + * constexpr.c (cxx_eval_binary_expression): Use + fold_binary_initializer_loc if manifestly cxeval. + +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 + PR c++/91706 + * pt.c (tsubst_baselink): Update binfos in non-dependent case. + +2021-06-15 Robin Dapp <rdapp@linux.ibm.com> + + * decl.c (duplicate_decls): Likewise. + +2021-06-14 Tobias Burnus <tobias@codesourcery.com> + + PR c/100913 + * parser.c (cp_parser_omp_clause_affinity): No need to set iterator + var in the error case. + +2021-06-13 Trevor Saunders <tbsaunde@tbsaunde.org> + + * constexpr.c (cxx_eval_call_expression): Iterate over vec<> + with range based for. + (cxx_eval_store_expression): Likewise. + (cxx_eval_loop_expr): Likewise. + * decl.c (wrapup_namespace_globals): Likewise. + (cp_finish_decl): Likewise. + (cxx_simulate_enum_decl): Likewise. + * parser.c (cp_parser_postfix_expression): Likewise. + +2021-06-12 Jason Merrill <jason@redhat.com> + + PR c++/101029 + * init.c (build_vec_init): Shortcut [0] case. + +2021-06-12 Jason Merrill <jason@redhat.com> + + * pt.c (lookup_template_class_1): Shortcut current_class_type. + +2021-06-11 Patrick Palka <ppalka@redhat.com> + + DR 1227 + PR c++/96560 + * pt.c (tsubst_arg_types): Rearrange so that we substitute into + TYPE_ARG_TYPES in forward order while short circuiting + appropriately. Adjust formatting. + +2021-06-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/100974 + * cp-tree.h (struct saved_scope): Add consteval_if_p + member. Formatting fix for the discarded_stmt comment. + (in_consteval_if_p, IF_STMT_CONSTEVAL_P): Define. + * parser.c (cp_parser_lambda_expression): Temporarily disable + in_consteval_if_p when parsing lambda body. + (cp_parser_selection_statement): Parse consteval if. + * decl.c (struct named_label_entry): Add in_consteval_if member. + (level_for_consteval_if): New function. + (poplevel_named_label_1, check_previous_goto_1, check_goto): Handle + consteval if. + * constexpr.c (cxx_eval_builtin_function_call): Clarify in comment + why CP_BUILT_IN_IS_CONSTANT_EVALUATED needs to *non_constant_p + for !ctx->manifestly_const_eval. + (cxx_eval_conditional_expression): For IF_STMT_CONSTEVAL_P evaluate + condition as if it was __builtin_is_constant_evaluated call. + (potential_constant_expression_1): For IF_STMT_CONSTEVAL_P always + recurse on both branches. + * cp-gimplify.c (genericize_if_stmt): Genericize IF_STMT_CONSTEVAL_P + as the else branch. + * pt.c (tsubst_expr) <case IF_STMT>: Copy IF_STMT_CONSTEVAL_P. + Temporarily set in_consteval_if_p when recursing on + IF_STMT_CONSTEVAL_P then branch. + (tsubst_lambda_expr): Temporarily disable + in_consteval_if_p when instantiating lambda body. + * call.c (immediate_invocation_p): Return false when + in_consteval_if_p. + +2021-06-11 Marek Polacek <polacek@redhat.com> + + PR c++/100995 + * constexpr.c (maybe_constexpr_fn): New. + * cp-tree.h (maybe_constexpr_fn): Declare. + * semantics.c (find_std_constant_evaluated_r): New. + (maybe_warn_for_constant_evaluated): New. + (finish_if_stmt_cond): Call it. + +2021-06-10 Patrick Palka <ppalka@redhat.com> + + PR c++/67829 + * pt.c (unify) <case BOUND_TEMPLATE_TEMPLATE_PARM>: When + the TEMPLATE_DECL of a BOUND_TEMPLATE_TEMPLATE_PARM argument is + a template template parameter, adjust to the + TEMPLATE_TEMPLATE_PARAMETER before falling through. + +2021-06-10 Patrick Palka <ppalka@redhat.com> + + PR c++/100946 + * constraint.cc (normalize_placeholder_type_constraints): When + normalizing a non-templated return-type-requirement, add a dummy + level to initial_parms. + +2021-06-08 Marek Polacek <polacek@redhat.com> + + PR c++/100065 + * decl.c (grokdeclarator): Store a value-dependent + explicit-specifier even for deduction guides. + +2021-06-08 Jason Merrill <jason@redhat.com> + + * parser.c (cp_parser_string_literal): Adjust diagnostic. + +2021-06-08 Jason Merrill <jason@redhat.com> + + PR c++/100963 + * call.c (perfect_conversion_p): Check check_narrowing. + +2021-06-08 Jason Merrill <jason@redhat.com> + + PR c++/91706 + * name-lookup.c (get_class_binding): Keep a BASELINK. + (set_inherited_value_binding_p): Adjust. + * lambda.c (is_lambda_ignored_entity): Adjust. + * pt.c (lookup_template_function): Copy a BASELINK before + modifying it. + +2021-06-08 Jason Merrill <jason@redhat.com> + + PR c++/91706 + * semantics.c (baselink_for_fns): Fix BASELINK_BINFO. + +2021-06-08 Jason Merrill <jason@redhat.com> + + * module.cc (duplicate_hash::hash): Comment out. + (trees_in::tree_value): Adjust loop counter. + +2021-06-08 Jason Merrill <jason@redhat.com> + + PR c++/100102 + * init.c (build_offset_ref): Return the BASELINK for a static + member function. + +2021-06-07 Patrick Palka <ppalka@redhat.com> + + PR c++/100918 + * parser.c (cp_parser_lookup_name): Check access of the lookup + result before we potentially adjust an injected-class-name to + its TEMPLATE_DECL. + +2021-06-06 Jakub Jelinek <jakub@redhat.com> + + PR c/100902 + * parser.c (cp_parser_omp_target): Call c_omp_adjust_map_clauses + even when target is combined with other constructs. + +2021-06-04 Patrick Palka <ppalka@redhat.com> + + PR c++/100893 + * pt.c (convert_template_argument): Strip top-level cv-quals + on the substituted type of a non-type template parameter. + +2021-06-04 Patrick Palka <ppalka@redhat.com> + + PR c++/100102 + * pt.c (tsubst_function_decl): Remove old code for reducing + args when it has excess levels. + +2021-06-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/100872 + * name-lookup.c (maybe_save_operator_binding): Add op_attr after all + ATTR_IS_DEPENDENT attributes in the DECL_ATTRIBUTES list rather than + to the start. + +2021-06-03 Patrick Palka <ppalka@redhat.com> + + PR c++/100592 + * decl.c (make_typename_type): After calling + lookup_template_class, adjust the result to its TYPE_NAME and + then consider the tf_keep_type_decl flag. + +2021-06-03 Patrick Palka <ppalka@redhat.com> + + PR c++/100862 + * pt.c (set_current_access_from_decl): Move to ... + * class.c (set_current_access_from_decl): ... here. + (handle_using_decl): Use it to propagate the access of the + using-enum decl to the copy of the imported enumerator. + * cp-tree.h (set_current_access_from_decl): Declare. + * decl.c (build_enumerator): Simplify using make_temp_override + and set_current_access_from_decl. + +2021-06-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/100859 + * semantics.c (handle_omp_array_sections_1): For + OMP_CLAUSE_{AFFINITY,DEPEND} handle FIELD_DECL base using + finish_non_static_data_member and allow this as base. + (finish_omp_clauses): Move OMP_CLAUSE_AFFINITY + after depend only cases. Let this be diagnosed by !lvalue_p + case for OMP_CLAUSE_{AFFINITY,DEPEND} and remove useless + assert. + * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_AFFINITY. + +2021-06-02 Jason Merrill <jason@redhat.com> + + PR c++/100838 + * call.c (convert_like_internal): Clear tf_no_cleanup when + recursing. + (build_user_type_conversion_1): Only add ck_rvalue if + LOOKUP_ONLYCONVERTING. + +2021-06-01 Patrick Palka <ppalka@redhat.com> + + PR c++/65816 + * init.c (expand_aggr_init_1): Check + type_has_non_user_provided_default_constructor instead of + type_has_user_provided_constructor. + +2021-06-01 Jason Merrill <jason@redhat.com> + + PR c++/91859 + * call.c (build_op_delete_call): Don't set CALL_FROM_NEW_OR_DELETE_P + for destroying delete. + * init.c (build_delete): Don't clobber before destroying delete. + +2021-06-01 Jason Merrill <jason@redhat.com> + + PR c++/94492 + * decl2.c (cp_warn_deprecated_use): Check warning_enabled_at. + +2021-05-31 Richard Biener <rguenther@suse.de> + + PR c++/88601 + * cp-objcp-common.c (names_builtin_p): Handle + RID_BUILTIN_SHUFFLEVECTOR. + * cp-tree.h (build_x_shufflevector): Declare. + * parser.c (cp_parser_postfix_expression): Handle + RID_BUILTIN_SHUFFLEVECTOR. + * pt.c (tsubst_copy_and_build): Handle IFN_SHUFFLEVECTOR. + * typeck.c (build_x_shufflevector): Build either a lowered + VEC_PERM_EXPR or an unlowered shufflevector via a temporary + internal function IFN_SHUFFLEVECTOR. + +2021-05-28 Jason Merrill <jason@redhat.com> + + * constexpr.c (build_data_member_initialization): Use tsi_range. + (build_constexpr_constructor_member_initializers): Likewise. + (constexpr_fn_retval, cxx_eval_statement_list): Likewise. + (potential_constant_expression_1): Likewise. + * coroutines.cc (await_statement_expander): Likewise. + (await_statement_walker): Likewise. + * module.cc (trees_out::core_vals): Likewise. + * pt.c (tsubst_expr): Likewise. + * semantics.c (set_cleanup_locs): Likewise. + +2021-05-28 Jason Merrill <jason@redhat.com> + + PR c++/100797 + PR c++/95719 + * call.c (build_over_call): Adjust base_binfo in + resolves_to_fixed_type_p case. + +2021-05-28 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/99928 + * semantics.c (handle_omp_array_sections): Copy + OMP_CLAUSE_MAP_IMPLICIT. + (finish_omp_clauses): Move not just OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT + marked clauses last, but also OMP_CLAUSE_MAP_IMPLICIT. Add + map_firstprivate_head bitmap, set it for GOMP_MAP_FIRSTPRIVATE_POINTER + maps and silently remove OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT if it is + present too. For OMP_CLAUSE_MAP_IMPLICIT silently remove the clause + if present in map_head, map_field_head or map_firstprivate_head + bitmaps. + +2021-05-28 Tobias Burnus <tobias@codesourcery.com> + + * parser.c (cp_parser_omp_clause_affinity): New. + (cp_parser_omp_clause_name, cp_parser_omp_var_list_no_open, + cp_parser_omp_all_clauses, OMP_TASK_CLAUSE_MASK): Handle affinity + clause. + * semantics.c (handle_omp_array_sections_1, handle_omp_array_sections, + finish_omp_clauses): Likewise. + +2021-05-27 Matthias Kretz <kretz@kde.org> + + PR c++/100716 + * error.c (dump_template_bindings): Include code to print + "[with" and ']', conditional on whether anything is printed at + all. This is tied to whether a semicolon is needed to separate + multiple template parameters. If the template argument repeats + the template parameter (T = T), then skip the parameter. + (dump_substitution): Moved code to print "[with" and ']' to + dump_template_bindings. + (dump_function_decl): Partial revert of PR50828, which masked + TFF_TEMPLATE_NAME for all of dump_function_decl. Now + TFF_TEMPLATE_NAME is masked for the scope of the function and + only carries through to dump_function_name. + (dump_function_name): Avoid calling dump_template_parms if + TFF_TEMPLATE_NAME is set. + +2021-05-27 Matthias Kretz <kretz@kde.org> + + PR c++/100763 + * error.c: Call dump_scope when printing a typedef. + +2021-05-27 Patrick Palka <ppalka@redhat.com> + + PR c++/99893 + * tree.c (cp_walk_subtrees) <case STATIC_ASSERT>: New case. + +2021-05-27 Jason Merrill <jason@redhat.com> + + PR c++/86355 + * pt.c (use_pack_expansion_extra_args_p): Don't compare + args from the same argument pack. + +2021-05-27 Patrick Palka <ppalka@redhat.com> + + DR 1315 + PR c++/67593 + PR c++/96555 + * pt.c (process_partial_specialization): Don't error on a + non-simple non-type template argument that involves template + parameters. + (for_each_template_parm_r): Don't walk TRAIT_EXPR, PLUS_EXPR, + MULT_EXPR, or SCOPE_REF when include_nondeduced_p is false. + +2021-05-26 Patrick Palka <ppalka@redhat.com> + + PR c++/100502 + * typeck.c (finish_class_member_access_expr): Disable ahead + of time access checking during the member lookup. + +2021-05-26 Patrick Palka <ppalka@redhat.com> + + PR c++/100368 + * tree.c (build_target_expr_with_type): Don't call force_rvalue + on CALL_EXPR initializer. Simplify now that bot_manip is no + longer a caller. + (bot_manip): Use force_target_expr instead of + build_target_expr_with_type. + +2021-05-26 Patrick Palka <ppalka@redhat.com> + + PR c++/97420 + * cvt.c (noexcept_conv_p): Remove redundant checks and simplify. + (fnptr_conv_p): Don't call non_reference. Use INDIRECT_TYPE_P + instead of TYPE_PTR_P. + * pt.c (convert_nontype_argument_function): Look through + implicit INDIRECT_REFs before calling strip_fnptr_conv. + +2021-05-25 Jakub Jelinek <jakub@redhat.com> + + PR c++/100666 + * call.c (convert_arg_to_ellipsis): For expressions with NULLPTR_TYPE + and side-effects, temporarily disable -Wunused-result warning when + building COMPOUND_EXPR. + +2021-05-21 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/99928 + * semantics.c (finish_omp_clauses): Move firstprivate clauses with + OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT to the end of the chain. Don't error + if a decl is mentioned both in map clause and in such firstprivate + clause unless OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT_TARGET is also set. + +2021-05-20 Jason Merrill <jason@redhat.com> + + * call.c (reference_binding): Check for designator. + (implicit_conversion_1, build_special_member_call): Likewise. + * decl.c (reshape_init_r): Likewise. + * pt.c (do_class_deduction): Likewise. + * typeck2.c (digest_init_r): Likewise. + +2021-05-20 Jason Merrill <jason@redhat.com> + + PR c++/100489 + * decl.c (reshape_init_class): Handle designator for + member of anonymous aggregate here. + * typeck2.c (process_init_constructor_record): Not here. + +2021-05-20 Jonathan Wakely <jwakely@redhat.com> + + * call.c (maybe_warn_array_conv): Use new warning option. + * decl.c (mark_inline_variable, grokdeclarator): Likewise. + * error.c (maybe_warn_cpp0x): Likewise. + * parser.c (cp_parser_primary_expression) + (cp_parser_unqualified_id) + (cp_parser_pseudo_destructor_name) + (cp_parser_lambda_introducer) + (cp_parser_lambda_declarator_opt) + (cp_parser_selection_statement) + (cp_parser_init_statement) + (cp_parser_decomposition_declaration) + (cp_parser_function_specifier_opt) + (cp_parser_static_assert) + (cp_parser_namespace_definition) + (cp_parser_using_declaration) + (cp_parser_asm_definition) + (cp_parser_ctor_initializer_opt_and_function_body) + (cp_parser_initializer_list) + (cp_parser_type_parameter_key) + (cp_parser_member_declaration) + (cp_parser_try_block) + (cp_parser_std_attribute_spec): Likewise. + * pt.c (check_template_variable): Likewise. + +2021-05-20 Jason Merrill <jason@redhat.com> + + PR c++/100634 + * pt.c (invalid_nontype_parm_type_p): Return true for COMPLEX_TYPE. + +2021-05-20 Jason Merrill <jason@redhat.com> + + PR c++/100659 + * cp-tree.h (CONST_DECL_USING_P): Check for null TREE_TYPE. + +2021-05-19 Jason Merrill <jason@redhat.com> + + PR c++/100367 + PR c++/96299 + * method.c (genericize_spaceship): Use fold_build2 for scalar + operands. + +2021-05-19 Jason Merrill <jason@redhat.com> + + * pt.c (build_deduction_guide): Treat the implicit deduction guide + as a member of the class. + +2021-05-19 Marek Polacek <polacek@redhat.com> + + PR c++/100596 + * cp-tree.h (any_non_type_attribute_p): Remove. + * decl.c (grokdeclarator): Turn an error into a warning and only + warn for standard attributes. + * decl2.c (any_non_type_attribute_p): Remove. + * parser.c (cp_parser_elaborated_type_specifier): Turn an error + into a warning and only warn for standard attributes. + (cp_parser_member_declaration): Likewise. + +2021-05-19 Martin Liska <mliska@suse.cz> + + PR testsuite/100658 + * mangle.c (write_encoding): Fix typos. + +2021-05-19 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/99928 + * parser.c (cp_parser_omp_master): Set OMP_MASTER_COMBINED on + master when combined with taskloop. + (cp_parser_omp_parallel): Don't set OMP_PARALLEL_COMBINED on + parallel master when not combined with taskloop. + +2021-05-19 Jason Merrill <jason@redhat.com> + + PR c++/100261 + * rtti.c (get_tinfo_decl_direct): Check TYPE_TRANSPARENT_AGGR. + +2021-05-19 Jason Merrill <jason@redhat.com> + + PR c++/100372 + * tree.c (strip_typedefs): Only look at the pattern of a + TYPE_PACK_EXPANSION if it's a type. + +2021-05-18 Marek Polacek <polacek@redhat.com> + + * class.c (classtype_has_non_deleted_copy_ctor): Remove. + * constraint.cc (contains_wildcard_p): Likewise. + (get_template_head_requirements): Likewise. + (check_constrained_friend): Likewise. + (subsumes_constraints): Likewise. + * cp-tree.h (classtype_has_non_deleted_copy_ctor): Likewise. + (push_void_library_fn): Likewise. + (get_pattern_parm): Likewise. + (get_template_parms_at_level): Likewise. + (lambda_return_type): Likewise. + (get_template_head_requirements): Likewise. + (check_constrained_friend): Likewise. + (subsumes_constraints): Likewise. + * decl.c (push_void_library_fn): Likewise. + * lambda.c (lambda_return_type): Likewise. + * pt.c (get_template_parms_at_level): Likewise. + (get_pattern_parm): Likewise. + +2021-05-18 Jason Merrill <jason@redhat.com> + + PR c++/100644 + * call.c (perfect_candidate_p): An implicitly deleted move + is not perfect. + +2021-05-18 Andreas Krebbel <krebbel@linux.ibm.com> + + PR c++/100281 + * cvt.c (cp_convert_to_pointer): Use the size of the target + pointer type. + * tree.c (cp_build_reference_type): Call + cp_build_reference_type_for_mode with VOIDmode. + (cp_build_reference_type_for_mode): Rename from + cp_build_reference_type. Add MODE argument and invoke + build_reference_type_for_mode. + (strip_typedefs): Use build_pointer_type_for_mode and + cp_build_reference_type_for_mode for pointers and references. + +2021-05-17 Jonathan Wakely <jwakely@redhat.com> + + PR c++/100635 + * call.c (convert_like_internal): Print different diagnostic if + the lvalue reference is const. + +2021-05-14 Jason Merrill <jason@redhat.com> + + PR c++/95870 + * pt.c (enclosing_instantiation_of): Just compare + DECL_SOURCE_LOCATION. + (regenerate_decl_from_template): Copy DECL_SOURCE_LOCATION. + +2021-05-14 Marek Polacek <polacek@redhat.com> + Jason Merrill <jason@redhat.com> + + PR c++/99032 + * cp-tree.h (any_non_type_attribute_p): Declare. + * decl.c (grokdeclarator): Diagnose when an attribute appertains to + a friend declaration that is not a definition. + * decl2.c (any_non_type_attribute_p): New. + * parser.c (cp_parser_decl_specifier_seq): Diagnose standard attributes + in the middle of decl-specifiers. + (cp_parser_elaborated_type_specifier): Diagnose when an attribute + appertains to a friend declaration that is not a definition. + (cp_parser_member_declaration): Likewise. + +2021-05-12 Marek Polacek <polacek@redhat.com> + + * pt.c (tsubst_copy_and_build): Add warn_int_in_bool_context + sentinel. + +2021-05-12 Marcel Vollweiler <marcel@codesourcery.com> + + * parser.c (cp_parser_omp_clause_map): Support map-type-modifier + 'close'. + +2021-05-11 Jason Merrill <jason@redhat.com> + + PR c++/100517 + * typeck.c (build_reinterpret_cast_1): Check intype on + cast to vector. + +2021-05-11 Patrick Palka <ppalka@redhat.com> + + PR c++/51577 + * name-lookup.c (maybe_save_operator_binding): Unconditionally + enable for all function templates, not just generic lambdas. + Handle compound-assignment operator expressions. + * typeck.c (build_x_compound_expr): Call maybe_save_operator_binding + in the type-dependent case. + (build_x_modify_expr): Likewise. Move declaration of 'op' closer + to its first use. + +2021-05-11 Patrick Palka <ppalka@redhat.com> + + PR c++/100138 + * constraint.cc (tsubst_constraint): Set up cp_unevaluated. + (satisfy_atom): Set up iloc_sentinel before calling + cxx_constant_value. + * pt.c (tsubst_pack_expansion): When returning a rebuilt pack + expansion, carry over PACK_EXPANSION_LOCAL_P and + PACK_EXPANSION_SIZEOF_P from the original pack expansion. + +2021-05-10 Richard Biener <rguenther@suse.de> + + PR middle-end/100464 + PR c++/100468 + * call.c (set_up_extended_ref_temp): Mark the temporary + addressable if the TARGET_EXPR was. + +2021-05-10 Martin Liska <mliska@suse.cz> + + * decl.c (duplicate_decls): Use startswith + function instead of strncmp. + (cxx_builtin_function): Likewise. + (omp_declare_variant_finalize_one): Likewise. + (grokfndecl): Likewise. + * error.c (dump_decl_name): Likewise. + * mangle.c (find_decomp_unqualified_name): Likewise. + (write_guarded_var_name): Likewise. + (decl_tls_wrapper_p): Likewise. + * parser.c (cp_parser_simple_type_specifier): Likewise. + (cp_parser_tx_qualifier_opt): Likewise. + * pt.c (template_parm_object_p): Likewise. + (dguide_name_p): Likewise. + +2021-05-10 Martin Liska <mliska@suse.cz> + + PR c++/99616 + * decl.c (grokdeclarator): Remove redundant NULL check. + +2021-05-07 Jason Merrill <jason@redhat.com> + + * tree.c (rvalue): Assert expr is not a class lvalue. + +2021-05-07 Jason Merrill <jason@redhat.com> + + * cp-tree.h (build_stub_object): Declare. + * method.c (build_stub_object): No longer static. + * call.c (can_convert): Use it. + * tree.c (build_dummy_object): Adjust comment. + * typeck.c (cp_build_binary_op): Wrap SPACESHIP_EXPR in a + TARGET_EXPR. + +2021-05-07 Jason Merrill <jason@redhat.com> + + * coroutines.cc (build_co_await): Don't call 'rvalue'. + (flatten_await_stmt): Simplify initialization. + (morph_fn_to_coro): Change 'rvalue' to 'move'. Simplify. + +2021-05-04 Tobias Burnus <tobias@codesourcery.com> + + * semantics.c (finish_omp_reduction_clause): Accept float + complex + for || and && reductions. + +2021-05-03 Patrick Palka <ppalka@redhat.com> + + PR c++/100362 + * parser.c (cp_parser_class_head): Reinstate calls to pushclass + and popclass when parsing the base-clause that were removed in + r11-6815. + +2021-05-03 Patrick Palka <ppalka@redhat.com> + + PR c++/68942 + PR c++/100344 + * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: Set tf_conv + only when the callee is a FUNCTION_DECL. + +2021-05-03 Marek Polacek <polacek@redhat.com> + + PR c++/100055 + * decl.c (grokfndecl): Check current_template_parms. + +2021-05-03 Marek Polacek <polacek@redhat.com> + + DR 1312 + * constexpr.c (cxx_eval_constant_expression): Don't check + integer_zerop. + +2021-05-01 Jason Merrill <jason@redhat.com> + + * cp-tree.h (class ovl_iterator): Allow copying. Add op==. + (class ovl_range, class lkp_range): New. + * call.c (build_op_call_1, add_candidates): Use them. + (build_op_delete_call, has_trivial_copy_assign_p): Likewise. + (has_trivial_copy_p): Likewise. + * class.c (handle_using_decl, get_basefndecls): Likewise. + (maybe_warn_about_overly_private_class): Likewise. + (warn_hidden, add_implicitly_declared_members): Likewise. + (check_methods, clone_constructors_and_destructors): Likewise. + (type_has_user_nondefault_constructor): Likewise. + +2021-04-29 Jason Merrill <jason@redhat.com> + + * constexpr.c (cxx_fold_indirect_ref_1): Only set *empty_base if we + don't find a field. + +2021-04-29 Jason Merrill <jason@redhat.com> + + PR c++/51344 + * decl2.c (grokfield): Call cplus_decl_attributes for friend. + (save_template_attributes): Use chainon. + * friend.c (do_friend): Remove attrlist parm. + * cp-tree.h (do_friend): Adjust. + * class.c (add_implicitly_declared_members): Adjust. + * decl.c (grokdeclarator): Adjust. + * pt.c (apply_late_template_attributes): Optimize. + +2021-04-29 Jason Merrill <jason@redhat.com> + + PR c++/97974 + * class.c (finish_struct_anon_r): Drop complain parm. + Remove non-field diagnostic. + (finish_struct_anon): Adjust. + * decl.c (fixup_anonymous_aggr): Move non-field diagnostic here. + +2021-04-29 Jason Merrill <jason@redhat.com> + + * cp-tree.h (cp_evaluated): Add reset parm to constructor. + * parser.c (cp_parser_constant_expression): Change + allow_non_constant_p to int. Use cp_evaluated. + (cp_parser_initializer_clause): Pass 2 to allow_non_constant_p. + * semantics.c (finish_id_expression_1): Don't mess with + cp_unevaluated_operand here. + +2021-04-29 Jason Merrill <jason@redhat.com> + + * cp-tree.h: Clarify comments. + * pt.c (get_template_parm_object): Add assert. + * semantics.c (finish_compound_literal): Clear TREE_HAS_CONSTRUCTOR. + * tree.c (zero_init_expr_p): Check TREE_HAS_CONSTRUCTOR. + * typeck2.c (store_init_value): Likewise. + +2021-04-29 Patrick Palka <ppalka@redhat.com> + + PR c++/68942 + * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: When KOENIG_P, + set tf_conv during the initial substitution into the function. + +2021-04-29 Jakub Jelinek <jakub@redhat.com> + + PR c++/100319 + * semantics.c (finish_omp_clauses): Fix up check that variable + mentioned in detach clause doesn't appear in data-sharing clauses. + +2021-04-28 Jakub Jelinek <jakub@redhat.com> + + * module.cc: Remove #error that triggers if DEV-PHASE is empty. + +2021-04-27 Jason Merrill <jason@redhat.com> + + PR c++/92145 + * class.c (classtype_has_depr_implicit_copy): Check DECL_CONTEXT + of operator=. + +2021-04-27 Patrick Palka <ppalka@redhat.com> + + PR c++/88580 + * pt.c (tsubst_initializer_list): Correctly handle the case + where an argument inside a base initializer pack expansion is + itself a pack expansion. + +2021-04-26 Patrick Palka <ppalka@redhat.com> + + PR c++/100209 + * constexpr.c (cxx_fold_indirect_ref): Try to canonicalize the + object/offset pair for a POINTER_PLUS_EXPR of a COMPONENT_REF + with a negative offset into one whose offset is nonnegative + before calling cxx_fold_indirect_ref_1. + +2021-04-24 Patrick Palka <ppalka@redhat.com> + + PR c++/89565 + PR c++/93383 + PR c++/95291 + PR c++/99200 + PR c++/99683 + * pt.c (do_class_deduction): Punt if the initializer is + type-dependent. + +2021-04-24 Patrick Palka <ppalka@redhat.com> + + PR c++/87709 + * parser.c (cp_parser_type_id_1): If we see a template + placeholder, first try simulating an error before issuing + a real error. + +2021-04-23 Patrick Palka <ppalka@redhat.com> + + PR c++/98767 + * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): + Adjust parameter list loop to iterate over 'types' instead of + 'args'. Output the trailing '...' for a variadic function. + Remove PARM_DECL support. + (pp_cxx_requires_expr): Pretty print the parameter list directly + instead of going through pp_cxx_parameter_declaration_clause. + +2021-04-23 Patrick Palka <ppalka@redhat.com> + + DR 2374 + * decl.c (is_direct_enum_init): Check the implicit + convertibility requirement added by CWG 2374. + +2021-04-23 Martin Liska <mliska@suse.cz> + + * cp-tree.h (STATIC_ASSERT): Prefer static assert. + * lex.c (init_operators): Remove run-time check. + +2021-04-22 Marek Polacek <polacek@redhat.com> + + PR c++/100161 + * pt.c (tsubst_copy_and_build) <case PLUS_EXPR>: Test op0 and + op1 separately for value- or type-dependence. + +2021-04-21 Marek Polacek <polacek@redhat.com> + + PR c++/96380 + * parser.c (cp_parser_enum_specifier): Don't allow defining + types in enum-base. + +2021-04-21 Martin Liska <mliska@suse.cz> + + Revert: + 2021-04-21 Martin Liska <mliska@suse.cz> + + * error.c (dump_decl): Use flags in dump_generic_node call. + +2021-04-21 Martin Liska <mliska@suse.cz> + + * error.c (dump_decl): Use flags in dump_generic_node call. + +2021-04-21 Martin Liska <mliska@suse.cz> + + * error.c (dump_decl): Support anonymous labels. + +2021-04-20 Jason Merrill <jason@redhat.com> + + PR c++/100109 + * pt.c (find_parameter_packs_r): Look into enum initializers. + +2021-04-19 Marek Polacek <polacek@redhat.com> + + PR c++/97536 + * decl.c (grokvardecl): Given an error when a concept is not defined + at namespace scope. + +2021-04-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/100111 + * constexpr.c (cxx_eval_store_expression): Don't add CONSTRUCTORs + for empty classes into *valp when types don't match even when *valp + is NULL. + +2021-04-16 Marek Polacek <polacek@redhat.com> + + PR c++/99803 + * decl.c (make_typename_type): Give an error and return when + name is is_overloaded_fn. + * parser.c (cp_parser_class_name): Don't check is_overloaded_fn + before calling make_typename_type. + +2021-04-16 Patrick Palka <ppalka@redhat.com> + + PR c++/99700 + * constexpr.c (reduced_constant_expression_p): For array + CONSTRUCTORs, use a dedicated loop that additionally verifies + the CONSTRUCTOR spans the entire array. + +2021-04-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/99850 + * parser.c (cp_parser_constraint_requires_parens) <case CPP_DEREF>: + If lambda_p, return pce_ok instead of pce_maybe_postfix. + +2021-04-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/99833 + * pt.c (extract_locals_r): When handling DECL_EXPR of a structured + binding, add to data.internal also all corresponding structured + binding decls. + +2021-04-16 Jason Merrill <jason@redhat.com> + + PR c++/100079 + * cp-tree.h (first_field): Declare. + * mangle.c (range_expr_nelts): New. + (write_expression): Improve class NTTP mangling. + * pt.c (get_template_parm_object): Clear TREE_HAS_CONSTRUCTOR. + * tree.c (zero_init_expr_p): Improve class NTTP handling. + * decl.c: Adjust comment. + +2021-04-15 Jason Merrill <jason@redhat.com> + + PR c++/80456 + * call.c (build_new_method_call_1): Check again for side-effects + with a volatile object. + +2021-04-15 Jason Merrill <jason@redhat.com> + + PR c++/100101 + PR c++/99583 + * pt.c (find_parameter_packs_r) [FUNCTION_TYPE]: Walk into + TYPE_RAISES_EXCEPTIONS here. + * tree.c (cp_walk_subtrees): Not here. + +2021-04-15 Jason Merrill <jason@redhat.com> + + PR c++/100091 + PR c++/99478 + * parser.c (cp_parser_default_type_template_argument): Set + parser->local_variables_forbidden_p. + +2021-04-15 Richard Sandiford <richard.sandiford@arm.com> + + PR c++/98852 + * typeck.c (merge_type_attributes_from): New function. + (cp_common_type): Use it for vector types. + +2021-04-14 Jason Merrill <jason@redhat.com> + + PR c++/100078 + PR c++/93085 + * pt.c (uses_outer_template_parms): Also look at default + template argument. + +2021-04-14 Jason Merrill <jason@redhat.com> + + PR c++/93314 + * semantics.c (finish_id_expression_1): Clear cp_unevaluated_operand + for a non-static data member in a constant-expression. + +2021-04-14 Patrick Palka <ppalka@redhat.com> + + PR c++/83476 + PR c++/99885 + * pt.c (deducible_expression): Look through implicit + INDIRECT_REFs as well. + +2021-04-14 Jason Merrill <jason@redhat.com> + + PR c++/99478 + * parser.c (cp_parser_lambda_expression): Reject lambda + in template parameter type. + +2021-04-14 Jason Merrill <jason@redhat.com> + + PR c++/90674 + * decl.c (duplicate_decls): Don't propagate + DECL_INITIALIZED_IN_CLASS_P to a specialization. + +2021-04-14 Jason Merrill <jason@redhat.com> + + PR c++/88742 + PR c++/49951 + PR c++/58123 + * semantics.c (set_cleanup_locs): New. + (do_poplevel): Call it. + * parser.c (cp_parser_compound_statement): Consume the } + before finish_compound_stmt. + +2021-04-13 Jason Merrill <jason@redhat.com> + + PR c++/100032 + * pt.c (get_underlying_template): Compare TYPE_QUALS. + +2021-04-13 Jason Merrill <jason@redhat.com> + + PR c++/100054 + PR c++/90479 + * init.c (get_nsdmi): Do more context adjustment for local classes. + +2021-04-13 Patrick Palka <ppalka@redhat.com> + + PR c++/99008 + * pt.c (do_class_deduction): Reject alias CTAD in C++17 mode + rather than issuing a pedwarn. + * typeck2.c (build_functional_cast_1): Handle CTAD uniformly + for consistent diagnostics. + +2021-04-13 Jason Merrill <jason@redhat.com> + + PR c++/91933 + * class.c (build_base_path): Shortcut simple non-pointer case. + +2021-04-13 Eric Botcazou <ebotcazou@adacore.com> + + * module.cc (ordinary_loc_of): Test LINEMAPS_MACRO_LOWEST_LOCATION + of the linemap. + (module_state::write_location): Likewise. + +2021-04-13 Patrick Palka <ppalka@redhat.com> + + PR c++/97134 + * pt.c (do_class_deduction): Look through EXPR_PACK_EXPANSION + when checking if the initializer is an equivalent class + placeholder template parameter. + +2021-04-13 Patrick Palka <ppalka@redhat.com> + + PR c++/99961 + PR c++/99994 + * constraint.cc (satisfy_normalized_constraints): Set + cp_unevaluated. + * parser.c (cp_parser_concept_definition): Likewise. + (cp_parser_requires_clause_opt): Likewise. + +2021-04-12 Jason Merrill <jason@redhat.com> + + PR c++/93085 + * pt.c (uses_outer_template_parms): Handle non-type and template + template parameters specifically. + +2021-04-11 Jason Merrill <jason@redhat.com> + + PR c++/97974 + * decl.c (fixup_anonymous_aggr): Prune all functions from + CLASSTYPE_MEMBER_VEC. + +2021-04-10 Jason Merrill <jason@redhat.com> + + PR c++/98800 + PR c++/97399 + * parser.c (cp_parser_direct_declarator): Don't + inject_this_parameter if static_p. + (cp_parser_omp_var_list_no_open): Parse 'this' even if + current_class_ptr isn't set for a better diagnostic. + +2021-04-10 Jason Merrill <jason@redhat.com> + + PR c++/99180 + PR c++/93295 + PR c++/93867 + PR c++/99118 + PR c++/96873 + * pt.c (alias_ctad_tweaks): Handle failure better. + +2021-04-10 Jason Merrill <jason@redhat.com> + + PR c++/100006 + * pt.c (find_parameter_packs_r) [TAG_DEFN]: Look into bases. + +2021-04-09 Patrick Palka <ppalka@redhat.com> + + * cp-tree.h (LAMBDA_EXPR_REGENERATED_FROM) + (LAMBDA_EXPR_REGENERATING_TARGS): Replace these with ... + (LAMBDA_EXPR_REGEN_INFO): ... this. + (tree_lambda_expr::regenerated_from) + (tree_lambda_expr::regenerating_targs): Replace these with ... + (tree_lambda_expr::regen_info): ... this. + * constraint.cc (satisfy_declaration_constraints): Adjust + accordingly. + * lambda.c (build_lambda_expr): Likewise. + * pt.c (regenerated_lambda_fn_p): Likewise. + (most_general_lambda): Likewise. + (tsubst_lambda_expr): Likewise. + +2021-04-09 Marek Polacek <polacek@redhat.com> + + PR c++/99806 + * parser.c (cp_parser_member_declaration): Call + cp_parser_save_default_args even for function templates. Use + STRIP_TEMPLATE on the declaration we're passing. + +2021-04-08 Patrick Palka <ppalka@redhat.com> + + PR c++/99874 + * constraint.cc (get_normalized_constraints_from_decl): Handle + regenerated lambdas. + (satisfy_declaration_constraints): Likewise. Check for + dependent args later. + * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): Replace with ... + (LAMBDA_EXPR_REGENERATED_FROM): ... this. + (LAMBDA_EXPR_REGENERATING_TARGS): New. + (tree_lambda_expr::regenerated_from): New data member. + (tree_lambda_expr::regenerating_targs): New data member. + (add_to_template_args): Declare. + (regenerated_lambda_fn_p): Likewise. + (most_general_lambda): Likewise. + * lambda.c (build_lambda_expr): Set LAMBDA_EXPR_REGENERATED_FROM + and LAMBDA_EXPR_REGENERATING_TARGS. + * pt.c (add_to_template_args): No longer static. + (tsubst_function_decl): Unconditionally propagate constraints on + the substituted function decl. + (instantiated_lambda_fn_p): Rename to ... + (regenerated_lambda_fn_p): ... this. Check + LAMBDA_EXPR_REGENERATED_FROM instead of + LAMBDA_EXPR_INSTANTIATED. + (most_general_lambda): Define. + (enclosing_instantiation_of): Adjust after renaming + instantiated_lambda_fn_p. + (tsubst_lambda_expr): Don't set LAMBDA_EXPR_INSTANTIATED. Set + LAMBDA_EXPR_REGENERATED_FROM and LAMBDA_EXPR_REGENERATING_TARGS. + Don't substitute or set constraints on the regenerated lambda. + +2021-04-08 Patrick Palka <ppalka@redhat.com> + + PR c++/97679 + * pt.c (build_deduction_guide): Document OUTER_ARGS. Substitute + them into the propagated constraints. + +2021-04-08 Jason Merrill <jason@redhat.com> + + PR c++/91849 + * call.c (convert_like_internal): Improve reference diagnostic. + +2021-04-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/99859 + * constexpr.c (addr_of_non_const_var): New function. + (cxx_bind_parameters_in_call): Set *non_constant_args to true + even if cp_walk_tree on arg with addr_of_non_const_var callback + returns true. + +2021-04-08 Jason Merrill <jason@redhat.com> + + PR c++/94529 + * pt.c (determine_specialization): Improve diagnostic. + +2021-04-08 Marek Polacek <polacek@redhat.com> + + PR c++/99844 + * decl.c (build_explicit_specifier): Call + check_for_bare_parameter_packs. + * except.c (build_noexcept_spec): Likewise. + +2021-04-07 Jason Merrill <jason@redhat.com> + + PR c++/41723 + * parser.c (cp_parser_class_name): Check dependent_scope_p. + +2021-04-07 Jason Merrill <jason@redhat.com> + + PR c++/52625 + * pt.c (maybe_process_partial_specialization): Check + DECL_SELF_REFERENCE_P. + +2021-04-07 Jason Merrill <jason@redhat.com> + + PR c++/92918 + * name-lookup.c (push_class_level_binding_1): Do overload a new + function with a previous using-declaration. + +2021-04-06 Jason Merrill <jason@redhat.com> + + PR c++/96673 + * init.c (get_nsdmi): Don't defer access checking. + +2021-04-06 Jason Merrill <jason@redhat.com> + + PR c++/99901 + * decl.c (cp_finish_decl): mark_needed an implicitly inline + static data member with an out-of-class redeclaration. + +2021-04-06 Jason Merrill <jason@redhat.com> + + PR c++/91241 + * mangle.c (write_compact_number): Add sanity check. + (write_local_name): Use list_length for parm number. + +2021-04-06 Patrick Palka <ppalka@redhat.com> + + PR c++/99899 + * pt.c (do_auto_deduction): Don't exit early when deducing the + array type of a structured binding. Also handle adc_decomp_type + during constraint checking. + +2021-04-05 Jason Merrill <jason@redhat.com> + + PR c++/96311 + * typeck.c (check_return_expr): Call mark_exp_read in dependent + case. + +2021-04-05 Jason Merrill <jason@redhat.com> + + PR c++/98440 + * typeck.c (build_reinterpret_cast_1): Don't perform + temporary materialization. + +2021-04-05 Jason Merrill <jason@redhat.com> + + PR c++/95317 + * pt.c (lookup_template_class_1): Do tsubst_enum when + tsubsting a generic lambda. + +2021-04-05 Jason Merrill <jason@redhat.com> + + PR c++/95870 + * pt.c (enclosing_instantiation_of): Compare DECL_SOURCE_LOCATION if + there is no enclosing non-lambda function. + +2021-04-05 Nathan Sidwell <nathan@acm.org> + + PR c++/99380 + * module.cc (name_pending_imports): Drop 'atend' parm. Don't + query export when not needed. + (preprocess_module, preprocessed_module): Adjust. + +2021-04-05 Jason Merrill <jason@redhat.com> + + PR c++/99066 + * pt.c (mark_decl_instantiated): Set DECL_EXTERNAL. + +2021-04-05 Jason Merrill <jason@redhat.com> + + PR c++/99201 + * pt.c (class el_data): Add visited field. + (extract_local_specs): Pass it to cp_walk_tree. + (extract_locals_r): Walk into the body of a lambda. + +2021-04-05 Jason Merrill <jason@redhat.com> + + * ptree.c (cxx_print_decl): Check DECL_MODULE_IMPORT_P on + template result. + +2021-04-04 Jason Merrill <jason@redhat.com> + + PR c++/99643 + * typeck2.c (massage_init_elt): Don't strip TARGET_EXPR. + +2021-04-03 Marek Polacek <polacek@redhat.com> + + PR c++/91416 + * parser.c: Create a GC root for attributes in a decl specifier. + (cp_parser_type_specifier): Push/pop ->attributes onto/from it. + +2021-04-03 Jason Merrill <jason@redhat.com> + + PR c++/91217 + * pt.c (tsubst_lambda_expr): Skip the body block from + DECL_SAVED_TREE. + +2021-04-03 Jason Merrill <jason@redhat.com> + + PR c++/90664 + * cvt.c (can_convert_qual): Check fnptr_conv_p. + +2021-04-03 Jason Merrill <jason@redhat.com> + + PR c++/97900 + * pt.c (regenerate_decl_from_template): tsubst_decl + the parms. + +2021-04-02 Patrick Palka <ppalka@redhat.com> + + PR c++/99869 + * parser.c (do_range_for_auto_deduction): Pass adc_variable_type + to do_auto_deduction. + +2021-04-02 Patrick Palka <ppalka@redhat.com> + + PR c++/99586 + * semantics.c (finish_compound_literal): Check + template_placeholder_p instead of type_uses_auto. + +2021-04-02 Jason Merrill <jason@redhat.com> + + PR c++/97938 + * cp-tree.h (PACK_EXPANSION_AUTO_P): New. + * lambda.c (add_capture): Set it. + * pt.c (tsubst_pack_expansion): Handle it. + +2021-04-02 Nathan Sidwell <nathan@acm.org> + + * cp-tree.h (lang_decl_base): Correct module flag comment. + * module.cc (trees_in::assert_definition): Break out + not_tmpl var. + (trees_out::lang_decl_bools): Do not write purview for header units. + +2021-04-01 Marek Polacek <polacek@redhat.com> + + PR c++/99831 + * method.c (defaulted_late_check): ++ and -- function_depth around + the call to synthesize_method. + * pt.c: Remove the saved_trees global. + +2021-04-01 Jason Merrill <jason@redhat.com> + + PR c++/99583 + PR c++/99584 + * tree.c (cp_walk_subtrees) [FUNCTION_TYPE]: Walk into + TYPE_RAISES_EXCEPTIONS. + +2021-04-01 Iain Sandoe <iain@sandoe.co.uk> + + * mapper-client.cc (INCLUDE_MAP): New; require map to be + included from system.h. + * mapper-resolver.cc (INCLUDE_MAP): Likewise. + +2021-04-01 Jason Merrill <jason@redhat.com> + + PR c++/98481 + * mangle.c (write_expression): Adjust. + * class.c (find_abi_tags_r): Disable PR98481 fix for ABI v14. + (mark_abi_tags_r): Likewise. + +2021-04-01 Nathan Sidwell <nathan@acm.org> + + PR c++/99283 + * module.cc (trees_out::decl_node): Adjust importedness reference + assert. + (module_state::intercluster_seed): New. Seed both imports and + inter-cluster references. Broken out of ... + (module_state::write_cluster): ... here. Call it. + +2021-03-31 Jason Merrill <jason@redhat.com> + + PR c++/99445 + * tree.c (strip_typedefs): Handle TYPE_PACK_EXPANSION. + +2021-03-31 Patrick Palka <ppalka@redhat.com> + + PR c++/88115 + * mangle.c (write_expression): Adjust the mangling of + __alignof__. + +2021-03-31 Patrick Palka <ppalka@redhat.com> + + PR c++/99815 + * pt.c (placeholder_type_constraint_dependent_p): Expand + argument packs to separate the first non-pack argument + from the rest. + +2021-03-30 Nathan Sidwell <nathan@acm.org> + + PR c++/99283 + * module.cc (dumper::operator): Make less brittle. + (trees_out::core_bools): VAR_DECLs always have a context. + (trees_out::key_mergeable): Use same_type_p for asserting. + (trees_in::read_var_def): Propagate + DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. + +2021-03-30 Jakub Jelinek <jakub@redhat.com> + + PR c++/99790 + * cp-gimplify.c (cp_gimplify_expr): Handle PTRMEM_CST. + +2021-03-26 Marek Polacek <polacek@redhat.com> + + PR c++/98352 + * method.c (implicitly_declare_fn): Pass &raises to + synthesized_method_walk. + +2021-03-26 Nathan Sidwell <nathan@acm.org> + + PR c++/99283 + * cp-tree.h (DECL_MODULE_CHECK): Ban TEMPLATE_DECL. + (SET_TYPE_TEMPLATE_INFO): Restore Alias template setting. + * decl.c (duplicate_decls): Remove template_decl module flag + propagation. + * module.cc (merge_kind_name): Add alias tmpl spec as a thing. + (dumper::impl::nested_name): Adjust for template-decl module flag + change. + (trees_in::assert_definition): Likewise. + (trees_in::install_entity): Likewise. + (trees_out::decl_value): Likewise. Remove alias template + separation of template and type_decl. + (trees_in::decl_value): Likewise. + (trees_out::key_mergeable): Likewise, + (trees_in::key_mergeable): Likewise. + (trees_out::decl_node): Adjust for template-decl module flag + change. + (depset::hash::make_dependency): Likewise. + (get_originating_module, module_may_redeclare): Likewise. + (set_instantiating_module, set_defining_module): Likewise. + * name-lookup.c (name_lookup::search_adl): Likewise. + (do_pushdecl): Likewise. + * pt.c (build_template_decl): Likewise. + (lookup_template_class_1): Remove special alias_template handling + of DECL_TI_TEMPLATE. + (tsubst_template_decl): Likewise. + +2021-03-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/99705 + * tree.c (bot_manip): Remap artificial automatic temporaries mentioned + in DECL_EXPR or in BIND_EXPR_VARS. + +2021-03-25 Jakub Jelinek <jakub@redhat.com> + + PR c++/99672 + * parser.c (cp_parser_postfix_expression): For calls, create + combined_loc and temporarily set input_location to it before + calling finish_call_expr. + +2021-03-25 Marek Polacek <polacek@redhat.com> + + PR c++/94751 + * call.c (build_over_call): Maybe call mark_used in case + deduce_inheriting_ctor fails and return error_mark_node. + * cp-tree.h (deduce_inheriting_ctor): Adjust declaration. + * method.c (deduce_inheriting_ctor): Return bool if the deduction + fails. + (implicitly_declare_fn): If raises is error_mark_node, call + synthesized_method_walk with diag being true. + +2021-03-25 Jakub Jelinek <jakub@redhat.com> + + PR c++/99745 + * decl2.c (grokbitfield): Diagnose bitfields containing bare parameter + packs and don't set DECL_BIT_FIELD_REPRESENTATIVE in that case. + +2021-03-25 Marek Polacek <polacek@redhat.com> + + PR c++/99331 + * call.c (build_converted_constant_expr_internal): Don't emit + -Wconversion warnings. + +2021-03-25 Jakub Jelinek <jakub@redhat.com> + + PR c++/99565 + * call.c (build_conditional_expr_1): Pass OEP_ADDRESS_OF_SAME_FIELD + to operand_equal_p. + * cvt.c (convert_to_void): Preserve location_t on COND_EXPR or + or COMPOUND_EXPR. + +2021-03-23 Nathan Sidwell <nathan@acm.org> + + PR c++/99283 + * name-lookup.c (check_module_override): Set global or partition + DUP on the binding vector. + +2021-03-23 Marek Polacek <polacek@redhat.com> + + PR c++/99318 + * decl2.c (cp_warn_deprecated_use_scopes): Only call + cp_warn_deprecated_use when decl is a namespace, class, or enum. + +2021-03-23 Nathan Sidwell <nathan@acm.org> + + PR c++/99239 + * decl.c (duplicate_decls): Remove assert about maybe-imported + artificial decls. + +2021-03-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/99650 + * decl.c (cp_finish_decomp): Diagnose void initializers when + using tuple_element and get. + +2021-03-22 Nathan Sidwell <nathan@acm.org> + + PR c++/99480 + * module.cc (depset::hash::make_dependency): Propagate flags for + partial specialization. + (module_may_redeclare): Handle partial specialization. + +2021-03-22 Nathan Sidwell <nathan@acm.org> + + PR c++/99425 + * cp-tree.h (map_context_from, map_context_to): Delete. + (add_mergeable_specialization): Add is_alias parm. + * pt.c (add_mergeable_specialization): Add is_alias parm, add them. + * module.cc (map_context_from, map_context_to): Delete. + (trees_in::decl_value): Add specializations later, adjust call. + Drop useless alias lookup. Set duplicate fn parm context. + (check_mergeable_decl): Drop context mapping. + (trees_in::is_matching_decl): Likewise. + (trees_in::read_function_def): Drop parameter context adjustment + here. + +2021-03-22 Martin Liska <mliska@suse.cz> + + PR c++/99687 + * module.cc (fini_modules): Call vec_free instead of delete. + +2021-03-20 Jakub Jelinek <jakub@redhat.com> + + PR debug/99230 + * cp-gimplify.c (cp_genericize_r) <case STATEMENT_LIST>: Remove + special code, instead call c_genericize_control_stmt. + +2021-03-19 Jakub Jelinek <jakub@redhat.com> + + PR c++/99456 + * constexpr.c (cxx_eval_constant_expression): For CONVERT_EXPR from + INDIRECT_TYPE_P to ARITHMETIC_TYPE_P, when !ctx->manifestly_const_eval + don't diagnose it, set *non_constant_p nor return t. + +2021-03-19 Marek Polacek <polacek@redhat.com> + + PR c++/99500 + * parser.c (cp_parser_requirement_parameter_list): Handle + error_mark_node. + +2021-03-18 Marek Polacek <polacek@redhat.com> + + * pt.c (tsubst_copy_and_build) <case FLOAT_EXPR>: Remove. + +2021-03-18 Marek Polacek <polacek@redhat.com> + + * pt.c (tsubst_copy_and_build): Add assert. + +2021-03-18 Iain Sandoe <iain@sandoe.co.uk> + + PR objc++/49070 + * parser.c (cp_debug_parser): Add Objective-C++ message + state flag. + (cp_parser_nested_name_specifier_opt): Allow colon to + terminate an assignment-expression when parsing Objective- + C++ messages. + (cp_parser_objc_message_expression): Set and clear message + parsing state on entry and exit. + * parser.h (struct cp_parser): Add a context flag for + Objective-C++ message state. + +2021-03-18 Martin Liska <mliska@suse.cz> + + PR c++/99617 + * coroutines.cc (struct var_nest_node): Init then_cl and else_cl + to NULL. + +2021-03-17 Marek Polacek <polacek@redhat.com> + + PR c++/97973 + * call.c (conv_unsafe_in_template_p): New. + (convert_like): Use it. + +2021-03-17 Anthony Sharp <anthonysharp15@gmail.com> + Jason Merrill <jason@redhat.com> + + * semantics.c (get_class_access_diagnostic_decl): New + function that examines special cases when a parent + class causes a private access failure. + (enforce_access): Slightly modified to call function + above. + +2021-03-16 Jason Merrill <jason@redhat.com> + + * tree.c (cp_tree_equal): Use real_identical. + +2021-03-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/99613 + * decl.c (expand_static_init): For thread guards, call __cxa_atexit + before calling __cxa_guard_release rather than after it. Formatting + fixes. + +2021-03-16 Martin Liska <mliska@suse.cz> + Jason Merrill <jason@redhat.com> + + PR c++/99108 + * call.c (get_function_version_dispatcher): Handle + DECL_LOCAL_DECL_P. + * decl.c (maybe_version_functions): Likewise. + (maybe_mark_function_versioned): New. + * name-lookup.c (push_local_extern_decl_alias): No longer static. + * name-lookup.h (push_local_extern_decl_alias): Adjust. + +2021-03-16 Nathan Sidwell <nathan@acm.org> + + PR c++/99496 + * module.cc (trees_out::decl_value): Adjust typedef streaming, + indicate whether it is a dependent alias. + (trees_in::decl_value): Likewise. Set as dependent alias, if it + is one. + +2021-03-15 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/99047 + * coroutines.cc (expand_one_await_expression): If the + await_ready() expression is not a boolean then convert it + as required. + +2021-03-15 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/98704 + * coroutines.cc (build_actor_fn): Make destroy index 1 + correspond to the abnormal unhandled_exception() exit. + Substitute the proxy for the resume index. + (coro_rewrite_function_body): Arrange to reset the resume + index and make done = true for a rethrown exception from + unhandled_exception (). + (morph_fn_to_coro): Adjust calls to build_actor_fn and + coro_rewrite_function_body. + +2021-03-15 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/98480 + * coroutines.cc (replace_continue): Rewrite continue into + 'goto label'. + (await_statement_walker): Handle await expressions in the + initializer, condition and iteration expressions of for + loops. + +2021-03-15 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/96749 + * coroutines.cc (flatten_await_stmt): Allow for the case + where a target expression variable only has uses in the + second part of a compound expression. + (maybe_promote_temps): Avoid emiting empty statements. + +2021-03-15 Tobias Burnus <tobias@codesourcery.com> + + PR c++/99509 + * decl.c (cp_finish_decl): For 'omp declare target implicit' vars, + ensure that the varpool node is marked as offloadable. + +2021-03-12 Nathan Sidwell <nathan@acm.org> + + PR c++/99238 + * module.cc (depset::hash::add_binding_entity): Assert not + visited. + (depset::add::add_specializations): Likewise. + * name-lookup.c (name_lookup::dedup): New. + (name_lookup::~name_lookup): Assert not deduping. + (name_lookup::restore_state): Likewise. + (name_lookup::add_overload): Replace outlined code with dedup + call. + (name_lookup::add_value): Likewise. + (name_lookup::search_namespace_only): Likewise. + (name_lookup::adl_namespace_fns): Likewise. + (name_lookup::adl_class_fns): Likewise. + (name_lookup::search_adl): Likewise. Add clearing dedup call. + (name_lookup::search_qualified): Likewise. + (name_lookup::search_unqualified): Likewise. + +2021-03-12 Jakub Jelinek <jakub@redhat.com> + + PR c++/99507 + * call.c (build_over_call): For immediate evaluation of functions + that return references, undo convert_from_reference effects before + calling cxx_constant_value and call convert_from_reference + afterwards. + +2021-03-11 Nathan Sidwell <nathan@acm.org> + + PR c++/99248 + * name-lookup.c (lookup_elaborated_type_1): Access slot not bind + when there's a binding vector. + * ptree.c (cxx_print_xnode): Lazy flags are no longer a thing. + +2021-03-11 Nathan Sidwell <nathan@acm.org> + + PR c++/99528 + * module.cc (enum merge_kind): Delete MK_type_tmpl_spec, + MK_decl_tmpl_spec. + (trees_in::decl_value): Adjust add_mergeable_specialization call. + (trees_out::get_merge_kind): Adjust detecting a partial template + instantiation. + (trees_out::key_mergeable): Adjust handling same. + (trees_in::key_mergeabvle): Likewise. + +2021-03-10 Nathan Sidwell <nathan@acm.org> + + PR c++/99423 + * module.cc (post_load_processing): Assert not gcable. + (laxy_load_pendings): Extend no-gc region around + post_load_processing. + +2021-03-10 Nathan Sidwell <nathan@acm.org> + + PR c++/99508 + * decl.c (make_rtl_for_nonlocal_decl): Propagate local-extern's + assembler name to the ns alias. + +2021-03-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/99459 + * coroutines.cc (build_co_await): Look through NOP_EXPRs in + build_special_member_call return value to find the CALL_EXPR. + Simplify. + +2021-03-09 Nathan Sidwell <nathan@acm.org> + + PR c++/99472 + * parser.c (cp_parser_diagnose_invalid_type_name): Clarify + that C++20 does not yet imply modules. + +2021-03-08 Nathan Sidwell <nathan@acm.org> + + PR c++/99436 + * name-lookup.c (get_cxx_dialect_name): Add cxx23. + +2021-03-08 Nathan Sidwell <nathan@acm.org> + + * lex.c (module_token_filter::resume): Ignore module-decls inside + header-unit. + * parser.c (cp_parser_module_declaration): Reject in header-unit. + +2021-03-08 Nathan Sidwell <nathan@acm.org> + + PR c++/99285 + * cp-tree.h (match_mergeable_specialization) + (add_mergeable_specialization): Adjust parms. + * module.cc (trees_in::decl_value): Adjust + add_mergeable_specialization calls. + (trees_out::key_mergeable): Adjust match_mergeable_specialization + calls. + (specialization_add): Likewise. + * pt.c (match_mergeable_specialization): Do not insert. + (add_mergeable_specialization): Add to hash table here. + +2021-03-06 Patrick Palka <ppalka@redhat.com> + Jakub Jelinek <jakub@redhat.com> + + PR c++/99287 + * constexpr.c (cxx_eval_increment_expression): Pass lval when + evaluating the MODIFY_EXPR, and update 'mod' with the result of + this evaluation. Check *non_constant_p afterwards. For prefix + ops, just return 'mod'. + +2021-03-06 Patrick Palka <ppalka@redhat.com> + Jakub Jelinek <jakub@redhat.com> + + PR c++/96330 + * pt.c (tsubst_copy) <case TEMPLATE_ID_EXPR>: Rename local + variable 'fn' to 'tmpl'. Handle a variable template-id by + calling lookup_template_variable. + +2021-03-06 Patrick Palka <ppalka@redhat.com> + + PR c++/99365 + * pt.c (unify) <case TEMPLATE_TYPE_PARM>: Pass targs as + outer_targs to do_auto_deduction. + (placeholder_type_constraint_dependent_p): Define. + (do_auto_deduction): When processing_template_decl != 0 + and context is adc_unify and we have constraints, pretend the + constraints are satisfied instead of punting. Otherwise don't + punt unless placeholder_type_constraint_dependent_p holds. + Add some clarifying sanity checks. Add a hack to add missing + outermost template levels to outer_args before checking + satisfaction. Don't substitute outer_targs into type if it's + already been done. + +2021-03-05 Marek Polacek <polacek@redhat.com> + + PR c++/99374 + * call.c (standard_conversion): When converting pointers to + member, don't return NULL when the bases are equivalent but + incomplete. + +2021-03-05 Marek Polacek <polacek@redhat.com> + + PR c++/99120 + * name-lookup.c (check_local_shadow): Check if the type of decl + is non-null before checking TYPE_PTR*. + +2021-03-05 Nathan Sidwell <nathan@acm.org> + + PR c++/99245 + * module.cc (module_state::write_cluster): Relax binding assert. + +2021-03-05 Nathan Sidwell <nathan@acm.org> + + PR c++/99377 + * pt.c (instantiate_decl): Call set_instantiating_module. + +2021-03-05 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/98118 + * coroutines.cc (build_co_await): Use type_build_ctor_call() + to determine cases when a CTOR needs to be built. + (flatten_await_stmt): Likewise. + (morph_fn_to_coro): Likewise. + +2021-03-05 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/95616 + * coroutines.cc (coro_diagnose_throwing_fn): New helper. + (coro_diagnose_throwing_final_aw_expr): New helper. + (build_co_await): Diagnose throwing final await expression + components. + (build_init_or_final_await): Diagnose a throwing promise + final_suspend() call. + +2021-03-05 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/95615 + * coroutines.cc (struct param_info): Track parameter copies that need + a DTOR. + (coro_get_frame_dtor): New helper function factored from build_actor(). + (build_actor_fn): Use coro_get_frame_dtor(). + (morph_fn_to_coro): Track parameters that need DTORs on exception, + likewise the frame promise and the return object. On exception, run the + DTORs for these, destroy the frame and then rethrow the exception. + +2021-03-05 Nathan Sidwell <nathan@acm.org> + + PR c++/99389 + * pt.c (instantiate_class_template_1): Set instantiating module + here. + +2021-03-05 Tobias Burnus <tobias@codesourcery.com> + + PR c/99137 + * parser.c (cp_parser_oacc_clause_async): Reject comma expressions. + +2021-03-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/88146 + PR c++/99362 + * cvt.c (convert_to_void): Revert 2019-10-17 changes. Clarify + comment. + +2021-03-04 Nathan Sidwell <nathan@acm.org> + + PR c++/99170 + * module.cc (class uintset): Delete. + (typedef attached_map_t): A hash map. + (attached_table): Use attached_map_t. Adjust uses ... + (trees_out::decl_value, trees_in::decl_value): ... here ... + (trees_out::key_mergeable): ... here ... + (trees_in::key_mergeable): ... here ... + (maybe_attach_decl): ... here ... + (direct_import): ... and here. + +2021-03-04 Nathan Sidwell <nathan@acm.org> + + PR c++/99170 + * cp-tree.h + * lex.c (cxx_dup_lang_specific_decl): Adjust for module_attached_p + rename. + * module.cc (class pending_key): New. + (default_hash_traits<pending_key>): New specialization. + (pending_map_t): New typedef. + (pending_table): Replace old table. + (trees_out::lang_decl_bools): Adjust. + (trees_in::lang_decl_bools): Adjust. + (trees_in::install_entity): Drop pending member and specialization + handling. + (find_pending_key): New. + (depset::hash::fiund_dependencies): Use it. + (pendset_lazy_load): Delete. + (module_state::write_cluster): Don't count pendings here. Bye + Duff's device-like thing. + (module_state::write_pendings): Reimplement. + (module_state::read_pendings): Reimplement. + (lazy_specializations_p): Delete. + (module_state::write): Adjust write_pendings call. + (lazy_load_pendings): New. + (lazy_load_specializations): Delete. + (lazy_load_members): Delete. + (init_modules): Adjust. + * name-lookup.c (maybe_lazily_declare): Call lazy_load_pendings + not lazy_load_members. + (note_pending_specializations): Delete. + (load_pending_specializations): Delete. + * name-lookup.h (BINDING_VECTR_PENDING_SPECIALIZATIONS_P): Delete. + (BINDING_VECTOR_PENDING_MEMBERS_P): Delete. + (BINDING_VECTR_PENDING_MEMBERS_P): Delete. + (note_pending_specializations): Delete. + (load_pending_specializations): Delete. + * pt.c (lookup_template_class_1): Call lazy_load_pendings not + lazy_load_specializations. + (instantiate_template_class_1): Likewise. + (instantiate_decl): Call lazy_load_pendings. + * typeck.c (complete_type): Likewise. + +2021-03-03 Nathan Sidwell <nathan@acm.org> + + PR c++/99170 + * module.cc (post_load_decls): New. + (lazy_snum, recursive_lazy): Move earlier. + (module_state::read_cluster): Push cloning onto post_load_decls. + (post_load_processing): New. Do the cloning here. + (module_state::read_inits): Call post_load_processing. + (module_state::read_language): Likewise. + (lazy_load_binding, lazy_load_specializations): Likewise + (lazy_load_members): Likewise + +2021-03-03 Nathan Sidwell <nathan@acm.org> + + PR c++/99170 + * module.cc (trees_out::decl_value): Stream specialization keys + after decl. + (trees_in::decl_value): Stream them back and insert after + completing the decl. + (trees_out::key_mergeable): Drop some streaming here ... + (trees_in::key_mergeable): ... and here. Don't insert into + specialization tables. + +2021-03-03 Patrick Palka <ppalka@redhat.com> + + * constraint.cc (struct sat_info): Document the different + meanings of noisy() and diagnose_unsatisfaction_p() during + satisfaction and requires-expression evaluation. + (tsubst_valid_expression_requirement): Take a sat_info instead + of a subst_info. Perform the substitution quietly first. Fold + in error-replaying code from diagnose_valid_expression. + (tsubst_simple_requirement): Take a sat_info instead of a + subst_info. + (tsubst_type_requirement_1): New. Fold in error-replaying code + from diagnose_valid_type. + (tsubst_type_requirement): Use the above. Take a sat_info + instead of a subst_info. + (tsubst_compound_requirement): Likewise. Fold in + error-replaying code from diagnose_compound_requirement. + (tsubst_nested_requirement): Take a sat_info instead of a + subst_info. Fold in error-replaying code from + diagnose_nested_requirement. + (tsubst_requirement): Take a sat_info instead of a subst_info. + (tsubst_requires_expr): Split into two versions, one that takes + a sat_info argument and another that takes a complain and + in_decl argument. Remove outdated documentation. Document the + effects of the sat_info argument. Don't short-circuit + processing of requirements when diagnosing unsatisfaction, + mirroring diagnose_requires_expr. + (satisfy_nondeclaration_constraint) <case REQUIRES_EXPR>: Remove + assert, and se the three-parameter version of tsubst_requires_expr. + (diagnose_trait_expr): Make static. Take a template argument + vector instead of a parameter mapping. + (diagnose_valid_expression): Remove. + (diagnose_valid_type): Remove. + (diagnose_simple_requirement): Remove. + (diagnose_compound_requirement): Remove. + (diagnose_type_requirement): Remove. + (diagnose_nested_requirement): Remove. + (diagnose_requirement): Remove. + (diagnose_requires_expr): Remove. + (diagnose_atomic_constraint): Take a sat_info instead of a + subst_info. Adjust call to diagnose_trait_expr. Call + tsubst_requires_expr instead of diagnose_requires_expr. + (diagnose_constraints): Remove special casing of REQUIRES_EXPR + and just always call constraint_satisfaction_value. + +2021-03-03 Patrick Palka <ppalka@redhat.com> + + * constexpr.c (cxx_eval_call_expression): Adjust call to + evaluate_concept_check. + (cxx_eval_constant_expression) <case REQUIRES_EXPR>: Use + evaluate_requires_expression instead of + satisfy_constraint_expression. + <case TEMPLATE_ID_EXPR>: Adjust call to evaluate_concept_check. + * constraint.cc (struct sat_info): Adjust comment about which + satisfaction entrypoints use noisy-unsat. + (normalize_template_requirements): Remove (and adjust callers + appropriately). + (normalize_nontemplate_requirements): Likewise. + (tsubst_nested_requirement): Use constraint_satisfaction_value + instead of satisfy_constraint_expression, which'll do the + noisy replaying of ill-formed quiet satisfaction for us. + (decl_satisfied_cache): Adjust comment. + (satisfy_constraint): Rename to ... + (satisfy_normalized_constraints): ... this. + (satisfy_associated_constraints): Remove (and make its + callers check for dependent arguments). + (satisfy_constraint_expression): Rename to ... + (satisfy_nondeclaration_constraints): ... this. Assert that + 'args' is empty when 't' is a concept-id. Removing handling + bare constraint-expressions, and handle REQUIRES_EXPRs + specially. Adjust comment accordingly. + (satisfy_declaration_constraints): Assert in the two-parameter + version that 't' is not a TEMPLATE_DECL. Adjust following + removal of normalize_(non)?template_requirements and + satisfy_asociated_constraints. + (constraint_satisfaction_value): Combine the two- and + three-parameter versions in the natural way. + (constraints_satisfied_p): Combine the one- and two-parameter + versions in the natural way. Improve documentation. + (evaluate_requires_expr): Define. + (evaluate_concept_check): Remove 'complain' parameter. Use + constraint_satisfaction_value instead of + satisfy_constraint_expression. + (diagnose_nested_requirement): Adjust following renaming of + satisfy_constraint_expression. + (diagnose_constraints): Handle REQUIRES_EXPR by going through + diagnose_requires_expr directly instead of treating it as a + constraint-expression. Improve documentation. + * cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Adjust call + to evaluate_concept_check. + <case REQUIRES_EXPR>: Use evaluate_requires_expr instead of + constraints_satisfied_p. + <case TEMPLATE_ID_EXPR>: Adjust call to evaluate_concept_check. + * cp-tree.h (evaluate_requires_expr): Declare. + (evaluate_concept_check): Remove tsubst_flag_t parameter. + (satisfy_constraint_expression): Remove declaration. + (constraints_satisfied_p): Remove one-parameter declaration. + Add a default argument to the two-parameter declaration. + * cvt.c (convert_to_void): Adjust call to + evaluate_concept_check. + +2021-03-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/82959 + * call.c (op_is_ordered): Handle TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR + and COMPOUND_EXPR. + +2021-03-03 Marek Polacek <polacek@redhat.com> + + PR c++/97034 + PR c++/99009 + * pt.c (build_deduction_guide): Use INNERMOST_TEMPLATE_ARGS. + (maybe_aggr_guide): Use the original template type where needed. In + a class member template, partially instantiate the result of + collect_ctor_idx_types. + (do_class_deduction): Defer the deduction until the enclosing + scope is non-dependent. + +2021-03-03 Jason Merrill <jason@redhat.com> + + PR c++/95675 + * call.c (build_temp): Wrap a CALL_EXPR in a TARGET_EXPR + if it didn't get one before. + +2021-03-03 Nathan Sidwell <nathan@acm.org> + + PR c++/99344 + * module.cc (trees_out::decl_node): Small refactor. + (depset::hash::add_binding_entity): Return true on meeting an + import. Set namespace's import here. + (module_state:write_namespaces): Inform of purview too. + (module_state:read_namespaces): Adjust. + * name-lookup.c (implicitly_export_namespace): Delete. + (do_pushdecl): Don't call it. + (push_namespace): Likewise, set purview. + (add_imported_namespace): Reorder parms. + * name-lookup.h (add_imported_namespace): Alter param ordering. + +2021-03-02 Martin Sebor <msebor@redhat.com> + + PR c++/99251 + * class.c (build_base_path): Call build_if_nonnull. + * cp-tree.h (build_if_nonnull): Declare. + * rtti.c (ifnonnull): Rename... + (build_if_nonnull): ...to this. Set no-warning bit on COND_EXPR. + (build_dynamic_cast_1): Adjust to name change. + +2021-03-02 Patrick Palka <ppalka@redhat.com> + + PR c++/96443 + PR c++/96960 + * constraint.cc (type_deducible_p): Don't substitute into the + constraints, and instead just pass 'args' to do_auto_deduction + as the outer template arguments. + (tsubst_parameter_mapping): Remove confused code for handling + placeholder type arguments. + (normalize_placeholder_type_constraint): Define. + (satisfy_constraint_expression): Use it to handle placeholder + 'auto' types. + * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Define. + (PLACEHOLDER_TYPE_CONSTRAINTS): Redefine in terms of the above. + * pt.c (tsubst) <case TEMPLATE_TYPE_PARM>: Use + PLACEHOLDER_TYPE_CONSTRAINTS_INFO instead. + (make_constrained_placeholder_type): Set + PLACEHOLDER_TYPE_CONSTRAINTS_INFO instead. + (do_auto_deduction): Clarify comments about the outer_targs + parameter. Rework satisfaction of a placeholder type constraint + to pass in the complete set of template arguments directly to + constraints_satisfied_p. + (splice_late_return_type): Use PLACEHOLDER_TYPE_CONSTRAINTS_INFO + instead. Also rebuild the the constraint info on the new auto. + +2021-03-02 Patrick Palka <ppalka@redhat.com> + + * constraint.cc (build_parameter_mapping): Rely on the caller to + determine the in-scope template parameters. + (norm_info::norm_info): Delegate the tsubst_flags_t constructor + to the two-parameter constructor. In the two-parameter + constructor, fold in the definition of make_context, set + initial_parms appropriately, and don't set the now-removed + orig_decl member. + (norm_info::make_context): Remove, now that its only use is + inlined into the caller. + (norm_info::update_context): Adjust call to + build_parameter_mapping to pass in the relevant set of in-scope + template parameters. + (norm_info::ctx_parms): Define this member function. + (norm_info::context): Initialize to NULL_TREE. + (norm_info::orig_decl): Remove this data member. + (norm_info::initial_parms): Define this data member. + (normalize_atom): Adjust call to build_parameter_mapping to pass + in the relevant set of in-scope template parameters. Use + info.initial_parms instead of info.orig_decl. + (normalize_constraint_expression): Take a norm_info object + instead of a bool. Cache the result of normalization. + (tsubst_nested_requirement): Call satisfy_constraint_expression + instead of satisfy_constraint, so that we normalize on demand. + (satisfy_constraint_expression): Handle a NESTED_REQ argument. + Adjust call to normalize_constraint_expression. + (finish_nested_requirement): Set the TREE_TYPE of the NESTED_REQ + to current_template_parms. + (diagnose_nested_requirements): Go through + satisfy_constraint_expression, as with tsubst_nested_requirement. + +2021-03-02 Patrick Palka <ppalka@redhat.com> + + * constraint.cc (tsubst_parameter_mapping): Canonicalize the + arguments of a substituted TYPE_ARGUMENT_PACK even if we've + started with a TYPE_ARGUMENT_PACK. + (finish_requires_expr): Don't set DECL_CONTEXT and + CONSTRAINT_VAR_P on each of the introduced parameters here. + * parser.c (cp_parser_requirement_parameter_list): Instead set + these fields earlier, here. + * pt.c (do_auto_deduction): Canonicalize the result of + do_auto_deduction. Pass 'complain' to finish_decltype_type. + +2021-03-02 Patrick Palka <ppalka@redhat.com> + + * constraint.cc (tsubst_simple_requirement): Just return + boolean_true_node on success. + (tsubst_type_requirement): Likewise. + (tsubst_compound_requirement): Likewise. + (tsubst_nested_requirement): Likewise. + (tsubst_requirement_body): Remove. + (check_constaint_variables): Rename to ... + (check_constraint_variables): ... this. + (tsubst_constraint_variables): Adjust. + (tsubst_requires_expr): Fold tsubst_requirement_body into here. + +2021-03-01 Nathan Sidwell <nathan@acm.org> + + PR c++/99294 + * class.c (fixup_type_variants): Propagate mode, precision, + alignment & emptiness. + * module.cc (trees_out::type_node): Use TYPE_ALIGN_RAW. + (trees_in::tree_node): Rematerialize alignment here. + +2021-02-27 Jason Merrill <jason@redhat.com> + + PR c++/90333 + * parser.c (cp_parser_lambda_declarator_opt): Accept GNU attributes + between () and ->. + +2021-02-26 Jakub Jelinek <jakub@redhat.com> + + * parser.c (cp_parser_lambda_declarator_opt): Implement + P1102R2 - Down with ()! Make ()s optional before lambda specifiers + for -std={c,gnu}++2b or with pedwarn in earlier versions. + +2021-02-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/95451 + * lambda.c (is_lambda_ignored_entity): Before checking for + LAMBDA_FUNCTION_P, use OVL_FIRST. Drop FUNCTION_DECL check. + +2021-02-26 Jason Merrill <jason@redhat.com> + + PR c++/98810 + * pt.c (tsubst_copy) [VIEW_CONVERT_EXPR]: Add const + to a class non-type template argument that needs it. + +2021-02-26 Patrick Palka <ppalka@redhat.com> + + PR c++/98990 + * pt.c (splice_late_return_type): Rebuild the entire return type + if we have to adjust the level of an auto within. + (type_uses_auto): Adjust call to find_type_usage. + * type-utils.h (find_type_usage): Revert r10-6571 change that + made this function return a pointer to the auto node. + +2021-02-25 Patrick Palka <ppalka@redhat.com> + + PR c++/99213 + PR c++/94521 + * error.c (dump_scope): Pass TFF_NO_TEMPLATE_BINDINGS instead of + TFF_NO_FUNCTION_ARGUMENTS when dumping a function scope. + +2021-02-25 Patrick Palka <ppalka@redhat.com> + + PR c++/99103 + * pt.c (is_spec_or_derived): Drop cv-qualifiers from 'etype'. + (maybe_aggr_guide): Fix order of arguments to is_spec_or_derived. + +2021-02-25 Marek Polacek <polacek@redhat.com> + + DR 1312 + PR c++/99176 + * constexpr.c (is_std_construct_at): New overload. + (is_std_allocator_allocate): New overload. + (cxx_eval_call_expression): Use the new overloads. + (cxx_eval_constant_expression): Reject casting + from void * as per DR 1312. Don't check can_convert. + +2021-02-25 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/97587 + * coroutines.cc (struct param_info): Track rvalue refs. + (morph_fn_to_coro): Track rvalue refs, and call the promise + CTOR with the frame copy of passed parms. + +2021-02-25 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/95822 + * coroutines.cc (morph_fn_to_coro): Unconditionally remove any + set throwing_cleanup marker. + +2021-02-25 Nathan Sidwell <nathan@acm.org> + + PR c++/99166 + * module.cc (module_state::inform_cmi_p): Renamed field. + (module_state::do_import): Adjust. + (init_modules, finish_module_processing): Likewise. + (handle_module_option): Likewise. + +2021-02-25 Nathan Sidwell <nathan@acm.org> + + PR c++/98318 + * mapper-client.cc (module_client::open_module_client): Fix typo + of fd init. + +2021-02-24 Nathan Sidwell <nathan@acm.org> + + PR c++/98718 + * module.cc (ool): New indirection vector. + (loc_spans::maybe_propagate): Location is not optional. + (loc_spans::open): Likewise. Assert monotonically advancing. + (module_for_ordinary_loc): Use ool indirection vector. + (module_state::write_prepare_maps): Do not count empty macro + expansions. Elide empty spans. + (module_state::write_macro_maps): Skip empty expansions. + (ool_cmp): New qsort comparator. + (module_state::write): Create and destroy ool vector. + (name_pending_imports): Fix dump push/pop. + (preprocess_module): Likewise. Add more dumping. + (preprocessed_module): Likewise. + +2021-02-24 Iain Sandoe <iain@sandoe.co.uk> + + PR c++/96251 + * coroutines.cc (coro_common_keyword_context_valid_p): Suppress + error reporting when instantiating for a constexpr. + +2021-02-23 Nathan Sidwell <nathan@acm.org> + + PR c++/99208 + * decl.c (name_unnamed_type): Check DECL identity, not IDENTIFIER + identity. + +2021-02-23 Patrick Palka <ppalka@redhat.com> + + PR c++/95468 + * pt.c (tsubst_copy_and_build) <case BASELINK>: New case, copied + over from tsubst_copy. + +2021-02-23 Patrick Palka <ppalka@redhat.com> + + * pt.c (instantiation_dependent_expression_p): Check + processing_template_decl before calling + potential_constant_expression. + +2021-02-22 Nathan Sidwell <nathan@acm.org> + + PR c++/99174 + * module.cc (struct module_state): Add visited_p flag. + (name_pending_imports): Use it to avoid duplicate requests. + (preprocess_module): Don't read preprocessor state if we failed to + load a module's config. + +2021-02-22 Nathan Sidwell <nathan@acm.org> + + PR c++/99153 + * decl.c (duplicate_decls): Move DECL_MODULE_IMPORT_P propagation + to common-path. + * module.cc (set_defining_module): Add assert. + +2021-02-19 Nathan Sidwell <nathan@acm.org> + + PR c++/98741 + * module.cc (pending_imports): New. + (declare_module): Adjust test condition. + (name_pending_imports): New. + (preprocess_module): Reimplement using pending_imports. + (preprocessed_module): Move name-getting to name_pending_imports. + * name-lookup.c (append_imported_binding_slot): Assert module + ordering is increasing. + +2021-02-19 Nathan Sidwell <nathan@acm.org> + + * module.cc (note_cmis): New. + (struct module_state): Add inform_read_p bit. + (module_state::do_import): Inform of CMI location, if enabled. + (init_modules): Canonicalize note_cmis entries. + (handle_module_option): Handle -flang-info-module-read=FOO. + +2021-02-19 Jason Merrill <jason@redhat.com> + + PR c++/96926 + * call.c (perfect_conversion_p): Limit rvalueness + test to reference bindings. + +2021-02-19 Jason Merrill <jason@redhat.com> + + PR c++/96926 + * call.c (perfect_conversion_p): New. + (perfect_candidate_p): New. + (add_candidates): Ignore templates after a perfect non-template. + +2021-02-18 Nathan Sidwell <nathan@acm.org> + + PR c++/99023 + * module.cc (canonicalize_header_name): Use + cpp_probe_header_unit. + (maybe_translate_include): Fix note_includes comparison. + (init_modules): Fix note_includes string termination. + +2021-02-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/99132 + * cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Use + cp_get_callee_fndecl_nofold instead of cp_get_callee_fndecl to check + for immediate function calls. + +2021-02-17 Nathan Sidwell <nathan@acm.org> + + PR c++/99023 + * module.cc (struct macro_export): Add GTY markers. + (macro_exports): Likewise, us a va_gc Vector. + +2021-02-17 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/99106 + * init.c (build_zero_init_1): For flexible array members just return + NULL_TREE instead of returning empty CONSTRUCTOR with non-complete + ARRAY_TYPE. + +2021-02-17 Nathan Sidwell <nathan@acm.org> + + PR c++/99116 + * name-lookup.c (do_pushdecl): Don't peek under template_parm + bindings here ... + (set_identifier_type_value_with_scope): ... or here. + (do_pushtag): Only set_identifier_type_value_with_scope at + non-class template parm scope, and use parent scope. + +2021-02-17 Nathan Sidwell <nathan@acm.org> + + PR c++/99071 + * name-lookup.c (maybe_record_mergeable_decl): Deref the correct + pointer. + +2021-02-17 Patrick Palka <ppalka@redhat.com> + + PR debug/96997 + PR c++/94034 + * tree.c (build_aggr_init_expr): Revert r10-7718 change. + +2021-02-12 Nathan Sidwell <nathan@acm.org> + + * module.cc (module_state::write_cluster): Check bindings for + imported using-decls. + +2021-02-12 Nathan Sidwell <nathan@acm.org> + + PR c++/99040 + * module.cc (trees_in::decl_value): Call add_module_namespace_decl + for new namespace-scope entities. + (module_state::read_cluster): Don't call add_module_decl here. + * name-lookup.h (add_module_decl): Rename to ... + (add_module_namespace_decl): ... this. + * name-lookup.c (newbinding_bookkeeping): Move into ... + (do_pushdecl): ... here. Its only remaining caller. + (add_module_decl): Rename to ... + (add_module_namespace_decl): ... here. Add checking-assert for + circularity. Don't call newbinding_bookkeeping, just extern_c + checking and incomplete var checking. + +2021-02-12 Nathan Sidwell <nathan@acm.org> + + PR c++/99039 + PR c++/99040 + * cp-tree.h (CPTI_GLOBAL_TYPE): Delete. + (global_type_node): Delete. + (IDENTIFIER_TYPE_VALUE): Delete. + (IDENTIFIER_HAS_TYPE_VALUE): Delete. + (get_type_value): Delete. + * name-lookup.h (identifier_type_value): Delete. + * name-lookup.c (check_module_override): Don't + SET_IDENTIFIER_TYPE_VALUE here. + (do_pushdecl): Nor here. + (identifier_type_value_1, identifier_type_value): Delete. + (set_identifier_type_value_with_scope): Only + SET_IDENTIFIER_TYPE_VALUE for local and class scopes. + (pushdecl_nanmespace_level): Remove shadow stack nadgering. + (do_pushtag): Use REAL_IDENTIFIER_TYPE_VALUE. + * call.c (check_dtor_name): Use lookup_name. + * decl.c (cxx_init_decl_processing): Drop global_type_node. + * decl2.c (cplus_decl_attributes): Don't SET_IDENTIFIER_TYPE_VALUE + here. + * init.c (get_type_value): Delete. + * pt.c (instantiate_class_template_1): Don't call pushtag or + SET_IDENTIFIER_TYPE_VALUE here. + (tsubst): Assert never an identifier. + (dependent_type_p): Drop global_type_node assert. + * typeck.c (error_args_num): Don't use IDENTIFIER_HAS_TYPE_VALUE + to determine ctorness. + +2021-02-12 Jakub Jelinek <jakub@redhat.com> + + PR c++/97742 + * parser.c (cp_parser_requirement_seq): Stop iterating after reaching + CPP_EOF. + +2021-02-12 Jason Merrill <jason@redhat.com> + + PR c++/97246 + PR c++/94546 + * pt.c (extract_fnparm_pack): Check DECL_PACK_P here. + (register_parameter_specializations): Not here. + +2021-02-11 Marek Polacek <polacek@redhat.com> + + PR c++/95888 + * pt.c (lookup_template_class_1): Pass tf_none to tsubst when looking + for the partial instantiation. + +2021-02-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/99033 + * init.c (build_zero_init_1): Handle zero initialiation of + flexible array members like initialization of [0] arrays. + Use integer_minus_onep instead of comparison to integer_minus_one_node + and integer_zerop instead of comparison against size_zero_node. + Formatting fixes. + +2021-02-11 Marek Polacek <polacek@redhat.com> + + PR c++/99063 + * semantics.c (finish_do_stmt): Check for unexpanded parameter packs. + +2021-02-11 Patrick Palka <ppalka@redhat.com> + + PR c++/97582 + * name-lookup.c (op_unqualified_lookup): Handle an ambiguous + lookup result by discarding it if the first element is a + class-scope declaration, otherwise return it. + (push_operator_bindings): Handle an ambiguous lookup result by + doing push_local_binding on each element in the list. + +2021-02-11 Marek Polacek <polacek@redhat.com> + + * parser.c (cp_parser_selection_statement): Use vec_free. + +2021-02-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/98988 + PR c++/99031 + * constexpr.c: Include cgraph.h. + (cxx_eval_call_expression): Call varpool_node::finalize_decl on + heap artificial vars. + (cxx_eval_outermost_constant_expr): Remove varpool nodes for + heap artificial vars. + +2021-02-10 Nathan Sidwell <nathan@acm.org> + + PR c++/99030 + * pt.c (tsubst_copy) [VAR_DECL]: For a DECL_LOCAL_DECL_P T is the + answer if there's no local specialization. + +2021-02-09 Nathan Sidwell <nathan@acm.org> + + PR c++/98944 + * module.cc (module_state::is_rooted): Rename to ... + (module_state::has_location): ... here. Adjust callers. + (module_state::read_partitions): Adjust validity check. + Don't overwrite a known location. + +2021-02-09 Jason Merrill <jason@redhat.com> + + PR c++/96905 + * pt.c (mark_decl_instantiated): Exit early if consteval. + +2021-02-09 Jason Merrill <jason@redhat.com> + + PR c++/98326 + PR c++/20408 + * cp-gimplify.c (simple_empty_class_p): Don't touch an invisiref + parm. + +2021-02-09 Jason Merrill <jason@redhat.com> + + PR c++/98994 + PR c++/97566 + * constexpr.c (cxx_eval_store_expression): Only skip empty fields in + RECORD_TYPE. + +2021-02-08 Nathan Sidwell <nathan@acm.org> + + * decl.c (start_cleanup_fn): Push function into + namespace. + +2021-02-08 Nathan Sidwell <nathan@acm.org> + + PR c++/98531 + * cp-tree.h (push_abi_namespace, pop_abi_namespace): Declare. + * decl.c (push_abi_namespace, pop_abi_namespace): Moved + from rtti.c, add default namespace arg. + (check_redeclaration_exception_specification): Allow a lazy + builtin's eh spec to differ from an lready-declared user + declaration. + (declare_global_var): Use push/pop_abi_namespace. + (get_atexit_node): Push the fndecl into a namespace. + * rtti.c (push_abi_namespace, pop_abi_namespace): Moved to + decl.c. + +2021-02-08 Marek Polacek <polacek@redhat.com> + + * cp-tree.h (CLASSTYPE_TI_TEMPLATE): Fix typo. + +2021-02-05 Marek Polacek <polacek@redhat.com> + + PR c++/98947 + * call.c (build_conditional_expr_1): Don't call mark_lvalue_use + on arg2/arg3. + * expr.c (mark_use) <case MODIFY_EXPR>: Don't check read_p when + issuing the -Wvolatile warning. Only set TREE_THIS_VOLATILE if + a warning was emitted. + +2021-02-05 Marek Polacek <polacek@redhat.com> + + PR c++/96462 + * name-lookup.c (lookup_using_decl): Hoist the destructor check. + +2021-02-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/97878 + * decl.c (check_array_initializer): For structured bindings, require + the array type to be complete. + +2021-02-04 Jason Merrill <jason@redhat.com> + + PR c++/98717 + * constraint.cc (build_concept_check_arguments): Remove assert. + (build_concept_check): Allow empty args. + +2021-02-04 Tom Greenslade (thomgree) <thomgree@cisco.com> + + PR c++/90926 + * call.c (can_convert_array): Extend to handle all valid aggregate + initializers of an array; including by string literals, not just by + brace-init-list. + (build_aggr_conv): Call can_convert_array more often, not just in + brace-init-list case. + * typeck2.c (array_string_literal_compatible_p): New function. + (digest_init_r): call array_string_literal_compatible_p + * cp-tree.h: (array_string_literal_compatible_p): Declare. + +2021-02-04 Jason Merrill <jason@redhat.com> + + PR c++/98802 + * pt.c (do_class_deduction): No aggregate guide if any_dguides_p. + +2021-02-04 Jason Merrill <jason@redhat.com> + + PR c++/95192 + * pt.c (tsubst_attribute): Handle error. + (apply_late_template_attributes): Return false on error. + (tsubst_function_decl): Check its return value. + (tsubst_decl): Likewise. + (push_template_decl): Assert current_template_parms. + (tsubst_template_decl): Set current_template_parms. + +2021-02-03 Marek Polacek <polacek@redhat.com> + + PR c++/98951 + * call.c (struct z_candidate): Mark rewritten and reversed as const. + (struct NonPublicField): Mark operator() as const. + (struct NonTrivialField): Likewise. + +2021-02-03 Jason Merrill <jason@redhat.com> + + PR c++/98926 + PR c++/98570 + * pt.c (spec_hasher::equal): Set processing_template_decl. + * Make-lang.in (check-g++-strict-gc): Add --param + hash-table-verification-limit=10000. + +2021-02-03 Marek Polacek <polacek@redhat.com> + + PR c++/98899 + * parser.c (cp_parser_class_specifier_1): Use any possible + DEFPARSE_INSTANTIATIONS to update DEFERRED_NOEXCEPT_PATTERN. + (cp_parser_save_noexcept): Initialize DEFPARSE_INSTANTIATIONS. + * pt.c (tsubst_exception_specification): Stash new_specs into + DEFPARSE_INSTANTIATIONS. + * tree.c (fixup_deferred_exception_variants): Use + UNPARSED_NOEXCEPT_SPEC_P. + +2021-02-02 Jason Merrill <jason@redhat.com> + + PR c++/98929 + PR c++/96199 + * error.c (dump_expr): Ignore dummy object. + * pt.c (tsubst_baselink): Handle dependent scope. + +2021-02-01 Patrick Palka <ppalka@redhat.com> + + PR c++/98295 + * constexpr.c (cxx_eval_array_reference): Also set + new_ctx.object when setting new_ctx.ctor. + +2021-02-01 Marek Polacek <polacek@redhat.com> + + PR c++/98355 + * parser.c (cp_parser_has_attribute_expression): Use + uses_template_parms instead of type_dependent_expression_p. + +2021-02-01 Jason Merrill <jason@redhat.com> + + PR c++/98570 + * cp-tree.h: Declare it. + * pt.c (comparing_dependent_aliases): New flag. + (template_args_equal, spec_hasher::equal): Set it. + (dependent_alias_template_spec_p): Assert that we don't + get non-types other than error_mark_node. + (instantiate_alias_template): SET_TYPE_STRUCTURAL_EQUALITY + on complex alias specializations. Set TYPE_DEPENDENT_P here. + (tsubst_decl): Not here. + * module.cc (module_state::read_cluster): Set + comparing_dependent_aliases instead of + comparing_specializations. + * tree.c (cp_tree_equal): Remove comparing_specializations + module handling. + * typeck.c (structural_comptypes): Adjust. + (comptypes): Remove comparing_specializations handling. + +2021-01-29 Nathan Sidwell <nathan@acm.org> + + PR c++/98843 + * module.cc (module_state_config): Add num_entities field. + (module_state::read_entities): The entity_ary span is + already allocated. + (module_state::write_config): Write num_entities. + (module_state::read_config): Read num_entities. + (module_state::write): Set config's num_entities. + (module_state::read_initial): Allocate the entity ary + span here. + (module_state::read_language): Do not set entity_lwm + here. + +2021-01-29 Marek Polacek <polacek@redhat.com> + + PR c++/96137 + * parser.c (cp_parser_class_name): If parser->scope is + error_mark_node, return it, otherwise continue. + +2021-01-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/98841 + * typeck.c (build_x_indirect_ref): For *this, return current_class_ref. + +2021-01-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/33661 + PR c++/98847 + * decl.c (cp_finish_decl): For register vars with asmspec in templates + call set_user_assembler_name and set DECL_HARD_REGISTER. + * pt.c (tsubst_expr): When instantiating DECL_HARD_REGISTER vars, + pass asmspec_tree to cp_finish_decl. + +2021-01-28 Nathan Sidwell <nathan@acm.org> + + PR c++/98770 + * module.cc (trees_out::decl_value): Swap is_typedef & TYPE_NAME + check order. + (trees_in::decl_value): Do typedef frobbing only when installing + a new typedef, adjust is_matching_decl call. Swap is_typedef + & TYPE_NAME check. + (trees_in::is_matching_decl): Add is_typedef parm. Adjust variable + names and deal with typedef checking. + +2021-01-27 Jason Merrill <jason@redhat.com> + + PR c++/97874 + * name-lookup.c (lookup_using_decl): Clean up handling + of dependency and inherited constructors. + (finish_nonmember_using_decl): Handle DECL_DEPENDENT_P. + * pt.c (tsubst_expr): Handle DECL_DEPENDENT_P. + +2021-01-26 Jason Merrill <jason@redhat.com> + + PR c++/97474 + * call.c (type_passed_as): Don't mark invisiref restrict. + +2021-01-26 Jason Merrill <jason@redhat.com> + + PR c++/97566 + PR c++/98463 + * class.c (layout_class_type): An empty field gets size 0. + (is_empty_field): New. + (check_bases): Check it. + * cp-tree.h (is_empty_field): Declare it. + * constexpr.c (cxx_eval_store_expression): Check it. + (cx_check_missing_mem_inits): Likewise. + * init.c (perform_member_init): Likewise. + * typeck2.c (process_init_constructor_record): Likewise. + +2021-01-25 Martin Sebor <msebor@redhat.com> + + PR c++/98646 + * cvt.c (cp_fold_convert): Propagate TREE_NO_WARNING. + +2021-01-25 Jason Merrill <jason@redhat.com> + + PR c++/98463 + * constexpr.c (get_or_insert_ctor_field): Add check. + (cxx_eval_store_expression): Handle discontinuity of refs. + +2021-01-23 Anthony Sharp <anthonysharp15@gmail.com> + + * call.c (complain_about_access): Altered function. + * cp-tree.h (complain_about_access): Changed parameters of function. + (get_parent_with_private_access): Declared new function. + * search.c (get_parent_with_private_access): Defined new function. + * semantics.c (enforce_access): Modified function. + * typeck.c (complain_about_unrecognized_member): Updated function + arguments in complain_about_access. + +2021-01-23 Patrick Palka <ppalka@redhat.com> + + PR c++/97399 + * cp-tree.h (shared_member_p): Adjust declaration. + * parser.c (cp_parser_init_declarator): If the storage class + specifier is sc_static, pass true for static_p to + cp_parser_declarator. + (cp_parser_direct_declarator): Don't do inject_this_parm when + the declarator is a friend. + * search.c (shared_member_p): Change return type to bool and + adjust function body accordingly. Return false for a dependent + USING_DECL instead of aborting. + * semantics.c (finish_qualified_id_expr): Rely on shared_member_p + even when type-dependent. + +2021-01-22 Marek Polacek <polacek@redhat.com> + + PR c++/96623 + * parser.c (inject_parm_decls): Remove a redundant assignment. + (cp_parser_class_specifier_1): Clear current_class_{ptr,ref} + before calling inject_parm_decls. + +2021-01-22 Jason Merrill <jason@redhat.com> + + PR c++/98744 + * call.c (make_base_init_ok): Use DECL_HAS_VTT_PARM_P. + +2021-01-22 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/95693 + * init.c (build_zero_init_1): Revert the 2018-03-06 change to + return build_zero_cst for reference types. + * typeck2.c (process_init_constructor_record): Instead call + build_zero_cst here during error recovery instead of build_zero_init. + +2021-01-22 Marek Polacek <polacek@redhat.com> + + PR c++/98545 + * mangle.c (write_member_name): Emit abi_warn_or_compat_version_crosses + warnings regardless of abi_version_at_least. + (write_expression): When the expression is a dependent name + and an operator name, write "on" before writing its name. + +2021-01-22 Marek Polacek <polacek@redhat.com> + + PR c++/97966 + * pt.c (instantiate_class_template_1): Instantiate members + marked with attribute used only after we're done instantiating + the class. + +2021-01-21 Patrick Palka <ppalka@redhat.com> + + PR c++/71879 + * semantics.c (finish_decltype_type): Set up a cp_unevaluated + sentinel at the start of the function. Remove a now-redundant + manual adjustment of cp_unevaluated_operand. + +2021-01-21 Nathan Sidwell <nathan@acm.org> + + PR c++/98624 + * module.cc (depset::hash::find_dependencies): Add + module arg. + (trees_out::core_vals): Check state before calling + write_location. + (sort_cluster, module_state::write): Adjust + find_dependencies call. + +2021-01-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/98672 + * constexpr.c (check_for_return_continue_data): Add break_stmt member. + (check_for_return_continue): Also look for BREAK_STMT. Handle + SWITCH_STMT by ignoring break_stmt from its body. + (potential_constant_expression_1) <case FOR_STMT>, + <case WHILE_STMT>: If the condition isn't constant true, check if + the loop body can contain a return stmt. + <case SWITCH_STMT>: Adjust check_for_return_continue_data initializer. + <case IF_STMT>: If recursion with tf_none is successful, + merge *jump_target from the branches - returns with highest priority, + breaks or continues lower. If then branch is potentially constant and + doesn't return, check the else branch if it could return, break or + continue. + +2021-01-21 Nathan Sidwell <nathan@acm.org> + + PR c++/98530 + * name-lookup.c (lookup_class_binding): Rearrange a stat-hack. + +2021-01-20 Nathan Sidwell <nathan@acm.org> + + * module.cc (bytes_in::i, bytes_in::wi): Avoid left shift of + signed type. + +2021-01-20 Patrick Palka <ppalka@redhat.com> + + PR c++/95434 + * pt.c (tsubst) <case TEMPLATE_TYPE_PARM>: If tsubsting + CLASS_PLACEHOLDER_TEMPLATE yields a TEMPLATE_TEMPLATE_PARM, + adjust to its TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL. + +2021-01-20 Patrick Palka <ppalka@redhat.com> + + PR c++/82613 + * parser.c (cp_parser_class_head): Defer access checking when + parsing the base-clause until all bases are seen and attached + to the class type. + * pt.c (instantiate_class_template): Likewise when substituting + into dependent bases. + +2021-01-20 Jakub Jelinek <jakub@redhat.com> + + PR c++/98742 + * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_DETACH>: If + error_operand_p, remove clause without further checking. Check + for non-NULL TYPE_NAME. + +2021-01-19 Marek Polacek <polacek@redhat.com> + + PR c++/98659 + * pt.c (maybe_instantiate_noexcept): Return false if FN is + error_mark_node. + +2021-01-19 Marek Polacek <polacek@redhat.com> + + PR c++/98687 + * name-lookup.c (push_using_decl_bindings): New, broken out of... + (finish_nonmember_using_decl): ...here. + * name-lookup.h (push_using_decl_bindings): Update declaration. + * pt.c (tsubst_expr): Update the call to push_using_decl_bindings. + +2021-01-19 Patrick Palka <ppalka@redhat.com> + + PR c++/41437 + PR c++/58993 + * search.c (friend_accessible_p): If scope is a hidden friend + defined inside a dependent class, consider access from the + class. + * parser.c (cp_parser_late_parsing_for_member): Don't push a + dk_no_check access state. + +2021-01-19 Marek Polacek <polacek@redhat.com> + + PR c++/98333 + * parser.c (cp_parser_class_specifier_1): Perform late-parsing + of NSDMIs before late-parsing of noexcept-specifiers. + +2021-01-19 Nathan Sidwell <nathan@acm.org> + + * module.cc (identifier): Merge overloads. + +2021-01-19 Nathan Sidwell <nathan@acm.org> + + PR c++/98624 + * module.cc (trees_out::write_location): Make static. + +2021-01-16 Kwok Cheung Yeung <kcy@codesourcery.com> + + * parser.c (cp_parser_omp_clause_detach): New. + (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DETACH. + (OMP_TASK_CLAUSE_MASK): Add mask for PRAGMA_OMP_CLAUSE_DETACH. + * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_DETACH clause. + * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_DETACH clause. + Prevent use of detach with mergeable and overriding the data sharing + mode of the event handle. + +2021-01-15 Nathan Sidwell <nathan@acm.org> + + PR c++/98538 + * tree.c (cp_build_qualified_type_real): Propagate an array's + dependentness to the copy, if known. + +2021-01-15 Jason Merrill <jason@redhat.com> + + PR c++/98642 + * call.c (unsafe_return_slot_p): Return int. + (init_by_return_slot_p): Split out from... + (unsafe_copy_elision_p): ...here. + (unsafe_copy_elision_p_opt): New name for old meaning. + (build_over_call): Adjust. + (make_safe_copy_elision): New. + * typeck2.c (split_nonconstant_init_1): Elide copy from safe + list-initialization. + * cp-tree.h: Adjust. + +2021-01-15 Jason Merrill <jason@redhat.com> + + * call.c (base_ctor_for, make_base_init_ok): New. + (build_over_call): Use make_base_init_ok. + +2021-01-15 Jason Merrill <jason@redhat.com> + + PR c++/63707 + * tree.c (build_vec_init_expr): Don't call build_vec_init_elt + if we got a CONSTRUCTOR. + +2021-01-15 Nathan Sidwell <nathan@acm.org> + + PR c++/98591 + * lang-specs.h: Fix handling of -fmodule-only with -fsyntax-only. + +2021-01-14 Jason Merrill <jason@redhat.com> + + * typeck2.c (process_init_constructor_record): Use fldtype + variable consistently. + +2021-01-14 Nathan Sidwell <nathan@acm.org> + + PR c++/98372 + * tree.c (cp_tree_equal): Correct map_context logic. + +2021-01-13 Marek Polacek <polacek@redhat.com> + + PR c++/98231 + * name-lookup.c (push_using_decl_bindings): New. + * name-lookup.h (push_using_decl_bindings): Declare. + * pt.c (tsubst_expr): Call push_using_decl_bindings. + +2021-01-13 Nathan Sidwell <nathan@acm.org> + + PR c++/98626 + * module.cc (module_add_import_initializers): Pass a + zero-element argument vector. + +2021-01-12 Patrick Palka <ppalka@redhat.com> + + PR c++/98611 + * tree.c (cp_walk_subtrees) <case TEMPLATE_TYPE_PARM>: Visit + the template of a CTAD placeholder. + +2021-01-12 Marek Polacek <polacek@redhat.com> + + PR c++/98620 + * typeck2.c (process_init_constructor_record): Don't emit + -Wmissing-field-initializers warnings in unevaluated contexts. + +2021-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/98481 + * class.c (find_abi_tags_r): Set *walk_subtrees to 2 instead of 1 + for types. + (mark_abi_tags_r): Likewise. + * decl2.c (min_vis_r): Likewise. + * tree.c (cp_walk_subtrees): If *walk_subtrees_p is 2, look through + typedefs. + +2021-01-08 Patrick Palka <ppalka@redhat.com> + + PR c++/98551 + * constexpr.c (cxx_eval_call_expression): Check CLASS_TYPE_P + instead of AGGREGATE_TYPE_P before calling replace_result_decl. + +2021-01-08 Patrick Palka <ppalka@redhat.com> + + PR c++/98515 + * semantics.c (check_accessibility_of_qualified_id): Punt if + we're checking access of a scoped non-static member inside a + class template. + +2021-01-07 Jakub Jelinek <jakub@redhat.com> + + PR c++/98329 + * pt.c (tsubst_copy) <case BIT_CAST_EXPR>: Don't call + cp_build_bit_cast here, instead just build_min a BIT_CAST_EXPR and set + its location. + (tsubst_copy_and_build): Handle BIT_CAST_EXPR. + +2021-01-07 Marek Polacek <polacek@redhat.com> + + PR c++/98441 + * decl.c (grokdeclarator): Move the !funcdecl_p check inside the + !late_return_type block. + +2021-01-07 Jason Merrill <jason@redhat.com> + + * constexpr.c (cxx_bind_parameters_in_call): Add comment. + (cxx_eval_store_expression): Add comment. + +2021-01-07 Jason Merrill <jason@redhat.com> + + * call.c (has_next): Factor out from... + (next_conversion): ...here. + (strip_standard_conversion): And here. + (is_subseq): And here. + (build_conv): Check it. + (standard_conversion): Don't call build_conv + for ck_identity. + +2021-01-06 Martin Sebor <msebor@redhat.com> + + PR c++/95768 + * error.c (dump_expr): Call c_pretty_printer::unary_expression. + +2021-01-05 Patrick Palka <ppalka@redhat.com> + + * pt.c (unify) <case TEMPLATE_PARM_INDEX>: After walking into + the type of the NTTP, substitute into the type again. If the + type is still dependent, don't unify the NTTP. + +2021-01-05 Jakub Jelinek <jakub@redhat.com> + + * Make-lang.in (cc1plus-checksum, cc1plus$(exeext): Add + $(CODYLIB) after $(BACKEND). + +2021-01-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/98469 + * constexpr.c (cxx_eval_constant_expression) <case BIT_CAST_EXPR>: + Punt if lval is true. + * semantics.c (cp_build_bit_cast): Call get_target_expr_sfinae on + the result if it has a class type. + +2021-01-05 Marek Polacek <polacek@redhat.com> + + PR c++/82099 + * pt.c (resolve_overloaded_unification): Call + maybe_instantiate_noexcept after instantiating the function + decl. + +2021-01-05 Nathan Sidwell <nathan@acm.org> + + * parser.c (cp_parser_module_declaration): Alter diagnostic + text to say where is permissable. + +2021-01-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR c++/98316 + * Make-lang.in (cc1plus$(exeext)): Add $(CODYLIB), $(NETLIBS). + +2021-01-02 Jan Hubicka <jh@suse.cz> + + * cp-tree.h (cp_tree_c_finish_parsing): Declare. + * decl2.c (c_parse_final_cleanups): Call cp_tree_c_finish_parsing. + * tree.c (cp_tree_c_finish_parsing): New function. + +2021-01-01 Jakub Jelinek <jakub@redhat.com> + + * ChangeLog-2020: Rotate ChangeLog. New file. + +Copyright (C) 2021 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. |