2022-01-28 Patrick Palka Jason Merrill PR c++/92752 * typeck.cc (build_ptrmemfunc): Cast a nullptr constant to the unqualified pointer type not the qualified one. 2022-01-28 Patrick Palka PR c++/103341 * decl.cc (cp_finish_decl): Pass the template arguments of a variable template specialization or a templated static data member to do_auto_deduction when the auto is constrained. 2022-01-28 Jason Merrill PR c++/100198 PR c++/100030 PR c++/100282 * parser.cc (cp_parser_enumerator_definition): Sorry on parameter pack in lambda. (cp_parser_class_head): And in class attributes. * pt.cc (check_for_bare_parameter_packs): Sorry instead of error in lambda. 2022-01-27 Jason Merrill PR c++/104245 PR c++/51344 * decl2.cc (save_template_attributes): Take late attrs as parm. (cplus_decl_attributes): Call it after decl_attributes, splice_template_attributes before. 2022-01-27 Patrick Palka PR c++/99895 * call.cc (build_over_call): For a non-dependent member call, build up a CALL_EXPR using a COMPONENT_REF callee, as in build_new_method_call. * pt.cc (build_non_dependent_expr): Don't wrap PARM_DECL either. * tree.cc (build_min_non_dep_op_overload): Adjust accordingly after the build_over_call change. 2022-01-27 Patrick Palka PR c++/92944 PR c++/103678 * parser.cc (cp_parser_class_head): Update 'type' with the result of maybe_process_partial_specialization in the nested_name_specifier branch. Refactor nearby code to accomodate that maybe_process_partial_specialization returns a _TYPE, not a TYPE_DECL, and eliminate local variable 'class_type' in passing. 2022-01-27 Marek Polacek PR c++/101988 * decl.cc (create_array_type_for_decl): Reject forming an array of placeholder for a deduced class type. 2022-01-26 Jason Merrill PR c++/104206 PR c++/101072 * semantics.cc (finish_compound_literal): Restore VECTOR_TYPE check. 2022-01-26 Jakub Jelinek PR c++/104226 * constexpr.cc (init_subob_ctx): For vector ctors containing vector elements, ensure appending to the same ctor instead of creating another one. 2022-01-26 Marek Polacek PR target/104213 * decl.cc (finish_constructor_body): Suppress -Wuse-after-free. (finish_destructor_body): Likewise. * optimize.cc (build_delete_destructor_body): Likewise. 2022-01-26 Jason Merrill PR c++/104235 * parser.cc (cp_parser_template_name): Repeat lookup of USING_DECL. 2022-01-26 Jason Merrill PR c++/103057 * pt.cc (tsubst_aggr_type): Call tsubst for alias template specialization. 2022-01-25 Patrick Palka PR c++/101532 PR c++/104225 * decl2.cc (mark_used): Don't consider maybe_instantiate_noexcept on a deleted function. 2022-01-25 Jason Merrill PR c++/59950 * call.cc (build_over_call): Use cp_build_indirect_ref. 2022-01-24 Patrick Palka PR c++/104197 * pt.cc (make_auto_1): Use -1 as a placeholder default argument for level. 2022-01-24 Patrick Palka PR c++/104173 * typeck.cc (build_class_member_access_expr): Extend unary_complex_lvalue result adjustment to preserve all rvalues, not just xvalues. 2022-01-23 Will Wray PR c++/55227 * decl.cc (reshape_init_r): Only call has_designator_check when first_initializer_p or for the inner constructor element. (cp_complete_array_type): Call reshape_init on braced-init-list. 2022-01-23 Jason Merrill PR c++/104182 * cp-gimplify.cc (cp_genericize_target_expr): Make sure nothing has set DECL_INITIAL on a TARGET_EXPR slot. * tree.cc (is_local_temp): Don't check DECL_CONTEXT. 2022-01-23 Jason Merrill PR c++/101072 * cp-tree.h (build_implicit_conv_flags): Declare. * call.cc (build_implicit_conv_flags): Split out from... (perform_implicit_conversion_flags): ...here. * decl.cc (check_initializer): Use it. * pt.cc (tsubst_copy_and_build): Remove TARGET_EXPR handling. * semantics.cc (finish_compound_literal): Don't treat scalar values like CONSTRUCTORs. 2022-01-21 Jason Merrill * semantics.cc (find_failing_clause): Return expr if not decomposable. (finish_static_assert): Show constant values in failing comparison. 2022-01-21 Jason Merrill PR c++/104084 PR c++/20040 * init.cc (build_new_1): Only pull out TARGET_EXPR_INITIAL if alloc_expr is a TARGET_EXPR. 2022-01-21 Marek Polacek PR c++/101715 * tree.cc (fixup_deferred_exception_variants): Remove duplicate variants after parsing the exception specifications. 2022-01-21 Jason Merrill PR c++/104139 PR c++/103681 * class.cc (end_of_class): Use base_binfo. 2022-01-20 Jason Merrill PR c++/101405 * decl.cc (reshape_init_class): Reject designator for a member of another class. 2022-01-20 Patrick Palka PR c++/91911 PR c++/103672 * pt.cc (keep_template_parm): Punt on a level 0 template parm. (tsubst_decl) : Remove !CHECKING_P safeguard. (tsubst) : Handle CTAD placeholders specially. (make_auto_1): Add defaulted 'level' parameter. (make_template_placeholder): Pass 0 as 'level' to make_auto_1. 2022-01-20 Patrick Palka * decl.cc (grokdeclarator): Diagnose a CTAD placeholder as function return type even when !funcdecl_p. 2022-01-20 Martin Liska PR c++/104134 * error.cc (dump_aggr_type): Partially disable the warning. 2022-01-20 Jason Merrill PR c++/102300 * parser.cc (cp_parser_template_name): Use dependent_scope_p. 2022-01-19 David Malcolm * cp-lang.cc (selftest::run_cp_tests): Update calls for .c to .cc renaming. * cp-tree.h (cp_pt_c_tests): Rename to... (cp_pt_cc_tests): ...this. (cp_tree_c_tests): Rename to... (cp_tree_cc_tests): ...this. * pt.cc (cp_pt_c_tests): Rename to... (cp_pt_cc_tests): ...this. * tree.cc (cp_tree_c_tests): Rename to... (cp_tree_cc_tests): ...this. 2022-01-19 Jason Merrill * parser.cc (saved_token_sentinel::rollback): Use cp_lexer_previous_token. 2022-01-18 Jakub Jelinek PR c++/104055 * constexpr.cc (cxx_eval_outermost_constant_expr): If t is a TARGET_EXPR with TARGET_EXPR_CLEANUP, use get_target_expr rather than get_target_expr_sfinae with tf_no_cleanup, and don't set TREE_CONSTANT. 2022-01-18 Jason Merrill Jakub Jelinek PR c++/104025 * parser.cc (saved_token_sentinel::rollback): Call cp_lexer_set_source_position. (~saved_token_sentinel): Call rollback. 2022-01-18 Patrick Palka PR c++/104074 * pt.cc (invalid_nontype_parm_type_p): Use WILDCARD_TYPE_P so that we return false for DEPENDENT_OPERATOR_TYPE too. 2022-01-17 Martin Liska * Make-lang.in: Rename .c names to .cc. * config-lang.in: Likewise. * constexpr.cc (cxx_eval_constant_expression): Likewise. * coroutines.cc (morph_fn_to_coro): Likewise. * cp-gimplify.cc (cp_gimplify_expr): Likewise. * cp-lang.cc (struct lang_hooks): Likewise. (get_template_argument_pack_elems_folded): Likewise. * cp-objcp-common.cc (cp_tree_size): Likewise. (cp_unit_size_without_reusable_padding): Likewise. (pop_file_scope): Likewise. (cp_pushdecl): Likewise. * cp-objcp-common.h (GCC_CP_OBJCP_COMMON): Likewise. (cxx_simulate_record_decl): Likewise. * cp-tree.h (struct named_label_entry): Likewise. (current_function_return_value): Likewise. (more_aggr_init_expr_args_p): Likewise. (get_function_version_dispatcher): Likewise. (common_enclosing_class): Likewise. (strip_fnptr_conv): Likewise. (current_decl_namespace): Likewise. (do_aggregate_paren_init): Likewise. (cp_check_const_attributes): Likewise. (qualified_name_lookup_error): Likewise. (generic_targs_for): Likewise. (mark_exp_read): Likewise. (is_global_friend): Likewise. (maybe_reject_flexarray_init): Likewise. (module_token_lang): Likewise. (handle_module_option): Likewise. (literal_integer_zerop): Likewise. (build_extra_args): Likewise. (build_if_nonnull): Likewise. (maybe_check_overriding_exception_spec): Likewise. (finish_omp_target_clauses): Likewise. (maybe_warn_zero_as_null_pointer_constant): Likewise. (cxx_print_error_function): Likewise. (decl_in_std_namespace_p): Likewise. (merge_exception_specifiers): Likewise. (mangle_module_global_init): Likewise. (cxx_block_may_fallthru): Likewise. (fold_builtin_source_location): Likewise. (enum cp_oracle_request): Likewise. (subsumes): Likewise. (cp_finish_injected_record_type): Likewise. (vtv_build_vtable_verify_fndecl): Likewise. (cp_tree_c_finish_parsing): Likewise. * cvt.cc (diagnose_ref_binding): Likewise. (convert_to_void): Likewise. (convert_force): Likewise. (type_promotes_to): Likewise. * decl.cc (make_unbound_class_template_raw): Likewise. (cxx_init_decl_processing): Likewise. (check_class_member_definition_namespace): Likewise. (cxx_maybe_build_cleanup): Likewise. * decl2.cc (maybe_emit_vtables): Likewise. * error.cc (dump_function_name): Likewise. * init.cc (is_class_type): Likewise. (build_new_1): Likewise. * lang-specs.h: Likewise. * method.cc (make_alias_for_thunk): Likewise. * module.cc (specialization_add): Likewise. (module_state::read_cluster): Likewise. * name-lookup.cc (check_extern_c_conflict): Likewise. * name-lookup.h (struct cxx_binding): Likewise. * parser.cc (cp_parser_identifier): Likewise. * parser.h (struct cp_parser): Likewise. * pt.cc (has_value_dependent_address): Likewise. (push_tinst_level_loc): Likewise. * semantics.cc (finish_omp_clauses): Likewise. (finish_omp_atomic): Likewise. * tree.cc (cp_save_expr): Likewise. (cp_free_lang_data): Likewise. * typeck.cc (cp_common_type): Likewise. (strip_array_domain): Likewise. (rationalize_conditional_expr): Likewise. (check_return_expr): Likewise. * vtable-class-hierarchy.cc: Likewise. 2022-01-17 Martin Liska * call.c: Moved to... * call.cc: ...here. * class.c: Moved to... * class.cc: ...here. * constexpr.c: Moved to... * constexpr.cc: ...here. * cp-gimplify.c: Moved to... * cp-gimplify.cc: ...here. * cp-lang.c: Moved to... * cp-lang.cc: ...here. * cp-objcp-common.c: Moved to... * cp-objcp-common.cc: ...here. * cp-ubsan.c: Moved to... * cp-ubsan.cc: ...here. * cvt.c: Moved to... * cvt.cc: ...here. * cxx-pretty-print.c: Moved to... * cxx-pretty-print.cc: ...here. * decl.c: Moved to... * decl.cc: ...here. * decl2.c: Moved to... * decl2.cc: ...here. * dump.c: Moved to... * dump.cc: ...here. * error.c: Moved to... * error.cc: ...here. * except.c: Moved to... * except.cc: ...here. * expr.c: Moved to... * expr.cc: ...here. * friend.c: Moved to... * friend.cc: ...here. * g++spec.c: Moved to... * g++spec.cc: ...here. * init.c: Moved to... * init.cc: ...here. * lambda.c: Moved to... * lambda.cc: ...here. * lex.c: Moved to... * lex.cc: ...here. * mangle.c: Moved to... * mangle.cc: ...here. * method.c: Moved to... * method.cc: ...here. * name-lookup.c: Moved to... * name-lookup.cc: ...here. * optimize.c: Moved to... * optimize.cc: ...here. * parser.c: Moved to... * parser.cc: ...here. * pt.c: Moved to... * pt.cc: ...here. * ptree.c: Moved to... * ptree.cc: ...here. * rtti.c: Moved to... * rtti.cc: ...here. * search.c: Moved to... * search.cc: ...here. * semantics.c: Moved to... * semantics.cc: ...here. * tree.c: Moved to... * tree.cc: ...here. * typeck.c: Moved to... * typeck.cc: ...here. * typeck2.c: Moved to... * typeck2.cc: ...here. * vtable-class-hierarchy.c: Moved to... * vtable-class-hierarchy.cc: ...here. 2022-01-17 Jakub Jelinek PR c++/104031 * cp-gimplify.c (cp_genericize_target_expr): Set DECL_CONTEXT of TARGET_EXPR_SLOT to current_function_decl if it was NULL. 2022-01-17 Andrew Stubbs * parser.c (cp_parser_omp_requires): Don't "sorry" dynamic_allocators. 2022-01-14 Chung-Lin Tang PR c++/103705 * semantics.c (finish_omp_clauses): Also continue peeling off of outer node for ARRAY_REFs. 2022-01-14 Jakub Jelinek PR c++/103991 * cp-objcp-common.c (cxx_block_may_fallthru) : For IF_STMT_CONSTEXPR_P with constant false or true condition only check if the taken clause may fall through. * cp-gimplify.c (genericize_if_stmt): For consteval if, revert to r12-5638^ behavior if then_ block can't fall through. For constexpr if, revert to r12-5638^ behavior. 2022-01-13 Anthony Sharp Jason Merrill PR c++/70417 * parser.c (cp_parser_id_expression): Handle -Wmissing-template-keyword. (struct saved_token_sentinel): Add modes to control what happens on destruction. (cp_parser_statement): Adjust. (cp_parser_skip_entire_template_parameter_list): New function that skips an entire template parameter list. (cp_parser_require_end_of_template_parameter_list): Rename old cp_parser_skip_to_end_of_template_parameter_list. (cp_parser_skip_to_end_of_template_parameter_list): Refactor to be called from one of the above two functions. (cp_parser_lambda_declarator_opt) (cp_parser_explicit_template_declaration) (cp_parser_enclosed_template_argument_list): Adjust. 2022-01-12 Jakub Jelinek Jason Merrill PR c++/103480 * tree.c (move): If expr is xvalue_p, just return expr without build_static_cast. 2022-01-11 Jakub Jelinek PR c++/101597 * class.c (build_vfn_ref): Build OBJ_TYPE_REF with INTEGER_CST OBJ_TYPE_REF_TOKEN with type equal to OBJ_TYPE_REF_OBJECT type. * error.c (resolve_virtual_fun_from_obj_type_ref): Use type of OBJ_TYPE_REF_TOKEN rather than type of OBJ_TYPE_REF_OBJECT as obj_type. 2022-01-11 Patrick Palka PR c++/103831 * call.c (build_new_method_call): Consider dependent bases only if 'this' is available. 2022-01-11 Olivier Hainque * decl.c (cxx_init_decl_processing): Move code possibly altering flag_weak before code testing it. 2022-01-10 Patrick Palka PR c++/103879 * constexpr.c (cxx_fold_indirect_ref): Split out object/offset canonicalization step into a local lambda. Strengthen it to absorb more components at position 0. Use it before both calls to cxx_fold_indirect_ref_1. 2022-01-10 Patrick Palka PR c++/103783 * call.c (cand_parms_match): Skip over 'this' when given one static and one non-static member function. 2022-01-10 Jakub Jelinek PR c++/103912 * semantics.c (expand_or_defer_fn): For immediate functions, set node->body_removed to true and clear analyzed, definition and force_output. * decl2.c (c_parse_final_cleanups): Ignore immediate functions for expand_or_defer_fn. 2022-01-08 Jakub Jelinek PR c++/89074 * constexpr.c (cxx_maybe_fold_addr_pointer_plus): New function. (cxx_eval_binary_expression): Use it. 2022-01-08 Jason Merrill PR c++/103946 * init.c (build_vec_init): Remove assert. * tree.c (build_vec_init_expr): Likewise. 2022-01-08 Jason Merrill PR c++/100588 * call.c (build_op_delete_call): Ignore destroying delete if alloc_fn. 2022-01-07 Jason Merrill PR c++/20040 * init.c (build_new_1): Also build pointer cleanup if TYPE_GETS_DELETE. * cp-tree.h (TYPE_GETS_VEC_DELETE): New. 2022-01-07 Jason Merrill PR c++/103936 PR c++/65591 * cp-gimplify.c (cp_gimplify_expr): Restore VEC_INIT_EXPR handling. 2022-01-07 Jason Merrill PR c++/103711 * init.c (perform_target_ctor): Select destructor by in_chrg. 2022-01-07 Jason Merrill PR c++/61611 * except.c (in_nested_catch): New. (expand_end_catch_block): Check it. 2022-01-07 Jason Merrill PR c++/33799 PR c++/102191 * except.c (maybe_splice_retval_cleanup): Check current_binding_level. * semantics.c (do_poplevel): Call it here. * parser.c (cp_parser_compound_statement): Not here. 2022-01-07 Jason Merrill PR c++/53868 * decl.c (cp_finish_decl): Use wrap_temporary_cleanups for cleanups from set_up_extended_ref_temp. (wrap_temporary_cleanups): Ignore array cleanups. (initialize_local_var): Don't check for array here. * cp-tree.h (BIND_EXPR_VEC_DTOR): New. * init.c (build_vec_delete_1): Set it. 2022-01-07 Jason Merrill PR c++/66451 * init.c (build_vec_delete_1): Handle throwing dtor. (build_vec_init): Tell it we're in a cleanup already. 2022-01-07 Jason Merrill * typeck2.c (split_nonconstant_init_1): Don't cleanup the last elt. (split_nonconstant_init): Adjust. 2022-01-07 Jason Merrill PR c++/66139 PR c++/52320 * constexpr.c (replace_decl): Rename from replace_result_decl. * cp-tree.h (replace_decl): Declare it. * cp-gimplify.c (cp_gimplify_init_expr): Call it. (cp_gimplify_expr): Don't handle VEC_INIT_EXPR. (cp_genericize_init, cp_genericize_init_expr) (cp_genericize_target_expr): New. (cp_fold_r): Call them. * tree.c (build_array_copy): Add a TARGET_EXPR. * typeck2.c (digest_init_r): Look through a TARGET_EXPR. 2022-01-07 Jason Merrill PR c++/94041 * decl.c (initialize_local_var): Fix comment. * init.c (build_new_1): Do stabilize array init. (build_vec_init): Use TARGET_EXPR for cleanup. Initialization of an element from an explicit initializer is not a full-expression. * tree.c (expand_vec_init_expr): Pass flags through. * typeck2.c (split_nonconstant_init_1): Handle VEC_INIT_EXPR. (split_nonconstant_init): Handle array cleanups. * cp-tree.h: Adjust. 2022-01-07 Jason Merrill PR c++/94041 * decl.c (check_initializer): Remove obsolete comment. (wrap_cleanups_r): Don't wrap CLEANUP_EH_ONLY. (initialize_local_var): Change assert to test. * typeck2.c (maybe_push_temp_cleanup): New. (split_nonconstant_init_1): Use it. (split_nonconstant_init): Clear cleanup flags. 2022-01-07 Jason Merrill PR c++/92385 * typeck2.c (PICFLAG_VEC_INIT): New. (process_init_constructor_array): Set it. (process_init_constructor): Handle it. (split_nonconstant_init_1): Handle VEC_INIT_EXPR. * init.c (build_vec_init): Likewise. * cp-gimplify.c (cp_gimplify_expr): Factor out... * tree.c (expand_vec_init_expr): ...this function. (build_vec_init_elt): Handle BRACE_ENCLOSED_INITIALIZER_P. (build_vec_init_expr): Likewise. * constexpr.c (cxx_eval_vec_init): Likewise. (reduced_constant_expression_p): Check arrays before C++20. * cp-tree.h (expand_vec_init_expr): Declare. 2022-01-07 Jason Merrill * init.c (build_new_1): Remove preevaluation code. 2022-01-05 Nathan Sidwell * pt.c (instantiate_class_template_1): Process attribute((used)) set in class's context. 2022-01-05 Nathan Sidwell * init.c (build_new_1): Check complain before alignment warning. 2022-01-04 Jason Merrill * cp-tree.h (class releasing_vec): Add begin/end fns. 2022-01-04 Jason Merrill * init.c: Include -*- C++ -*- on first line. 2022-01-03 Marek Polacek PR c++/103758 * parser.c (cp_parser_decl_specifier_seq): Replace % with %qD. 2022-01-03 Marek Polacek * parser.c (make_char_string_pack): Add a cast to const unsigned char *. 2022-01-03 Jakub Jelinek PR c++/103600 * rtti.c (get_tinfo_decl_direct): Add "non overlapping" attribute to DECL_TINFO_P VAR_DECLs. 2022-01-02 Jason Merrill * init.c (build_vec_init): Append the decrement to elt_init. 2022-01-02 Jason Merrill * decl.c (wrap_cleanups_r): Don't wrap if noexcept. Copyright (C) 2022 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.