| 2023-06-23 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/110164 |
| * cp-name-hint.h (maybe_suggest_missing_header): New decl. |
| * decl.cc: Define INCLUDE_MEMORY. Add include of |
| "cp/cp-name-hint.h". |
| (start_decl_1): Call maybe_suggest_missing_header. |
| * name-lookup.cc (maybe_suggest_missing_header): Remove "static". |
| |
| 2023-06-16 Alex Coplan <alex.coplan@arm.com> |
| |
| * parser.cc (cp_parser_enum_specifier): Don't reject |
| elaborated-type-specifier with enum-base, instead emit new |
| Welaborated-enum-base warning. |
| |
| 2023-06-14 Jason Merrill <jason@redhat.com> |
| |
| DR 2327 |
| PR c++/86521 |
| * call.cc (joust_maybe_elide_copy): Don't change cand. |
| (joust): Move the elided tiebreaker later. |
| |
| 2023-06-13 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c/84890 |
| * name-lookup.cc (missing_std_header::~missing_std_header): Reword |
| note to avoid negative tone of "forgetting". |
| |
| 2023-06-13 Jason Merrill <jason@redhat.com> |
| |
| * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P. |
| |
| 2023-06-12 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_clause_map): Reword error message for |
| clearness especially with 'omp target (enter/exit) data.' |
| * semantics.cc (handle_omp_array_sections): Handle |
| GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values. |
| |
| 2023-06-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105838 |
| * call.cc (convert_like_internal) [ck_list]: Use |
| maybe_init_list_as_array. |
| * constexpr.cc (cxx_eval_vec_init_1): Init might have |
| a different type. |
| * tree.cc (build_vec_init_elt): Likewise. |
| * init.cc (build_vec_init): Handle from_array from a |
| TARGET_EXPR. Retain TARGET_EXPR of a different type. |
| |
| 2023-06-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110122 |
| * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted |
| functions needed for constant evaluation. |
| (instantiate_cx_fn_r): Likewise. |
| |
| 2023-06-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110122 |
| * pt.cc (lookup_template_class): Extend shortcut for looking up the |
| current class scope to consider outer class scopes too, and use |
| current_nonlambda_class_type instead of current_class_type. Only |
| call coerce_template_parms when specializing a primary template. |
| |
| 2023-06-10 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/61663 |
| * pt.cc (maybe_adjust_types_for_deduction): Implement DR976. |
| |
| 2023-06-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/110185 |
| PR c++/58487 |
| * method.cc (build_comparison_op): Give retval a name. |
| * typeck.cc (check_return_expr): Fix for nameless variables. |
| |
| 2023-06-09 Jason Merrill <jason@redhat.com> |
| |
| * parser.cc (cp_parser_simple_type_specifier): Check for auto |
| in template argument. |
| (cp_parser_template_type_arg): Remove auto checking. |
| |
| 2023-06-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/110102 |
| * call.cc (maybe_init_list_as_array): Check that the element type is |
| copyable. |
| |
| 2023-06-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/58487 |
| PR c++/53637 |
| * cp-tree.h (INIT_EXPR_NRV_P): New. |
| * semantics.cc (finalize_nrv_r): Check it. |
| * name-lookup.h (decl_in_scope_p): Declare. |
| * name-lookup.cc (decl_in_scope_p): New. |
| * typeck.cc (check_return_expr): Allow non-NRV |
| returns if the NRV is no longer in scope. |
| |
| 2023-06-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/58487 |
| * typeck.cc (want_nrvo_p): New. |
| (check_return_expr): Handle -Wnrvo. |
| |
| 2023-06-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/51571 |
| PR c++/92407 |
| * decl.cc (finish_function): Simplify NRV handling. |
| * except.cc (maybe_set_retval_sentinel): Also set if NRV. |
| (maybe_splice_retval_cleanup): Don't add the cleanup region |
| if we don't need it. |
| * semantics.cc (nrv_data): Add simple field. |
| (finalize_nrv): Set it. |
| (finalize_nrv_r): Check it and retval sentinel. |
| * cp-tree.h (finalize_nrv): Adjust declaration. |
| * typeck.cc (check_return_expr): Remove named_labels check. |
| |
| 2023-06-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/92407 |
| * typeck.cc (check_return_expr): Prevent NRV in the presence of |
| named labels. |
| |
| 2023-06-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/33799 |
| * except.cc (maybe_splice_retval_cleanup): Change |
| recognition of function body and try scopes. |
| * semantics.cc (do_poplevel): Call it after poplevel. |
| (at_try_scope): New. |
| * cp-tree.h (maybe_splice_retval_cleanup): Adjust. |
| |
| 2023-06-07 Jason Merrill <jason@redhat.com> |
| |
| * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the |
| INIT_EXPR. |
| |
| 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com> |
| Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_clause_defaultmap, |
| cp_parser_omp_clause_map): Parse 'present'. |
| (cp_parser_omp_clause_from_to): New; parse to/from |
| clauses with optional 'present' modifier. |
| (cp_parser_omp_all_clauses): Update call. |
| (cp_parser_omp_target_data, cp_parser_omp_target_enter_data, |
| cp_parser_omp_target_exit_data): Handle new enum value for |
| 'present' mapping. |
| * semantics.cc (finish_omp_target): Likewise. |
| |
| 2023-06-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97720 |
| * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN. |
| (call_terminate_fn): New macro. |
| * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it. |
| * except.cc (init_exception_processing): Set it. |
| (cp_protect_cleanup_actions): Return it. |
| |
| 2023-06-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109923 |
| * pt.cc (is_specialization_of_friend): Fix overbroad check for |
| a non-template member function of a class template. |
| |
| 2023-06-03 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (iterative_hash_template_arg): Don't hash |
| TEMPLATE_TEMPLATE_PARM specially. |
| |
| 2023-06-03 Patrick Palka <ppalka@redhat.com> |
| |
| * class.cc (build_base_path): Check in_template_context instead |
| of in_template_function. |
| (resolves_to_fixed_type_p): Likewise. |
| * cp-tree.h (in_template_context): Define. |
| (in_template_function): Remove. |
| * decl.cc (cp_make_fname_decl): Check current_function_decl |
| and in_template_context instead of in_template_function. |
| * decl2.cc (mark_used): Check in_template_context instead of |
| in_template_function. |
| * pt.cc (in_template_function): Remove. |
| * semantics.cc (enforce_access): Check in_template_context |
| instead of current_template_parms directly. |
| |
| 2023-06-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/70790 |
| * mangle.cc (write_expression): Handle NOEXCEPT_EXPR. |
| |
| 2023-06-02 Jason Merrill <jason@redhat.com> |
| |
| DR 2735 |
| PR c++/109247 |
| * call.cc (sfk_copy_or_move): New. |
| (joust): Add tiebreaker for explicit conv and copy ctor. |
| |
| 2023-06-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/110070 |
| PR c++/105838 |
| * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE. |
| (convert_like_internal) [ck_list]: Set it. |
| (set_up_extended_ref_temp): Copy it. |
| * tree.cc (handle_no_unique_addr_attribute): Set it. |
| |
| 2023-06-01 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.cc (check_narrowing): Check flag_permissive. |
| |
| 2023-05-30 Tobias Burnus <tobias@codesourcery.com> |
| |
| PR c/109999 |
| * parser.cc (cp_parser_oacc_all_clauses, |
| cp_parser_omp_all_clauses): Improve error wording. |
| |
| 2023-05-19 Andrew Pinski <apinski@marvell.com> |
| |
| PR driver/33980 |
| * lang-specs.h ("@c++-header"): Add %w after |
| the --output-pch. |
| ("@c++-system-header"): Likewise. |
| ("@c++-user-header"): Likewise. |
| |
| 2023-05-19 Patrick Palka <ppalka@redhat.com> |
| |
| * constraint.cc (normalize_concept_check): Avoid having to do |
| two norm_cache lookups. Remove unnecessary early exit for an |
| ill-formed concept definition. |
| |
| 2023-05-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/97340 |
| * pt.cc (lookup_and_finish_template_variable): Don't call |
| convert_from_reference. |
| (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call |
| convert_from_reference on the result of |
| lookup_and_finish_template_variable. |
| |
| 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> |
| |
| * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h. |
| (build_conditional_expr): Ditto. |
| (convert_like_internal): Ditto. |
| (convert_arg_to_ellipsis): Ditto. |
| (build_over_call): Ditto. |
| (compare_ics): Ditto. |
| * class.cc (is_empty_base_ref): Ditto. |
| * coroutines.cc (rewrite_param_uses): Ditto. |
| * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto. |
| (ARITHMETIC_TYPE_P): Ditto. |
| * cvt.cc (ocp_convert): Ditto. |
| * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto. |
| * decl.cc (layout_var_decl): Ditto. |
| (get_tuple_size): Ditto. |
| * error.cc (dump_simple_decl): Ditto. |
| * lambda.cc (start_lambda_scope): Ditto. |
| * mangle.cc (write_template_arg): Ditto. |
| * method.cc (spaceship_comp_cat): Ditto. |
| * module.cc (node_template_info): Ditto. |
| (trees_out::start): Ditto. |
| (trees_out::decl_node): Ditto. |
| (trees_in::read_var_def): Ditto. |
| (set_instantiating_module): Ditto. |
| * name-lookup.cc (maybe_record_mergeable_decl): Ditto. |
| (consider_decl): Ditto. |
| (maybe_add_fuzzy_decl): Ditto. |
| * pt.cc (convert_nontype_argument): Ditto. |
| * semantics.cc (handle_omp_array_sections_1): Ditto. |
| (finish_omp_clauses): Ditto. |
| (finish_omp_target_clauses_r): Ditto. |
| (is_this_parameter): Ditto. |
| * tree.cc (build_cplus_array_type): Ditto. |
| (is_this_expression): Ditto. |
| * typeck.cc (do_warn_enum_conversions): Ditto. |
| * typeck2.cc (store_init_value): Ditto. |
| (check_narrowing): Ditto. |
| |
| 2023-05-17 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109868 |
| * init.cc (build_zero_init_1): Don't initialize zero-width bitfields. |
| For unions only initialize the first FIELD_DECL. |
| |
| 2023-05-16 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/109774 |
| * typeck.cc (check_return_expr): In a template, return only after |
| suppressing -Wdangling-reference. |
| |
| 2023-05-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109871 |
| * call.cc (add_list_candidates): Check for invalid designated |
| initialization sooner and even for types that have a list |
| constructor. |
| |
| 2023-05-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109745 |
| * typeck2.cc (poison_mutable_constructors): Define. |
| (store_init_value): Use it instead of setting |
| CONSTRUCTOR_MUTABLE_POISON directly. |
| |
| 2023-05-11 Patrick Palka <ppalka@redhat.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/83258 |
| PR c++/80488 |
| PR c++/97700 |
| * pt.cc (convert_nontype_argument_function): Remove linkage |
| requirement for C++17 and later. |
| (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict |
| DECL_ARTIFICIAL rejection test to VAR_DECL. |
| |
| 2023-05-10 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/109680 |
| * method.cc (build_trait_object): New. |
| (assignable_expr): Use it. |
| (ref_xes_from_temporary): Likewise. |
| (is_convertible_helper): Likewise. Check FUNC_OR_METHOD_TYPE_P. |
| |
| 2023-05-10 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (convert_like_internal): Share ck_ref_bind handling |
| between all bad conversions. |
| |
| 2023-05-10 Jason Merrill <jason@redhat.com> |
| |
| DR 2543 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve |
| TARGET_EXPR flags. |
| (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P. |
| * typeck2.cc (store_init_value): Diagnose constinit sooner. |
| |
| 2023-05-10 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Always check |
| for address of immediate fn. |
| (maybe_constant_init_1): Evaluate PTRMEM_CST. |
| |
| 2023-05-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109756 |
| * parser.cc (cp_parser_std_attribute): For unknown attributes with |
| arguments set TREE_VALUE (attribute) to error_mark_node after skipping |
| the balanced tokens. |
| (cp_parser_std_attribute_list): If ... is used after attribute without |
| arguments, diagnose it and return error_mark_node. If |
| TREE_VALUE (attribute) is error_mark_node, don't call |
| make_pack_expansion nor return early error_mark_node. |
| |
| 2023-05-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109752 |
| * constraint.cc (satisfaction_cache::satisfaction_cache): In the |
| unexpected case of evaluating an atom for the first time noisily, |
| remove the cache slot that we inserted. |
| |
| 2023-05-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109761 |
| * parser.cc (cp_parser_class_specifier): Don't pass a class |
| context to noexcept_override_late_checks. |
| (noexcept_override_late_checks): Remove 'type' parameter |
| and use DECL_CONTEXT of 'fndecl' instead. |
| |
| 2023-05-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109756 |
| * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack |
| expansion of assume attribute. |
| |
| 2023-05-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/106214 |
| PR c++/93107 |
| * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context |
| calls to happen before do_class_deduction. Add some |
| error_mark_node tests. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/85979 |
| * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression) |
| <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P. |
| * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| DR 2256 |
| PR c++/103091 |
| * decl.cc (decl_jump_unsafe): Return bool instead of int. |
| Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR. |
| (check_previous_goto_1): Simplify now that decl_jump_unsafe |
| returns bool instead of int. |
| (check_goto): Likewise. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (instantiate_alias_template): Exit early upon |
| error from coerce_template_parms. Remove dependence test |
| guarding constraints_satisfied_p. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via |
| TEMPLATE_TYPE_PARM_CHECK. |
| (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK. |
| (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via |
| TEMPLATE_TEMPLATE_PARM_CHECK. |
| * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier): |
| Guard PLACEHOLDER_TYPE_CONSTRAINTS access. |
| * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate |
| variable to store CLASS_PLACEHOLDER_TEMPLATE result. |
| * pt.cc (outer_template_args): Use strip_innermost_template_args. |
| (any_type_dependent_arguments_p): Exit early if |
| !processing_template_decl. Use range-based for. |
| (any_dependent_template_arguments_p): Likewise. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98283 |
| * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate |
| REF_PARENTHESIZED_P more generally via force_paren_expr. |
| * semantics.cc (force_paren_expr): Document default argument. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109651 |
| * pt.cc (coerce_template_args_for_ttp): Mention we can hit the |
| current_template_parms fallback when level-lowering a bound ttp. |
| (tsubst_template_decl): Add lambda_tparms parameter. Prefer to |
| use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS. |
| (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms |
| to tsubst_template_decl. |
| (tsubst_lambda_expr): For a generic lambda, substitute |
| DECL_TEMPLATE_PARMS and set current_template_parms to it |
| before substituting the function type. Pass the substituted |
| DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109480 |
| * semantics.cc (enforce_access): Check current_template_parms |
| instead of processing_template_decl when deciding whether to |
| defer the access check. |
| |
| 2023-05-07 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109480 |
| * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: |
| Reorganize to call get_fns sooner. Remove special handling of |
| the object argument of a non-static member function call. Remove |
| dead store to 'fun'. |
| |
| 2023-05-05 Jason Merrill <jason@redhat.com> |
| |
| Revert: |
| 2023-04-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/61445 |
| * pt.cc (instantiate_decl): Assert !defer_ok for local |
| class members. |
| |
| 2023-05-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/91618 |
| PR c++/109649 |
| * friend.cc (do_friend): Don't call check_explicit_specialization if |
| DECL_TEMPLATE_INFO is already set. |
| * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO. |
| * name-lookup.cc (set_decl_namespace): Likewise. |
| |
| 2023-05-03 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-gimplify.cc (cp_fold_data): Move definition earlier. |
| (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false |
| constructed data rather than &pset to cp_walk_tree with cp_fold_r. |
| |
| 2023-05-03 Jason Merrill <jason@redhat.com> |
| |
| * pt.cc (reduce_template_parm_level): Fix comparison of |
| template template parm to cached version. |
| |
| 2023-05-02 Jason Merrill <jason@redhat.com> |
| |
| * pt.cc (instantiate_class_template): Skip the RECORD_TYPE |
| of a class template. |
| (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE. |
| |
| 2023-05-02 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.cc (pop_from_top_level): Don't |
| invalidate_class_lookup_cache. |
| |
| 2023-05-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109678 |
| * cp-tree.h (lookup_base): Add offset parm. |
| * constexpr.cc (cxx_fold_indirect_ref_1): Pass it. |
| * search.cc (struct lookup_base_data_s): Add offset. |
| (dfs_lookup_base): Handle it. |
| (lookup_base): Pass it. |
| |
| 2023-05-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109678 |
| * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first. |
| |
| 2023-05-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109666 |
| * name-lookup.cc (maybe_push_to_top_level) |
| (maybe_pop_from_top_level): Split out... |
| * pt.cc (instantiate_body): ...from here. |
| * init.cc (maybe_instantiate_nsdmi_init): Use them. |
| * name-lookup.h: Declare them.. |
| |
| 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com> |
| |
| * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries |
| |
| 2023-04-27 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (print_conversion_rejection): Use iloc_sentinel. |
| |
| 2023-04-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/61445 |
| * pt.cc (instantiate_decl): Assert !defer_ok for local |
| class members. |
| |
| 2023-04-26 Jason Merrill <jason@redhat.com> |
| |
| * init.cc (nsdmi_inst): Remove. |
| (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead. |
| |
| 2023-04-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109241 |
| * pt.cc (instantiate_class_template): Do partially instantiate. |
| (tsubst_expr): Do call complete_type for partial instantiations. |
| |
| 2023-04-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/69836 |
| * pt.cc (regenerate_decl_from_template): Skip unique friends. |
| |
| 2023-04-26 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (most_specialized_partial_spec): Exit early when |
| DECL_TEMPLATE_SPECIALIZATIONS is empty. Move local variable |
| declarations closer to their first use. Remove redundant |
| flag_concepts test. Remove redundant forward declaration. |
| |
| 2023-04-25 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108975 |
| * pt.cc (value_dependent_expression_p) <case VAR_DECL>: |
| Suppress conservative early exit for reference variables |
| when DECL_HAS_VALUE_EXPR_P. |
| |
| 2023-04-25 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_scan_loop_body): Handle |
| zero exec statements before/after 'omp scan'. |
| |
| 2023-04-24 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (cp_expr_location): Define here. |
| * tree.cc (cp_expr_location): Don't define here. |
| |
| 2023-04-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108099 |
| * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned |
| typedef' pedwarn. Use c_common_signed_or_unsigned_type. Also |
| handle 'signed typedef'. |
| |
| 2023-04-21 Patrick Palka <ppalka@redhat.com> |
| |
| * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp. |
| <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE. |
| <case ALIGNOF_EXPR etc>: Likewise. |
| |
| 2023-04-20 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: Don't recurse when |
| level lowering a cv-qualified type template parameter. Remove |
| recursive loop breaker in the level lowering case for constrained |
| autos. Use the TEMPLATE_PARM_DESCENDANTS cache in this case as |
| well. |
| |
| 2023-04-20 Patrick Palka <ppalka@redhat.com> |
| |
| * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC |
| of arguments into a TREE_LIST for sake of pretty printing. |
| * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC |
| instead of TREE_LIST of trailing variadic trait arguments. |
| * method.cc (constructible_expr): Likewise. |
| (is_xible_helper): Likewise. |
| * parser.cc (cp_parser_trait): Represent trailing variadic trait |
| arguments as a TREE_VEC instead of TREE_LIST. |
| * pt.cc (value_dependent_expression_p): Handle TREE_VEC |
| instead of TREE_LIST of trailing variadic trait arguments. |
| * semantics.cc (finish_type_pack_element): Likewise. |
| (check_trait_type): Likewise. |
| |
| 2023-04-20 Patrick Palka <ppalka@redhat.com> |
| |
| * tree.cc (strip_typedefs): Move TREE_LIST handling to |
| strip_typedefs_expr. Dispatch to strip_typedefs_expr for |
| non-type 't'. |
| <case TYPENAME_TYPE>: Remove manual dispatching to |
| strip_typedefs_expr. |
| <case TRAIT_TYPE>: Likewise. |
| (strip_typedefs_expr): Replaces calls to strip_typedefs_expr |
| with strip_typedefs throughout. Don't dispatch to strip_typedefs |
| for type 't'. |
| <case TREE_LIST>: Replace this with the better version from |
| strip_typedefs. |
| |
| 2023-04-19 Patrick Palka <ppalka@redhat.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/100157 |
| * cp-trait.def (TYPE_PACK_ELEMENT): Define. |
| * cp-tree.h (finish_trait_type): Add complain parameter. |
| * cxx-pretty-print.cc (pp_cxx_trait): Handle |
| CPTK_TYPE_PACK_ELEMENT. |
| * parser.cc (cp_parser_constant_expression): Document default |
| arguments. |
| (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT. Pass |
| tf_warning_or_error to finish_trait_type. |
| * pt.cc (tsubst) <case TRAIT_TYPE>: Handle non-type first |
| argument. Pass complain to finish_trait_type. |
| * semantics.cc (finish_type_pack_element): Define. |
| (finish_trait_type): Add complain parameter. Handle |
| CPTK_TYPE_PACK_ELEMENT. |
| * tree.cc (strip_typedefs): Handle non-type first argument. |
| Pass tf_warning_or_error to finish_trait_type. |
| * typeck.cc (structural_comptypes) <case TRAIT_TYPE>: Use |
| cp_tree_equal instead of same_type_p for the first argument. |
| |
| 2023-04-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109556 |
| * pt.cc (try_class_unification): Don't ggc_free the copy of |
| 'targs'. |
| |
| 2023-04-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108099 |
| * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t. |
| |
| 2023-04-17 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109531 |
| * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>: |
| In the level-lowering case just use lookup_template_class |
| to rebuild the bound ttp. |
| |
| 2023-04-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109357 |
| * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]: |
| Check for complex initializer. |
| |
| 2023-04-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109420 |
| * decl.cc (make_typename_type): Also ignore non-types during the |
| lookup if tag_type corresponds to an elaborated-type-specifier. |
| * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or |
| enum_type as tag_type to make_typename_type accordingly instead |
| of always passing typename_type. |
| |
| 2023-04-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109277 |
| * semantics.cc (check_trait_type): Handle incomplete type directly. |
| * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert. |
| |
| 2023-04-13 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool. |
| * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust. |
| |
| 2023-04-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * Make-lang.in (s-cp-module-version): New target. |
| (cp/module.o): Depend on it. |
| (MODULE_VERSION): Remove variable. |
| (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just |
| cat s-cp-module-version. |
| |
| 2023-04-09 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (coro_rewrite_function_body): Ensure that added |
| bind expressions have scope blocks. |
| |
| 2023-04-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107484 |
| * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE. |
| |
| 2023-04-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109300 |
| * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction |
| with no initializer, instead of asserting. |
| |
| 2023-04-01 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109160 |
| * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter. |
| * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to |
| do_auto_deduction. |
| (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as |
| 'in_decl' to coerce_template_parms. |
| (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE |
| as 'tmpl' to do_auto_deduction. |
| (do_auto_deduction): Document default arguments. Rename local |
| variable 'tmpl' to 'ctmpl'. Use 'tmpl' to obtain a full set of |
| template arguments for satisfaction in the adc_unify case. |
| |
| 2023-04-01 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/53164 |
| PR c++/105848 |
| * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of |
| FUNCTION_DECL. |
| (instantiate_class_template): Call mark_template_arguments_used. |
| (tsubst_copy_and_build) <case CALL_EXPR>: Revert r13-995 change. |
| (mark_template_arguments_used): Define. |
| (instantiate_body): Call mark_template_arguments_used. |
| |
| 2023-04-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/101118 |
| * coroutines.cc (flatten_await_stmt): Use the current count of |
| promoted temporaries to build a unique name for the frame entries. |
| |
| 2023-03-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105452 |
| * search.cc (type_context_for_name_lookup): New. |
| (accessible_p): Handle anonymous union. |
| * init.cc (maybe_instantiate_nsdmi_init): Use |
| type_context_for_name_lookup. |
| * parser.cc (cp_parser_class_specifier): Likewise. |
| * cp-tree.h (type_context_for_name_lookup): Declare. |
| |
| 2023-03-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105221 |
| * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer |
| conversions. |
| |
| 2023-03-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109319 |
| * decl2.cc (grok_array_decl): After emitting a pedwarn for |
| -Wcomma-subscript, if processing_template_decl set orig_index_exp |
| to compound expr from orig_index_exp_list. |
| |
| 2023-03-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107897 |
| PR c++/108887 |
| * decl2.cc (record_mangling): Use symtab_node::reset. |
| |
| 2023-03-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109278 |
| * call.cc (convert_like_internal): If pedwarn for extended float |
| type conversions doesn't report anything, avoid calling |
| maybe_inform_about_fndecl_for_bogus_argument_init. |
| |
| 2023-03-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109321 |
| PR c++/109320 |
| * pt.cc (alias_ctad_tweaks): Rewrite deduced args. |
| (type_targs_deducible_from): Handle null pack deduction. |
| |
| 2023-03-28 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c/107002 |
| * parser.cc (cp_parser_binary_expression): Update for new param of |
| check_for_xor_used_as_pow. |
| |
| 2023-03-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109309 |
| * contracts.cc: Include intl.h. |
| (check_postcondition_result): Don't form diagnostics from two halves |
| of an English message to allow translations. |
| |
| 2023-03-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/106969 |
| * parser.cc (cp_parser_class_specifier): Clear current_class_ptr |
| and current_class_ref sooner, before parsing a class definition. |
| |
| 2023-03-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105481 |
| * pt.cc (type_unification_real): Adjust for partial ordering. |
| |
| 2023-03-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105996 |
| * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization |
| and location wrappers. |
| |
| 2023-03-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107532 |
| * call.cc (class_has_reference_member_p): New. |
| (class_has_reference_member_p_r): New. |
| (reference_like_class_p): Don't look for a specific constructor. |
| Use a DFS walk with class_has_reference_member_p_r. |
| |
| 2023-03-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109241 |
| * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO. |
| |
| 2023-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108390 |
| * pt.cc (unify): Use fold of build_nop instead of fold_convert. |
| |
| 2023-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108795 |
| * semantics.cc (finish_id_expression_1): Check scope before |
| returning id_expression. |
| |
| 2023-03-22 Alex Coplan <alex.coplan@arm.com> |
| |
| PR c++/109177 |
| * call.cc (build_over_call): Use make_temp_override to suppress |
| both unavailable and deprecated warnings when calling |
| build_addr_func. |
| |
| 2023-03-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/106890 |
| * init.cc (maybe_instantiate_nsdmi_init): Don't leave |
| current_function_decl set to a constructor. |
| |
| 2023-03-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/109159 |
| * call.cc (add_template_candidate_real): Add explicit decls to the |
| set of candidates when the initializer is a braced-init-list. |
| |
| 2023-03-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109164 |
| * cp-tree.h (var_needs_tls_wrapper): Declare. |
| * decl2.cc (var_needs_tls_wrapper): No longer static. |
| * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables |
| for which a TLS wrapper will be needed. |
| |
| 2023-03-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108975 |
| * lambda.cc (prune_lambda_captures): Don't bother in a template. |
| |
| 2023-03-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109172 |
| * except.cc (build_throw): Check dtor access. |
| |
| 2023-03-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/69410 |
| * friend.cc (do_friend): Handle namespace as scope argument. |
| * decl.cc (grokdeclarator): Pass down in_namespace. |
| |
| 2023-03-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105809 |
| * init.cc (get_nsdmi): Split out... |
| (maybe_instantiate_nsdmi_init): ...this function. |
| * cp-tree.h: Declare it. |
| * pt.cc (tsubst_expr): Use it. |
| |
| 2023-03-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108242 |
| * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation. |
| |
| 2023-03-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101869 |
| * semantics.cc (finish_qualified_id_expr): Don't try to build a |
| pointer-to-member if the scope is an enumeration. |
| |
| 2023-03-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109030 |
| * constexpr.cc (maybe_constant_init_1): For an unevaluated |
| non-manifestly-constant operand, don't constant evaluate |
| and instead call fold_to_constant as in maybe_constant_value. |
| |
| 2023-03-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100288 |
| * constraint.cc (satisfaction_cache::get): Relax overly strict |
| checking assert in the constraint recursion case. |
| |
| 2023-03-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105406 |
| * coroutines.cc (build_co_await): Handle lvalue 'o'. |
| |
| 2023-03-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103871 |
| PR c++/98056 |
| * typeck.cc (cp_build_modify_expr): Allow array initialization of |
| DECL_ARTIFICIAL variable. |
| |
| 2023-03-15 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107280 |
| * constexpr.cc (cxx_eval_store_expression): Strip location wrappers. |
| |
| 2023-03-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/58538 |
| * semantics.cc (check_template_template_default_arg): Check |
| maybe_get_template_decl_from_type_decl. |
| |
| 2023-03-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108179 |
| PR c++/104107 |
| PR c++/95036 |
| * pt.cc (coerce_template_template_parms): Use args from |
| DECL_CONTEXT (arg_tmpl) instead of outer_args. |
| |
| 2023-03-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108179 |
| * pt.cc (coerce_template_template_parms): Take the arg and parm |
| templates directly. |
| (coerce_template_template_parm): Adjust. |
| (template_template_parm_bindings_ok_p): Adjust. |
| (convert_template_argument): Adjust. |
| |
| 2023-03-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/96830 |
| * pt.cc (push_inline_template_parms_recursive): Set |
| TEMPLATE_PARMS_CONSTRAINTS. |
| (push_template_decl): For an out-of-line declaration, verify |
| constraints for each enclosing template scope match those of the |
| original template declaratation. |
| |
| 2023-03-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/96830 |
| * pt.cc (redeclare_class_template): Add missing "of" in |
| constraint mismatch diagnostic. |
| (tsubst_friend_class): For an already declared class template, |
| substitute and pass the friend declaration's constraints to |
| redeclare_class_template instead of passing the existing |
| template's constraints. |
| |
| 2023-03-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108468 |
| * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE |
| is non-null. |
| |
| 2023-03-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107310 |
| * cp-gimplify.cc (genericize_if_stmt): Restore folding |
| of constant conditions. |
| |
| 2023-03-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109096 |
| * tree.cc (record_has_unique_obj_representations): Ignore unnamed |
| bitfields. |
| |
| 2023-03-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107128 |
| * parser.cc (cp_parser_set_decl_spec_type): Use |
| redefined_builtin_type for extended_float_type_p. |
| |
| 2023-03-13 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107532 |
| * call.cc (reference_like_class_p): Check for std::span. |
| |
| 2023-03-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/107558 |
| * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on |
| automatic non-aggregate variables just because of |
| -fmerge-all-constants. |
| |
| 2023-03-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109039 |
| * class.cc (end_of_class): For bit-fields, instead of computing |
| offset as sum of byte_position (field) and DECL_SIZE_UNIT (field), |
| compute it as sum of bit_position (field) and DECL_SIZE (field) |
| divided by BITS_PER_UNIT rounded up. |
| |
| 2023-03-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108972 |
| * lambda.cc (compare_lambda_template_head): Check more |
| for error_mark_node. |
| |
| 2023-03-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108566 |
| * mangle.cc (anon_aggr_naming_decl): New. |
| (write_unqualified_name): Use it. |
| |
| 2023-03-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/108079 |
| * decl.cc (poplevel): Suppress OPT_Wunused_variable warning |
| after diagnosing it. |
| |
| 2023-03-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108099 |
| * decl.cc (grokdeclarator): Handle non-typedef typedef_decl. |
| |
| 2023-03-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108542 |
| * class.cc (instantiate_type): Strip location wrapper. |
| |
| 2023-03-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108773 |
| * init.cc (find_allocator_temps_r): New. |
| (combine_allocator_temps): Replace find_allocator_temp. |
| (build_vec_init): Adjust. |
| |
| 2023-03-09 Jason Merrill <jason@redhat.com> |
| |
| DR 2664 |
| PR c++/102529 |
| * pt.cc (alias_ctad_tweaks): Continue after deduction failure. |
| |
| 2023-03-09 Jason Merrill <jason@redhat.com> |
| Michael Spertus <mike@spertus.com> |
| |
| PR c++/105841 |
| * pt.cc (corresponding_template_parameter_list): Split out... |
| (corresponding_template_parameter): ...from here. |
| (find_template_parameters): Factor out... |
| (find_template_parameter_info::find_in): ...this function. |
| (find_template_parameter_info::find_in_recursive): New. |
| (find_template_parameter_info::found): New. |
| (alias_ctad_tweaks): Only add parms used in the deduced args. |
| |
| 2023-03-09 Jason Merrill <jason@redhat.com> |
| |
| * cp-trait.def (IS_DEDUCIBLE): Add space to name. |
| |
| 2023-03-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105841 |
| * cp-trait.def (IS_DEDUCIBLE): New. |
| * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type. |
| * parser.cc (cp_parser_trait): Likewise. |
| * tree.cc (cp_tree_equal): Likewise. |
| * pt.cc (tsubst_copy_and_build): Likewise. |
| (type_targs_deducible_from): New. |
| (alias_ctad_tweaks): Use it. |
| * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE. |
| (finish_trait_expr): Likewise. |
| * constraint.cc (diagnose_trait_expr): Likewise. |
| * cp-tree.h (type_targs_deducible_from): Declare. |
| |
| 2023-03-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108526 |
| PR c++/106651 |
| * pt.cc (tsubst_function_decl): Don't replace the closure |
| parameter if DECL_STATIC_FUNCTION_P. |
| |
| 2023-03-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107532 |
| * call.cc (reference_like_class_p): New. |
| (do_warn_dangling_reference): Add new bool parameter. See through |
| reference_like_class_p. |
| |
| 2023-03-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109042 |
| * rtti.cc (emit_support_tinfo_1): Don't assert that last |
| unemitted_tinfo_decls element is tinfo, instead pop from it only in |
| that case. |
| * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl |
| for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL. |
| |
| 2023-03-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/109030 |
| * constexpr.cc (cxx_eval_call_expression): Relax assert. |
| |
| 2023-03-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107939 |
| * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass |
| 'any' when recursing on a VAR_DECL and not a pointer to function. |
| |
| 2023-03-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108702 |
| * constexpr.cc: Include toplev.h. |
| (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a local |
| static initialized by constant expression outside of a constexpr |
| function which has been deferred by make_rtl_for_nonlocal_decl, |
| call rest_of_decl_compilation on it. |
| |
| 2023-03-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108998 |
| * pt.cc (el_data::skipped_trees): New data member. |
| (extract_locals_r): Push to skipped_trees any unevaluated |
| contexts that we skipped over. |
| (extract_local_specs): For the second walk, start from each |
| tree in skipped_trees. |
| |
| 2023-03-03 Alexandre Oliva <oliva@adacore.com> |
| |
| * typeck.cc (cp_build_binary_op): Suppress redundant warning |
| for pfn null test in pmfn test with vbit-in-delta. |
| |
| 2023-03-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR target/108883 |
| * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE |
| enumerators. |
| (fallback_dfloat32_type, fallback_dfloat64_type, |
| fallback_dfloat128_type): Remove. |
| * rtti.cc (emit_support_tinfo_1): If not emitted already, call |
| emit_tinfo_decl and remove from unemitted_tinfo_decls right away. |
| (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array |
| into new fundamentals_with_fallback array. Call emit_support_tinfo_1 |
| on elements of that array too, with the difference that if |
| the type is NULL, use a fallback REAL_TYPE for it temporarily. |
| Drop the !targetm.decimal_float_supported_p () handling. Call |
| targetm.emit_support_tinfos at the end. |
| * mangle.cc (write_builtin_type): Remove references to |
| fallback_dfloat*_type. Handle bfloat16_type_node mangling. |
| |
| 2023-03-02 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108243 |
| PR c++/97553 |
| * cp-gimplify.cc (cp_fully_fold): Add an internal overload that |
| additionally takes and propagate an mce_value parameter, and |
| define the existing public overload in terms of it. |
| (cp_fully_fold_init): Pass mce_false to cp_fully_fold. |
| |
| 2023-03-02 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108243 |
| * constexpr.cc (maybe_constant_init_1): Override |
| manifestly_const_eval to true if is_static. |
| |
| 2023-03-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR debug/108716 |
| * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set |
| DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location |
| of USING_STMT or input_location. |
| |
| 2023-03-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/106259 |
| * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first |
| lookup of SPEC didn't find anything, try to look for |
| most_general_template. |
| |
| 2023-03-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/105839 |
| * parser.cc (cp_convert_omp_range_for): Allow in assert |
| decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has |
| error_mark_node type. |
| (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back |
| on decls which have error_mark_node type. |
| |
| 2023-03-01 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107574 |
| * constexpr.cc (cxx_eval_constant_expression): Emit an error when |
| a PTRMEM_CST cannot be evaluated. |
| |
| 2023-03-01 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (tsubst_scope): Define. |
| (tsubst_decl) <case USING_DECL>: Call tsubst_scope instead of |
| calling tsubst_scope with tf_qualifying_scope set. |
| (tsubst_qualified_id): Call tsubst_scope instead of |
| calling tsubst with tf_qualifying_scope set. |
| (tsubst_copy): Immediately delegate to tsubst for all TYPE_P |
| trees. Remove tf_qualifying_scope manipulation. |
| <case SCOPE_REF>: Call tsubst_scope instead of calling |
| tsubst with tf_qualifying_scope set. |
| |
| 2023-03-01 Patrick Palka <ppalka@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/108219 |
| PR c++/108218 |
| * constexpr.cc (fold_to_constant): Define. |
| (maybe_constant_value): Move up early exit test for unevaluated |
| operands. Try reducing an unevaluated operand to a constant via |
| fold_to_constant. |
| (fold_non_dependent_expr_template): Add early exit test for |
| CONSTANT_CLASS_P nodes. Try reducing an unevaluated operand |
| to a constant via fold_to_constant. |
| * cp-tree.h (fold_to_constant): Declare. |
| |
| 2023-03-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108606 |
| * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>: |
| Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise |
| just return true. |
| |
| 2023-02-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108848 |
| * pt.cc (finish_template_variable): Move dependence check |
| to here from ... |
| (lookup_and_finish_template_variable): ... here. |
| * semantics.cc (finish_id_expression_1): Call |
| finish_template_variable sooner, before (and regardless of) the |
| type_dependent_expression_p test. |
| |
| 2023-02-28 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/108550 |
| * pt.cc (lookup_and_finish_template_variable): Clear tf_partial. |
| |
| 2023-02-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/101073 |
| * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial |
| constructor/op= with a checking assert. |
| |
| 2023-02-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/108829 |
| * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P. |
| (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to |
| prepend_one_capture. |
| |
| 2023-02-18 Jason Merrill <jason@redhat.com> |
| |
| DR 2518 |
| PR c++/52809 |
| PR c++/53638 |
| PR c++/87389 |
| PR c++/89741 |
| PR c++/92099 |
| PR c++/104041 |
| PR c++/104691 |
| * semantics.cc (finish_static_assert): Don't diagnose in |
| template context. |
| |
| 2023-02-17 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108243 |
| PR c++/97553 |
| * cp-gimplify.cc (enum fold_flags): Define. |
| (fold_flags_t): Declare. |
| (cp_fold_data::genericize): Replace this data member with ... |
| (cp_fold_data::fold_flags): ... this. |
| (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold. |
| (cp_fold_function): Likewise. |
| (cp_fold_maybe_rvalue): Add an internal overload that |
| additionally takes and propagates a fold_flags_t parameter, and |
| define the existing public overload in terms of it. |
| (cp_fold_rvalue): Likewise. |
| (cp_fully_fold_init): Adjust use of cp_fold_data. |
| (fold_cache): Replace with ... |
| (fold_caches): ... this 2-element array of caches. |
| (get_fold_cache): Define. |
| (clear_fold_cache): Adjust. |
| (cp_fold): Add fold_flags_t parameter. Use get_fold_cache. |
| Pass flags to calls to cp_fold, cp_fold_rvalue and |
| cp_fold_maybe_rvalue. |
| <case CALL_EXPR>: If ff_mce_false is set, fold |
| __builtin_is_constant_evaluated to false and pass mce_false to |
| maybe_constant_value. |
| |
| 2023-02-17 Patrick Palka <ppalka@redhat.com> |
| |
| * constexpr.cc (constexpr_call::manifestly_const_eval): Give |
| it type int instead of bool. |
| (constexpr_ctx::manifestly_const_eval): Give it type mce_value |
| instead of bool. |
| (cxx_eval_builtin_function_call): Adjust after making |
| manifestly_const_eval tri-state. |
| (cxx_eval_call_expression): Likewise. |
| (cxx_eval_binary_expression): Likewise. |
| (cxx_eval_conditional_expression): Likewise. |
| (cxx_eval_constant_expression): Likewise. |
| (cxx_eval_outermost_constant_expr): Likewise. |
| (cxx_constant_value): Likewise. |
| (cxx_constant_dtor): Likewise. |
| (maybe_constant_value): Give manifestly_const_eval parameter |
| type mce_value instead of bool and adjust accordingly. |
| (fold_non_dependent_expr_template): Adjust call |
| to cxx_eval_outermost_constant_expr. |
| (fold_non_dependent_expr): Likewise. |
| (maybe_constant_init_1): Likewise. |
| * constraint.cc (satisfy_atom): Adjust call to |
| maybe_constant_value. |
| * cp-tree.h (enum class mce_value): Define. |
| (maybe_constant_value): Adjust manifestly_const_eval parameter |
| type and default argument. |
| * decl.cc (compute_array_index_type_loc): Adjust call to |
| maybe_constant_value. |
| * pt.cc (convert_nontype_argument): Likewise. |
| |
| 2023-02-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/107773 |
| * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope. |
| * decl.cc (make_typename_type): Use lookup_member instead of |
| lookup_field. If tf_qualifying_scope is set, pass want_type=true |
| instead of =false to lookup_member. Generalize format specifier |
| in diagnostic to handle both type and non-type bindings. |
| * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope. Tidy |
| the function. |
| (tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when |
| substituting USING_DECL_SCOPE. |
| (tsubst): Clear tf_qualifying_scope right away and remember if |
| it was set. Do the same for tf_tst_ok sooner. |
| <case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting |
| TYPE_CONTEXT. Pass tf_qualifying_scope to make_typename_type |
| if it was set. |
| (tsubst_qualified_id): Set tf_qualifying_scope when substituting |
| the scope. |
| (tsubst_copy): Clear tf_qualifying_scope and remember if it was |
| set. |
| <case SCOPE_REF>: Set tf_qualifying_scope when substituting the |
| scope. |
| <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set. |
| * search.cc (lookup_member): Document default argument. |
| |
| 2023-02-16 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h: Mechanically drop static from static inline |
| functions via s/^static inline/inline/g. |
| |
| 2023-02-15 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/106675 |
| * call.cc (joust_maybe_elide_copy): Return false for ck_ambig. |
| |
| 2023-02-10 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107079 |
| * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init. |
| |
| 2023-02-09 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_allocate): Parse align |
| clause and check for restrictions. |
| |
| 2023-02-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108698 |
| * mangle.cc (write_expression, write_template_arg): Handle |
| EXCESS_PRECISION_EXPR with REAL_CST operand as |
| write_template_arg_literal on fold_convert of the REAL_CST |
| to EXCESS_PRECISION_EXPR type. |
| |
| 2023-02-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/107461 |
| * cp-tree.h (call_expr_dependent_name): Declare. |
| * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: Use |
| call_expr_dependent_name instead of dependent_name. |
| * tree.cc (call_expr_dependent_name): Define. |
| (called_fns_equal): Adjust to take two CALL_EXPRs instead of |
| CALL_EXPR_FNs thereof. Use call_expr_dependent_name instead |
| of dependent_name. |
| (cp_tree_equal) <case CALL_EXPR>: Adjust call to called_fns_equal. |
| |
| 2023-02-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/108158 |
| * constexpr.cc (cxx_eval_array_reference): Don't replace |
| new_ctx.object. |
| |
| 2023-02-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/107461 |
| * semantics.cc (finish_call_expr): Strip ADDR_EXPR from |
| the selected callee during overload set pruning. |
| |
| 2023-02-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/96745 |
| * class.cc (check_methods): Diagnose an unviable OVERLOAD |
| set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one. |
| Then prune the OVERLOAD to a single function. |
| (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being |
| an OVERLOAD when calling deduce_noexcept_on_destructor. |
| Document why it has to be called before check_methods. |
| |
| 2023-02-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108579 |
| * class.cc (check_methods): Swap order of constraints_satisfied_p |
| and copy/move_fn_p tests. |
| |
| 2023-02-01 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107755 |
| * call.cc (build_new_op): Don't call warn_logical_operator when |
| processing a template. |
| |
| 2023-02-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108607 |
| * constexpr.cc (cxx_eval_constant_expression): Handle OMP_* |
| and OACC_* constructs as non-constant. |
| (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE. |
| |
| 2023-02-01 Jason Merrill <jason@redhat.com> |
| |
| * class.cc (note_name_declared_in_class): Change from permerror to |
| -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases. |
| |
| 2023-01-31 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108559 |
| * cp-gimplify.cc (any_non_eliding_target_exprs): New. |
| (cp_genericize_init): Check it. |
| |
| 2023-01-31 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107593 |
| PR c++/108597 |
| * cp-tree.h (instantiation_dependent_expression_p): Don't |
| declare here. |
| |
| 2023-01-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/105300 |
| * parser.cc: Remove unnecessary forward declarations. |
| (cp_parser_string_literal): New wrapper. |
| (cp_parser_string_literal_common): Renamed from |
| cp_parser_string_literal. Add a bool parameter. Give an error when |
| UDLs are not permitted. |
| (cp_parser_userdef_string_literal): New wrapper. |
| (finish_userdef_string_literal): Renamed from |
| cp_parser_userdef_string_literal. |
| (cp_parser_primary_expression): Call cp_parser_userdef_string_literal |
| instead of cp_parser_string_literal. |
| (cp_parser_linkage_specification): Move a variable declaration closer |
| to its first use. |
| (cp_parser_static_assert): Likewise. |
| (cp_parser_operator): Call cp_parser_userdef_string_literal instead of |
| cp_parser_string_literal. |
| (cp_parser_asm_definition): Move a variable declaration closer to its |
| first use. |
| (cp_parser_asm_specification_opt): Move variable declarations closer to |
| their first use. |
| (cp_parser_asm_operand_list): Likewise. |
| (cp_parser_asm_clobber_list): Likewise. |
| |
| 2023-01-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108503 |
| * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been |
| called in !processing_template_decl with processing_template_decl |
| temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily. |
| (cp_finish_omp_range_for): And set it back again here. |
| |
| 2023-01-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108525 |
| * mangle.cc (write_closure_type_name): Don't assume all |
| lambda operator() fns are methods. |
| |
| 2023-01-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108504 |
| * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first |
| token, too. |
| |
| 2023-01-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108526 |
| * pt.cc (tsubst_function_decl): Handle static lambda. |
| |
| 2023-01-24 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108474 |
| * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes. |
| |
| 2023-01-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107303 |
| PR c++/107329 |
| * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double |
| TARGET_EXPR, keep the outer one instead of the inner one. |
| (maybe_replace_decl): New. |
| |
| 2023-01-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107267 |
| * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision |
| of trivial types. |
| |
| 2023-01-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107797 |
| * cvt.cc (ocp_convert): copy_warning when creating a new |
| COMPOUND_EXPR. |
| * init.cc (build_new_1): Suppress -Wunused-value on |
| compiler-generated COMPOUND_EXPRs. |
| |
| 2023-01-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108195 |
| * call.cc (build_user_type_conversion_1): Check whether the |
| iterators also find a list ctor. |
| |
| 2023-01-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108496 |
| * decl.cc (grokdeclarator): Check whether DECL_RESULT is already |
| set. |
| |
| 2023-01-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/53288 |
| DR 1299 |
| * call.cc (extend_ref_init_temps_1): Handle ptrmem expression. |
| |
| 2023-01-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108437 |
| * cp-tree.h (keep_unused_object_arg): Declare. |
| * call.cc (keep_unused_object_arg): No longer static. |
| * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF |
| with overload being static member function. |
| |
| 2023-01-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/53932 |
| * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace |
| DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding |
| DECL_VALUE_EXPR. |
| |
| 2023-01-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/105593 |
| * decl.cc (cp_finish_decl): Check warning_enabled_at |
| at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead |
| of warn_init_self. |
| |
| 2023-01-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108365 |
| * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral |
| division or modulo. |
| |
| 2023-01-13 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108285 |
| * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR |
| use its operand except that for warning purposes use the original |
| EXCESS_PRECISION_EXPR. |
| * call.cc (convert_like_internal): Only look through |
| EXCESS_PRECISION_EXPR when calling cp_convert, not when calling |
| cp_convert_and_check. |
| |
| 2023-01-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/105838 |
| PR c++/108047 |
| PR c++/108266 |
| * call.cc (maybe_init_list_as_range): Always return NULL_TREE if |
| processing_template_decl. |
| |
| 2023-01-05 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108275 |
| * parser.cc (cp_parser_class_head): Use dk_deferred instead of |
| dk_no_check when parsing the class name. |
| |
| 2023-01-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108286 |
| * semantics.cc (finish_omp_target_clauses): Ignore clauses other than |
| OMP_CLAUSE_MAP. |
| |
| 2023-01-04 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108282 |
| * decl2.cc (mark_single_function): Ignore mark_used failure |
| only in a non-SFINAE context rather than in a SFINAE one. |
| |
| 2023-01-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108206 |
| * decl.cc (merge_default_template_args): Return false if either |
| new_parm or old_parm are erroneous. |
| |
| |
| Copyright (C) 2023 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. |