| 2023-12-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/81438 |
| * decl.cc (poplevel_named_label_1): Handle leaving catch. |
| (check_previous_goto_1): Likewise. |
| (check_goto_1): Likewise. |
| |
| 2023-12-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/95298 |
| * mangle.cc (write_expression): Handle v18 sizeof... bug. |
| * pt.cc (tsubst_pack_expansion): Keep TREE_VEC for sizeof... |
| (tsubst_expr): Don't strip TREE_VEC here. |
| |
| 2023-12-21 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (maybe_warn_unparenthesized_assignment): Add |
| 'nested_p' bool parameter. |
| * semantics.cc (boolish_class_type_p_cache): Define. |
| (boolish_class_type_p): Define. |
| (maybe_warn_unparenthesized_assignment): Add 'nested_p' |
| bool parameter. Suppress the warning for nested assignments |
| to bool and bool-like class types. |
| (maybe_convert_cond): Pass nested_p=false to |
| maybe_warn_unparenthesized_assignment. |
| * typeck.cc (convert_for_assignment): Pass nested_p=true to |
| maybe_warn_unparenthesized_assignment. Remove now redundant |
| check for 'rhs' having bool type. |
| |
| 2023-12-21 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/84542 |
| * decl.cc (merge_attribute_bits): Merge TREE_DEPRECATED |
| and TREE_UNAVAILABLE. |
| |
| 2023-12-21 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/70413 |
| PR c++/107906 |
| * decl2.cc (min_vis_expr_r): Handle PTRMEM_CST and TEMPLATE_DECL |
| other than those for alias templates. |
| |
| 2023-12-21 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-gimplify.cc (cp_genericize_r): If warn_alloc_size, call |
| warn_for_alloc_size for -Walloc-size diagnostics. |
| * semantics.cc (finish_call_expr): If warn_calloc_transposed_args, |
| call warn_for_calloc for -Wcalloc-transposed-args diagnostics. |
| |
| 2023-12-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/37722 |
| * decl.cc (identify_goto): Adjust for computed goto. |
| (struct named_label_use_entry): Add computed_goto field. |
| (poplevel_named_label_1): Add to computed_goto vec. |
| (check_previous_goto_1): Dump computed_goto vec. |
| (check_goto_1): Split out from check_goto. |
| (check_goto): Check all addressable labels for computed goto. |
| (struct named_label_entry): Add addressed field. |
| (mark_label_addressed): New. |
| * parser.cc (cp_parser_unary_expression): Call it. |
| * cp-tree.h (mark_label_addressed): Declare it. |
| |
| 2023-12-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/113088 |
| PR c++/33799 |
| * except.cc (maybe_splice_retval_cleanup): Handle an empty block. |
| |
| 2023-12-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103185 |
| * typeck.cc (cp_build_array_ref): Handle swapped operands. |
| |
| 2023-12-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/113063 |
| * method.cc (synthesize_method): Use maybe_push_to_top_level |
| and maybe_pop_from_top_level. |
| |
| 2023-12-19 Patrick Palka <ppalka@redhat.com> |
| |
| * name-lookup.cc (struct local_state_t): Define. |
| (local_state_stack): Define. |
| (maybe_push_to_top_level): Use them. |
| (maybe_pop_from_top_level): Likewise. |
| * pt.cc (instantiate_decl): Remove dead code for saving/restoring |
| cp_unevaluated_operand and c_inhibit_evaluation_warnings. |
| |
| 2023-12-19 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/102420 |
| * constexpr.cc (cxx_bind_parameters_in_call): Check for calling |
| non-static member functions with a null pointer. |
| |
| 2023-12-19 Sandra Loosemore <sandra@codesourcery.com> |
| |
| * decl.cc (omp_declare_variant_finalize_one): Adjust for new |
| representations. |
| * parser.cc (omp_construct_selectors): Delete. |
| (omp_device_selectors): Delete. |
| (omp_implementation_selectors): Delete. |
| (omp_user_selectors): Delete. |
| (cp_parser_omp_context_selector): Adjust for new representations |
| and simplify dispatch logic. Uniformly warn instead of sometimes |
| error when an unknown selector is found. Adjust error messages |
| for extraneous/incorrect score. |
| (cp_parser_omp_context_selector_specification): Likewise. |
| * pt.cc (tsubst_attribute): Adjust for new representations. |
| |
| 2023-12-19 Sandra Loosemore <sandra@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_context_selector): Adjust for new |
| namelist property representation. |
| * pt.cc (tsubst_attribute): Likewise. |
| |
| 2023-12-19 Sandra Loosemore <sandra@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_context_selector): Use new constructors. |
| * pt.cc: Include omp-general.h. |
| (tsubst_attribute): Use new context selector accessors and |
| constructors. |
| |
| 2023-12-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/90679 |
| * cp-tree.h (comp_template_args): Remove partial_order parameter. |
| (template_args_equal): Likewise. |
| * pt.cc (comparing_for_partial_ordering): New global flag. |
| (iterative_hash_template_arg) <case tcc_type>: Hash the template |
| and arguments for specializations that use structural equality. |
| (template_args_equal): Remove partial order parameter and |
| use comparing_for_partial_ordering instead. |
| (comp_template_args): Likewise. |
| (comp_template_args_porder): Set comparing_for_partial_ordering |
| instead. Make static. |
| (any_template_arguments_need_structural_equality_p): Return true |
| for an argument that's a dependent alias template specialization |
| or a class template specialization that itself needs structural |
| equality. |
| * tree.cc (cp_tree_equal) <case TREE_VEC>: Adjust call to |
| comp_template_args. |
| |
| 2023-12-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/90679 |
| * cp-tree.h (TEMPLATE_DECL_COMPLEX_ALIAS_P): Remove. |
| (most_general_template): Constify parameter. |
| * pt.cc (push_template_decl): Adjust after removing |
| TEMPLATE_DECL_COMPLEX_ALIAS_P. |
| (complex_alias_tmpl_info): New hash_map. |
| (uses_all_template_parms_data::seen): Change type to |
| tree* from bool*. |
| (complex_alias_template_r): Adjust accordingly. |
| (complex_alias_template_p): Add 'seen_out' out parameter. |
| Call most_general_template and check PRIMARY_TEMPLATE_P. |
| Use complex_alias_tmpl_info to cache the result and set |
| '*seen_out' accordigly. |
| (dependent_alias_template_spec_p): Add !processing_template_decl |
| early exit test. Consider dependence of only template arguments |
| corresponding to seen template parameters as per |
| |
| 2023-12-19 Thomas Schwinge <thomas@codesourcery.com> |
| |
| PR c++/90868 |
| * parser.cc (cp_parser_oacc_declare): For "more than once", check |
| the DECL that we're actually setting the attribute on. |
| |
| 2023-12-16 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/106363 |
| * module.cc (module_state::write_cluster): Don't skip first |
| depset for bindings. |
| |
| 2023-12-16 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/113031 |
| * constexpr.cc (cxx_fold_indirect_ref_1): Check for CLASS_TYPE |
| before using CLASSTYPE_AS_BASE. |
| |
| 2023-12-16 Andrew Carlotti <andrew.carlotti@arm.com> |
| |
| * decl2.cc (check_classfn): Update comment to include |
| target_version attributes. |
| |
| 2023-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/70435 |
| PR c++/88061 |
| * pt.cc (tsubst_function_decl): Propagate DECL_SECTION_NAME |
| via set_decl_section_name. |
| (tsubst_decl) <case VAR_DECL>: Likewise. |
| |
| 2023-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/109715 |
| * mangle.cc (get_abi_tags): Strip TEMPLATE_DECL before looking |
| up the abi_tag attribute. |
| |
| 2023-12-14 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/112482 |
| * decl.cc (grokdeclarator): Do not issue the auto parameter error while |
| tentatively parsing a function parameter. |
| * parser.cc (cp_parser_parameter_declaration_clause): Check it here. |
| |
| 2023-12-14 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/112869 |
| * cp-gimplify.cc (cp_fold_immediate_r): Check cp_unevaluated_operand |
| and DECL_IMMEDIATE_FUNCTION_P rather than in_immediate_context. |
| |
| 2023-12-14 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (type_targs_deducible_from): Adjust return type. |
| * pt.cc (alias_ctad_tweaks): Also handle C++23 inherited CTAD. |
| (inherited_ctad_tweaks): Define. |
| (type_targs_deducible_from): Return the deduced arguments or |
| NULL_TREE instead of a bool. Handle 'tmpl' being a TREE_LIST |
| representing a synthetic alias template. |
| (ctor_deduction_guides_for): Do inherited_ctad_tweaks for each |
| USING_DECL in C++23 mode. |
| (deduction_guides_for): Add FIXME for stale cache entries in |
| light of inherited CTAD. |
| |
| 2023-12-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/112968 |
| * pt.cc (freelist<tree_node>::reinit): Make whole obj->common |
| defined for valgrind annotations rather than just obj->base, |
| and do it even for ENABLE_GC_CHECKING. If not ENABLE_GC_CHECKING, |
| clear TREE_CHAIN (obj) and TREE_TYPE (obj). |
| |
| 2023-12-13 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (print_z_candidates): Only print ignored candidates |
| when -fdiagnostics-all-candidates is set, otherwise suggest |
| the flag. |
| (build_over_call): When diagnosing deletedness, note |
| other candidates only if -fdiagnostics-all-candidates is |
| set, otherwise suggest the flag. |
| |
| 2023-12-13 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (enum rejection_reason_code): Add rr_ignored. |
| (add_ignored_candidate): Define. |
| (ignored_candidate_p): Define. |
| (add_template_candidate_real): Do add_ignored_candidate |
| instead of returning NULL. |
| (splice_viable): Put ignored (non-viable) candidates last. |
| (print_z_candidate): Handle ignored candidates. |
| (build_new_function_call): Refine shortcut that calls |
| cp_build_function_call_vec now that non-templates can |
| appear in the candidate list for a template-id call. |
| (add_candidates): Replace 'bad_fns' overload with 'bad_cands' |
| candidate list. When not considering a candidate, add it |
| to the list as an ignored candidate. Add all 'bad_cands' |
| to the overload set as well. |
| |
| 2023-12-13 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc: Include "tristate.h". |
| (splice_viable): Sort the candidate list according to viability. |
| Don't remove non-viable candidates from the list. |
| (print_z_candidates): Add defaulted only_viable_p parameter. |
| By default only print non-viable candidates if there is no |
| viable candidate. |
| (tourney): Ignore non-viable candidates. Move the true champ to |
| the front of the candidates list, and update 'candidates' to |
| point to the front. Rename champ_compared_to_predecessor to |
| previous_worse_champ. |
| |
| 2023-12-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99186 |
| PR c++/104867 |
| * pt.cc (unify) <case INTEGER_CST>: Compare types as well. |
| |
| 2023-12-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/93740 |
| * pt.cc (unify) <case FUNCTION_DECL>: Handle it like FIELD_DECL |
| and TEMPLATE_DECL. |
| |
| 2023-12-13 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (convert_for_arg_passing) |
| * typeck.cc (convert_for_assignment): Adjust call to |
| warn_for_address_of_packed_member. |
| |
| 2023-12-13 Julian Brown <julian@codesourcery.com> |
| |
| * parser.cc (cp_parser_oacc_all_clauses): Add TARGET_P parameter. Use |
| to select region type for finish_omp_clauses call. |
| (cp_parser_omp_target_data, cp_parser_omp_target_enter_data): Support |
| GOMP_MAP_ATTACH kind. |
| (cp_parser_omp_target_exit_data): Support GOMP_MAP_DETACH kind. |
| (cp_parser_oacc_declare): Update call to cp_parser_oacc_all_clauses. |
| (cp_parser_oacc_loop): Update calls to cp_parser_oacc_all_clauses. |
| (cp_parser_oacc_compute): Likewise. |
| * pt.cc (tsubst_expr): Use C_ORT_ACC_TARGET for call to |
| tsubst_omp_clauses for OpenACC compute regions. |
| * semantics.cc (cp_omp_address_inspector): New class, derived from |
| c_omp_address_inspector. |
| (handle_omp_array_sections_1, handle_omp_array_sections, |
| finish_omp_clauses): Use cp_omp_address_inspector class and OMP address |
| tokenizer to analyze and expand OpenMP map clause expressions. Fix |
| some diagnostics. Support C_ORT_ACC_TARGET. |
| (finish_omp_target): Handle GOMP_MAP_POINTER. |
| |
| 2023-12-13 Julian Brown <julian@codesourcery.com> |
| |
| * semantics.cc (finish_omp_clause): Add braces and reindent |
| OMP_CLAUSE_TO/OMP_CLAUSE_FROM/OMP_CLAUSE__CACHE_ stanza. |
| |
| 2023-12-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96997 |
| * tree.cc (bot_manip): Check data.clear_location for TARGET_EXPR. |
| |
| 2023-12-13 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/71093 |
| * constexpr.cc (constexpr_global_ctx::get_value_ptr): Don't |
| return NULL_TREE for objects we're initializing. |
| (constexpr_global_ctx::destroy_value): Rename from remove_value. |
| Only mark real variables as outside lifetime. |
| (constexpr_global_ctx::clear_value): New function. |
| (destroy_value_checked): New function. |
| (cxx_eval_call_expression): Defer complaining about non-constant |
| arg0 for operator delete. Use remove_value_safe. |
| (cxx_fold_indirect_ref_1): Handle conversion to 'as base' type. |
| (outside_lifetime_error): Include name of object we're |
| accessing. |
| (cxx_eval_store_expression): Handle clobbers. Improve error |
| messages. |
| (cxx_eval_constant_expression): Use remove_value_safe. Clear |
| bind variables before entering body. |
| |
| 2023-12-13 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_call_expression): Handle missing in-charge |
| argument. |
| |
| 2023-12-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108243 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Turn |
| a constructor CALL_EXPR into a TARGET_EXPR. |
| |
| 2023-12-13 Jason Merrill <jason@redhat.com> |
| |
| * tree.cc (build_aggr_init_expr): Copy EXPR_LOCATION. |
| |
| 2023-12-12 Jason Merrill <jason@redhat.com> |
| Jason Xu <rxu@DRWHoldings.com> |
| |
| * class.cc (propagate_class_warmth_attribute): Handle |
| member templates. |
| |
| 2023-12-12 Jason Merrill <jason@redhat.com> |
| Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * call.cc (build_trivial_dtor_call): Use CLOBBER_OBJECT_END. |
| * decl.cc (build_clobber_this): Take clobber_kind argument. |
| (start_preparsed_function): Pass CLOBBER_OBJECT_BEGIN. |
| (begin_destructor_body): Pass CLOBBER_OBJECT_END. |
| |
| 2023-12-11 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (alias_ctad_tweaks): Pass use_spec_table=false to |
| tsubst_decl. |
| |
| 2023-12-11 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_requires): Handle acquires/release |
| in atomic_default_mem_order clause. |
| (cp_parser_omp_atomic): Update. |
| |
| 2023-12-11 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/96090 |
| PR c++/100470 |
| * call.cc (build_over_call): Prevent folding of trivial special |
| members when checking for noexcept. |
| * method.cc (constructible_expr): Perform value-initialisation |
| for empty parameter lists. |
| (is_nothrow_xible): Treat as noexcept operator. |
| |
| 2023-12-11 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/104234 |
| PR c++/112580 |
| * pt.cc (tsubst_template_decl): Clear |
| DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __remove_pointer. |
| * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_POINTER. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_object. |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_OBJECT. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_function. |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_FUNCTION. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_reference. |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_REFERENCE. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_member_object_pointer. |
| * constraint.cc (diagnose_trait_expr): Handle |
| CPTK_IS_MEMBER_OBJECT_POINTER. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_member_function_pointer. |
| * constraint.cc (diagnose_trait_expr): Handle |
| CPTK_IS_MEMBER_FUNCTION_POINTER. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_member_pointer. |
| * constraint.cc (diagnose_trait_expr): Handle |
| CPTK_IS_MEMBER_POINTER. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_scoped_enum. |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_SCOPED_ENUM. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_bounded_array. |
| * constraint.cc (diagnose_trait_expr): Handle |
| CPTK_IS_BOUNDED_ARRAY. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * cp-trait.def: Define __is_array. |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_ARRAY. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| |
| 2023-12-10 Jason Merrill <jason@redhat.com> |
| |
| * parser.cc (cp_parser_simple_type_specifier): Move trait |
| handling to default label. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * parser.cc (cp_lexer_lookup_trait): Rename to ... |
| (cp_lexer_peek_trait): ... this. Handle a subsequent token for |
| the corresponding built-in trait. |
| (cp_lexer_lookup_trait_expr): Rename to ... |
| (cp_lexer_peek_trait_expr): ... this. |
| (cp_lexer_lookup_trait_type): Rename to ... |
| (cp_lexer_peek_trait_type): ... this. |
| (cp_lexer_next_token_is_decl_specifier_keyword): Call |
| cp_lexer_peek_trait_type. |
| (cp_parser_simple_type_specifier): Likewise. |
| (cp_parser_primary_expression): Call cp_lexer_peek_trait_expr. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| Patrick Palka <ppalka@redhat.com> |
| |
| * cp-objcp-common.cc (names_builtin_p): Remove all RID value |
| cases for built-in traits. Check for built-in traits via |
| the new cik_trait kind. |
| * cp-tree.h (enum cp_trait_kind): Set its underlying type to |
| addr_space_t. |
| (struct cp_trait): New struct to hold trait information. |
| (cp_traits): New array to hold a mapping to all traits. |
| (cik_reserved_for_udlit): Rename to ... |
| (cik_trait): ... this. |
| (IDENTIFIER_ANY_OP_P): Exclude cik_trait. |
| (IDENTIFIER_TRAIT_P): New macro to detect cik_trait. |
| * lex.cc (cp_traits): Define its values, declared in cp-tree.h. |
| (init_cp_traits): New function to set cik_trait and |
| IDENTIFIER_CP_INDEX for all built-in trait identifiers. |
| (cxx_init): Call init_cp_traits function. |
| * parser.cc (cp_lexer_lookup_trait): New function to look up a |
| built-in trait by IDENTIFIER_CP_INDEX. |
| (cp_lexer_lookup_trait_expr): Likewise, look up an |
| expression-yielding built-in trait. |
| (cp_lexer_lookup_trait_type): Likewise, look up a type-yielding |
| built-in trait. |
| (cp_keyword_starts_decl_specifier_p): Remove all RID value cases |
| for built-in traits. |
| (cp_lexer_next_token_is_decl_specifier_keyword): Handle |
| type-yielding built-in traits. |
| (cp_parser_primary_expression): Remove all RID value cases for |
| built-in traits. Handle expression-yielding built-in traits. |
| (cp_parser_trait): Handle cp_trait instead of enum rid. |
| (cp_parser_simple_type_specifier): Remove all RID value cases |
| for built-in traits. Handle type-yielding built-in traits. |
| |
| 2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org> |
| |
| * constraint.cc (diagnose_trait_expr): Sort built-in traits |
| alphabetically. |
| * cp-trait.def: Likewise. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| (finish_trait_type): Likewise. |
| |
| 2023-12-09 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_statement, cp_parser_expression_statement, |
| cp_parser_declaration, cp_parser_asm_definition): Don't diagnose |
| ignored attributes if !any_nonignored_attribute_p. |
| * decl.cc (grokdeclarator): Likewise. |
| * name-lookup.cc (handle_namespace_attrs, finish_using_directive): |
| Don't diagnose ignoring of attr_ignored_p attributes. |
| |
| 2023-12-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/83167 |
| * semantics.cc (capture_decltype): Inline into its only caller ... |
| (finish_decltype_type): ... here. Update nearby comment to refer |
| to recent standard. Add FIXME. Restrict uncaptured variable type |
| transformation to happen only for lambdas with a by-copy |
| capture-default. |
| |
| 2023-12-08 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_std_attribute_spec): Return void_list_node |
| rather than NULL_TREE if token is neither CPP_OPEN_SQUARE nor |
| RID_ALIGNAS CPP_KEYWORD. |
| (cp_parser_std_attribute_spec_seq): For attr_spec == void_list_node |
| break, for attr_spec == NULL_TREE continue. |
| |
| 2023-12-08 Jakub Jelinek <jakub@redhat.com> |
| |
| PR sanitizer/112727 |
| * cp-gimplify.cc (cp_fold): If SAVE_EXPR has been previously |
| folded, unshare_expr what is returned. |
| |
| 2023-12-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/112658 |
| * parser.cc (cp_parser_expression_statement): If the statement |
| is error_mark_node, make sure we've seen_error(). |
| |
| 2023-12-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/112658 |
| PR c++/94264 |
| * typeck.cc (cp_build_c_cast): If we're committed to a const_cast |
| and the result is erroneous, call build_const_cast_1 a second |
| time to issue errors. Use complain=tf_none instead of =false. |
| |
| 2023-12-06 David Malcolm <dmalcolm@redhat.com> |
| |
| * cp-tree.h (cxx_print_error_function): Make diagnostic_info param |
| const. |
| * error.cc (cxx_print_error_function): Likewise. |
| (cp_diagnostic_starter): Likewise. |
| (cp_print_error_function): Likewise. |
| |
| 2023-12-06 Jason Merrill <jason@redhat.com> |
| |
| DR 532 |
| PR c++/53499 |
| * pt.cc (more_specialized_fn): Fix object parameter handling. |
| |
| 2023-12-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/112795 |
| * cp-tree.h (cp_check_pragma_unroll): Declare. |
| * semantics.cc (cp_check_pragma_unroll): New function. |
| * parser.cc (cp_parser_pragma_unroll): Use cp_check_pragma_unroll. |
| * pt.cc (tsubst_expr) <case ANNOTATE_EXPR>: Likewise. |
| (tsubst_stmt) <case RANGE_FOR_STMT>: Likwsie. |
| |
| 2023-12-05 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * tree.cc (cxx_gnu_attribute_table): Add extra braces to work |
| around PR 16333 in older compilers. |
| |
| 2023-12-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/110734 |
| * parser.cc (cp_parser_block_declaration): Implement C++ DR 2262 |
| - Attributes for asm-definition. Call cp_parser_asm_definition |
| even if RID_ASM token is only seen after sequence of standard |
| attributes. |
| (cp_parser_asm_definition): Parse standard attributes before |
| RID_ASM token and warn for them with -Wattributes. |
| |
| 2023-12-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/107687 |
| PR c++/110997 |
| * call.cc (in_immediate_context): No longer static. |
| * constexpr.cc (cxx_eval_call_expression): Adjust assert. |
| * cp-gimplify.cc (deferred_escalating_exprs): New vec. |
| (remember_escalating_expr): New. |
| (enum fold_flags): Remove ff_fold_immediate. |
| (immediate_escalating_function_p): New. |
| (unchecked_immediate_escalating_function_p): New. |
| (promote_function_to_consteval): New. |
| (cp_fold_immediate): Move above. Return non-null if any errors were |
| emitted. |
| (maybe_explain_promoted_consteval): New. |
| (cp_gimplify_expr) <case CALL_EXPR>: Assert we've handled all |
| immediate invocations. |
| (taking_address_of_imm_fn_error): New. |
| (cp_fold_immediate_r): Merge ADDR_EXPR and PTRMEM_CST cases. Implement |
| P2564 - promoting functions to consteval. |
| <case CALL_EXPR>: Implement P2564 - promoting functions to consteval. |
| (cp_fold_r): If an expression turns into a CALL_EXPR after cp_fold, |
| call cp_fold_immediate_r on the CALL_EXPR. |
| (cp_fold_function): Set DECL_ESCALATION_CHECKED_P if |
| deferred_escalating_exprs does not contain current_function_decl. |
| (process_and_check_pending_immediate_escalating_fns): New. |
| * cp-tree.h (struct lang_decl_fn): Add escalated_p bit-field. |
| (DECL_ESCALATION_CHECKED_P): New. |
| (immediate_invocation_p): Declare. |
| (process_pending_immediate_escalating_fns): Likewise. |
| * decl2.cc (c_parse_final_cleanups): Set at_eof to 2 after all |
| templates have been instantiated; and to 3 at the end of the function. |
| Call process_pending_immediate_escalating_fns. |
| * error.cc (dump_template_bindings): Check at_eof against an updated |
| value. |
| * module.cc (trees_out::lang_decl_bools): Stream escalated_p. |
| (trees_in::lang_decl_bools): Likewise. |
| * pt.cc (push_tinst_level_loc): Set at_eof to 3, not 2. |
| * typeck.cc (cp_build_addr_expr_1): Don't check |
| DECL_IMMEDIATE_FUNCTION_P. |
| |
| 2023-12-04 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (potential_constant_expression_1): Fix |
| check for loading volatile lvalue. |
| |
| 2023-12-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/112795 |
| * cp-tree.h (cp_convert_range_for): Change UNROLL type from |
| unsigned short to tree. |
| (finish_while_stmt_cond, finish_do_stmt, finish_for_cond): Likewise. |
| * parser.cc (cp_parser_statement): Pass NULL_TREE rather than 0 to |
| cp_parser_iteration_statement UNROLL argument. |
| (cp_parser_for, cp_parser_c_for): Change UNROLL type from |
| unsigned short to tree. |
| (cp_parser_range_for): Likewise. Set RANGE_FOR_UNROLL to just UNROLL |
| rather than build_int_cst from it. |
| (cp_convert_range_for, cp_parser_iteration_statement): Change UNROLL |
| type from unsigned short to tree. |
| (cp_parser_omp_loop_nest): Pass NULL_TREE rather than 0 to |
| cp_parser_range_for UNROLL argument. |
| (cp_parser_pragma_unroll): Return tree rather than unsigned short. |
| If parsed expression is type dependent, just return it, don't diagnose |
| issues with value if it is value dependent. |
| (cp_parser_pragma): Change UNROLL type from unsigned short to tree. |
| * semantics.cc (finish_while_stmt_cond): Change UNROLL type from |
| unsigned short to tree. Build ANNOTATE_EXPR with UNROLL as its last |
| operand rather than build_int_cst from it. |
| (finish_do_stmt, finish_for_cond): Likewise. |
| * pt.cc (tsubst_stmt) <case RANGE_FOR_STMT>: Change UNROLL type from |
| unsigned short to tree and set it to RECUR on RANGE_FOR_UNROLL (t). |
| (tsubst_expr) <case ANNOTATE_EXPR>: For annot_expr_unroll_kind repeat |
| checks on UNROLL value from cp_parser_pragma_unroll. |
| |
| 2023-12-02 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * cp-tree.h (cxx_attribute_table): Delete. |
| (cxx_gnu_attribute_table, std_attribute_table): Declare. |
| * cp-objcp-common.h (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Delete. |
| (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Delete. |
| (cp_objcp_attribute_table): New table. |
| (LANG_HOOKS_ATTRIBUTE_TABLE): Redefine. |
| * tree.cc (cxx_attribute_table): Replace with... |
| (cxx_gnu_attributes, cxx_gnu_attribute_table): ...these globals. |
| (std_attribute_table): Change type to scoped_attribute_specs, using... |
| (std_attributes): ...this as the underlying array. |
| (init_tree): Remove call to register_scoped_attributes. |
| |
| 2023-12-01 Jason Merrill <jason@redhat.com> |
| |
| * mangle.cc (write_type): Mangle placeholder as its template. |
| |
| 2023-12-01 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (TEMPLATE_ARGS_TYPE_CONSTRAINT_P): New. |
| (get_concept_check_template): Declare. |
| * constraint.cc (combine_constraint_expressions) |
| (finish_shorthand_constraint): Use UNKNOWN_LOCATION. |
| * pt.cc (convert_generic_types_to_packs): Likewise. |
| * mangle.cc (write_constraint_expression) |
| (write_tparms_constraints, write_type_constraint) |
| (template_parm_natural_p, write_requirement) |
| (write_requires_expr): New. |
| (write_encoding): Mangle trailing requires-clause. |
| (write_name): Pass parms to write_template_args. |
| (write_template_param_decl): Factor out from... |
| (write_closure_template_head): ...here. |
| (write_template_args): Mangle non-natural parms |
| and requires-clause. |
| (write_expression): Handle REQUIRES_EXPR. |
| |
| 2023-12-01 Jason Merrill <jason@redhat.com> |
| |
| * semantics.cc (finish_non_static_data_member) |
| (finish_decltype_type, capture_decltype): |
| Handle deduced closure parameter. |
| |
| 2023-11-30 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/112744 |
| * typeck.cc (finish_class_member_access_expr): When accessing |
| a static data member, use ba_any for lookup_base. |
| |
| 2023-11-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/110349 |
| * cp-tree.h: Implement C++26 P2169R4 - Placeholder variables with no |
| name. |
| (OVL_NAME_INDEPENDENT_DECL_P): Define. |
| (add_capture): Add unsigned * argument. |
| (name_independent_decl_p): New inline function. |
| * name-lookup.cc (class name_lookup): Make ambiguous and |
| add_value members public. |
| (name_independent_linear_search): New function. |
| (get_class_binding_direct): Handle member_vec_binary_search |
| returning OVL_NAME_INDEPENDENT_DECL_P OVERLOAD. Use |
| name_independent_linear_search rather than fields_linear_search |
| for linear lookup of _ name if !want_type. |
| (member_name_cmp): Sort name-independent declarations first. |
| (member_vec_dedup): Handle name-independent declarations. |
| (pop_local_binding): Handle binding->value being a TREE_LIST for |
| ambiguous name-independent declarations. |
| (supplement_binding): Handle name-independent declarations. |
| (update_binding): Likewise. |
| (check_local_shadow): Return tree rather than void, normally |
| NULL_TREE but old for name-independent declarations which used |
| to conflict with outer scope declaration. Don't emit -Wshadow* |
| warnings for name-independent declarations. |
| (pushdecl): Handle name-independent declarations. |
| * search.cc (lookup_field_r): Handle nval being a TREE_LIST. |
| * lambda.cc (build_capture_proxy): Adjust for ___.<number> |
| names of members. |
| (add_capture): Add NAME_INDEPENDENT_CNT argument. Use ___.<number> |
| name rather than ___ for second and following capture with |
| _ name. |
| (add_default_capture): Adjust add_capture caller. |
| * decl.cc (poplevel): Don't warn about name-independent declarations. |
| (duplicate_decls): If in C++26 a _ named declaration conflicts with |
| earlier declarations, emit explaining note why the new declaration |
| is not name-independent. |
| (reshape_init_class): If field is a TREE_LIST, emit an ambiguity |
| error with list of candidates rather than error about non-existing |
| non-static data member. |
| * parser.cc (cp_parser_lambda_introducer): Adjust add_capture callers. |
| Allow name-independent capture redeclarations. |
| (cp_parser_decomposition_declaration): Set decl_specs.storage_class |
| to sc_static for static structured bindings. |
| * pt.cc (tsubst_lambda_expr): Adjust add_capture caller. |
| |
| 2023-11-30 Alexandre Oliva <oliva@adacore.com> |
| |
| * decl.cc (finish_enum_value_list): Set TYPE_PACKED if |
| use_short_enum, and propagate it to variants. |
| |
| 2023-11-30 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (LAMBDA_EXPR_MUTABLE_P): Remove. |
| * cp-tree.def: Remove documentation. |
| * lambda.cc (build_lambda_expr): Remove reference. |
| * parser.cc (cp_parser_lambda_declarator_opt): Likewise. |
| * pt.cc (tsubst_lambda_expr): Likewise. |
| * ptree.cc (cxx_print_lambda_node): Likewise. |
| * semantics.cc (capture_decltype): Get the object quals |
| from the object instead. |
| |
| 2023-11-29 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/106650 |
| * constexpr.cc (cxx_eval_constant_expression) <case PARM_DECL>: Allow |
| reference to unknown/this as per P2280. |
| <case VAR_DECL>: Allow reference to unknown as per P2280. |
| |
| 2023-11-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/112765 |
| * pt.cc (tsubst_expr) <case MODOP_EXPR>: Look through implicit |
| INDIRECT_REF when propagating -Wparentheses warning suppression. |
| * semantics.cc (maybe_warn_unparenthesized_assignment): Replace |
| REFERENCE_REF_P handling with STRIP_REFERENCE_REF. |
| (finish_parenthesized_expr): Likewise. |
| |
| 2023-11-29 Jakub Jelinek <jakub@redhat.com> |
| |
| * semantics.cc (finish_static_assert): Free buf on error return. |
| |
| 2023-11-29 Alexandre Oliva <oliva@adacore.com> |
| |
| * decl.cc (maybe_prepare_return_this): Split out of... |
| (maybe_return_this): ... this. |
| * cp-tree.h (maybe_prepare_return_this): Declare. |
| * class.cc (build_clone): Call it. |
| |
| 2023-11-29 Alexandre Oliva <oliva@adacore.com> |
| |
| * contracts.cc (check_postcondition_result): Cope with |
| cdtor_return_this. |
| |
| 2023-11-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/94264 |
| PR c++/53220 |
| * call.cc (convert_like_internal): Remove obsolete comment. |
| * typeck.cc (decay_conversion): Allow array prvalue. |
| (maybe_warn_about_returning_address_of_local): Check |
| for returning pointer to temporary. |
| |
| 2023-11-28 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-objcp-common.cc (cp_feature_table): Evaluate |
| __has_extension (cxx_init_captures) to 1 even for -std=c++11. |
| |
| 2023-11-27 Alex Coplan <alex.coplan@arm.com> |
| Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/60512 |
| * cp-lang.cc (c_family_register_lang_features): New. |
| * cp-objcp-common.cc (struct cp_feature_selector): New. |
| (cp_feature_selector::has_feature): New. |
| (struct cp_feature_info): New. |
| (cp_register_features): New. |
| * cp-objcp-common.h (cp_register_features): New. |
| |
| 2023-11-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * name-lookup.cc (check_can_export_using_decl): New. |
| (do_nonmember_using_decl): Use above to check if names can be |
| exported. |
| |
| 2023-11-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/102341 |
| * decl.cc (duplicate_decls): Allow exporting a redeclaration of |
| a typedef. |
| |
| 2023-11-24 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_clause_dist_schedule, |
| cp_parser_omp_scan_loop_body, cp_parser_omp_assumption_clauses, |
| cp_parser_omp_depobj): Add OPT_Wopenmp to warning_at. |
| * semantics.cc (finish_omp_clauses): Likewise. |
| |
| 2023-11-24 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_depobj): Accept optionally an argument |
| to the destroy clause. |
| |
| 2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/99232 |
| * decl.cc (grokvardecl): Don't mark variables attached to |
| modules as internal. |
| |
| 2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/107398 |
| * module.cc (trees_out::get_merge_kind): Handle lambdas in class |
| scope. |
| (maybe_key_decl): Remove assertion and fix whitespace. |
| |
| 2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/98885 |
| * decl.cc (duplicate_decls): Adjust error message. |
| (xref_tag): Adjust error message. Check exporting decl that is |
| already declared as non-exporting. |
| |
| 2023-11-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/110348 |
| * parser.cc: Implement C++26 P2741R3 - user-generated static_assert |
| messages. |
| (cp_parser_static_assert): Parse message argument as |
| conditional-expression if it is not a pure string literal or |
| several of them concatenated followed by closing paren. |
| * semantics.cc (finish_static_assert): Handle message which is not |
| STRING_CST. For condition with bare parameter packs return early. |
| * pt.cc (tsubst_expr) <case STATIC_ASSERT>: Also tsubst_expr |
| message and make sure that if it wasn't originally STRING_CST, it |
| isn't after tsubst_expr either. |
| |
| 2023-11-22 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/112633 |
| * pt.cc (tsubst_aggr_type): Handle empty TYPE_TEMPLATE_INFO |
| in the entering_scope adjustment. |
| |
| 2023-11-22 Jason Merrill <jason@redhat.com> |
| |
| * decl.cc (start_preparsed_function): Clarify ctype logic. |
| |
| 2023-11-20 Marc Poulhiès <dkm@kataplop.net> |
| |
| * lambda.cc (compare_lambda_sig): Fix typo in variadic. |
| |
| 2023-11-20 Jason Merrill <jason@redhat.com> |
| |
| * pt.cc (comp_template_parms): Just one level. |
| (template_parameter_lists_equivalent_p): Likewise. |
| |
| 2023-11-20 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (DECL_TEMPLATE_PARM_CHECK): New. |
| (DECL_IMPLICIT_TEMPLATE_PARM_P): New. |
| (decl_template_parm_check): New. |
| * mangle.cc (write_closure_template_head): Use it. |
| * parser.cc (synthesize_implicit_template_parm): Likewise. |
| * pt.cc (template_parameters_equivalent_p): Likewise. |
| |
| 2023-11-19 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/99187 |
| * cp-tree.h (enum cp_tree_index): Add CPTI_THREAD_ATEXIT. |
| (thread_atexit_node): New. |
| * decl.cc (get_thread_atexit_node): Cache in thread_atexit_node. |
| |
| 2023-11-19 David Malcolm <dmalcolm@redhat.com> |
| |
| * mapper-client.cc: Include "rich-location.h". |
| |
| 2023-11-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/112365 |
| * class.cc (layout_class_type): Don't |
| SET_DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD on FIELD_DECLs with |
| error_mark_node type. |
| |
| 2023-11-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111703 |
| PR c++/107939 |
| * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: |
| Fix FUNCTION_POINTER_TYPE_P test. |
| |
| 2023-11-16 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/112410 |
| * parser.cc (cp_parser_direct_declarator): Maybe call |
| abort_fully_implicit_template if it turned out the parameter list was |
| ill-formed. |
| |
| 2023-11-15 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> |
| |
| * tree.cc (build_cplus_array_type): Revert using the macro |
| CAN_HAVE_LOCATION_P. |
| |
| 2023-11-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/112515 |
| * decl.cc (is_direct_enum_init): Check type-dependence of the |
| single element. |
| |
| 2023-11-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101043 |
| * tree.cc (strip_typedefs_expr) <case TREE_LIST>: Handle |
| non-empty TREE_PURPOSE. |
| |
| 2023-11-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/112427 |
| * tree.cc (build_min_non_dep): Propagate TREE_SIDE_EFFECTS from |
| the original arguments. |
| (build_min_non_dep_call_vec): Likewise. |
| * typeck2.cc (build_m_component_ref): Use cp_convert, build2 and |
| cp_fully_fold instead of fold_build_pointer_plus and fold_convert. |
| Don't build the POINTER_PLUS_EXPR in a template context. |
| |
| 2023-11-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111703 |
| PR c++/112269 |
| * constexpr.cc (potential_constant_expression_1) <case VAR_DECL>: |
| Only consider var_in_maybe_constexpr_fn if 'now' is false. |
| <case INDIRECT_REF>: Likewise. |
| |
| 2023-11-15 Jakub Jelinek <jakub@redhat.com> |
| |
| * typeck.cc: Implement C++26 P2864R2 - Remove Deprecated Arithmetic |
| Conversion on Enumerations From C++26. |
| (do_warn_enum_conversions): Return bool rather than void, add COMPLAIN |
| argument. Use pedwarn rather than warning_at for C++26 and remove |
| " is deprecated" part of the diagnostics in that case. For SFINAE |
| in C++26 return true on newly erroneous cases. |
| (cp_build_binary_op): For C++26 call do_warn_enum_conversions |
| unconditionally, pass complain argument to it and if it returns true, |
| return error_mark_node. |
| * call.cc (build_conditional_expr): Use pedwarn rather than warning_at |
| for C++26 and remove " is deprecated" part of the diagnostics in that |
| case and check for complain & tf_warning_or_error. Use emit_diagnostic |
| with cxx_dialect >= cxx26 ? DK_PEDWARN : DK_WARNING. For SFINAE in |
| C++26 return error_mark_node on newly erroneous cases. |
| (build_new_op): Use emit_diagnostic with cxx_dialect >= cxx26 |
| ? DK_PEDWARN : DK_WARNING and complain & tf_warning_or_error check |
| for C++26. For SFINAE in C++26 return error_mark_node on newly |
| erroneous cases. |
| |
| 2023-11-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/103499 |
| * module.cc (trees_out::decl_node): Write DECL_VINDEX for |
| virtual clones. |
| (trees_in::tree_node): Read DECL_VINDEX for virtual clones. |
| |
| 2023-11-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/106849 |
| * name-lookup.cc (do_nonmember_using_decl): Handle |
| TEMPLATE_DECLs when checking module attachment. |
| |
| 2023-11-14 David Malcolm <dmalcolm@redhat.com> |
| |
| * decl.cc (finish_function): Update call to |
| global_dc->m_option_enabled to use option_enabled_p. |
| |
| 2023-11-14 David Malcolm <dmalcolm@redhat.com> |
| |
| * contracts.cc (build_comment): Use global_dc's file_cache. |
| |
| 2023-11-14 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/111842 |
| PR c++/112498 |
| * call.cc (convert_like_internal): Use OPT_Wnarrowing for |
| pedwarns about illformed conversions involving extended |
| floating-point types. Clarify that ISO C++ requires these |
| diagnostics. |
| |
| 2023-11-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/111309 |
| * call.cc (magic_varargs_p): Return 4 for |
| BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. |
| (build_over_call): Don't promote first argument of |
| BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. |
| * cp-gimplify.cc (cp_gimplify_expr): For BUILT_IN_C{L,T}ZG use |
| c_gimplify_expr. |
| |
| 2023-11-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/79620 |
| * cp-tree.h (STRIP_REFERENCE_REF): Define. |
| * semantics.cc (outer_var_p): Assert REFERENCE_REF_P is false. |
| (finish_decltype_type): Look through implicit INDIRECT_REF when |
| deciding whether to call capture_decltype. |
| |
| 2023-11-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/79378 |
| PR c++/96917 |
| * semantics.cc (finish_decltype_type): Handle an id-expression |
| naming a capture proxy specially. |
| |
| 2023-11-07 Kwok Cheung Yeung <kcy@codesourcery.com> |
| |
| * cp-tree.h (cp_omp_declare_target_attr): Add indirect field. |
| * decl2.cc (cplus_decl_attributes): Add attribute for indirect |
| functions. |
| * parser.cc (cp_parser_omp_clause_name): Handle indirect clause. |
| (cp_parser_omp_clause_indirect): New. |
| (cp_parser_omp_all_clauses): Handle indirect clause. |
| (handle_omp_declare_target_clause): Add extra parameter. Add |
| indirect attribute for indirect functions. |
| (OMP_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. |
| (cp_parser_omp_declare_target): Handle indirect clause. Emit error |
| message if device_type or indirect clauses used alone. Emit error |
| if indirect clause used with device_type that is not 'any'. |
| (OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. |
| (cp_parser_omp_begin): Handle indirect clause. |
| * semantics.cc (finish_omp_clauses): Handle indirect clause. |
| |
| 2023-11-04 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.h (struct cp_parser): Adjust comment on omp_attrs_forbidden_p |
| member. |
| * parser.cc (cp_parser_omp_section_scan): Allow __directive__ spelling. |
| |
| 2023-11-04 David Malcolm <dmalcolm@redhat.com> |
| |
| * call.cc: Update for changes to diagnostic_context. |
| * class.cc: Likewise. |
| * decl.cc: Likewise. |
| * error.cc: Likewise. |
| * except.cc: Likewise. |
| * pt.cc: Likewise. |
| |
| 2023-11-02 Jason Merrill <jason@redhat.com> |
| |
| * semantics.cc (nrv_data): Change visited to hash_set. |
| (finalize_nrv_r): Reorganize. |
| |
| 2023-11-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/112301 |
| PR c++/102191 |
| PR c++/33799 |
| * except.cc (maybe_splice_retval_cleanup): Clear |
| current_retval_sentinel when destroying retval. |
| * semantics.cc (nrv_data): Add in_nrv_cleanup. |
| (finalize_nrv): Set it. |
| (finalize_nrv_r): Fix handling of throwing cleanups. |
| |
| 2023-11-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/110342 |
| * parser.cc: Implement C++26 P2361R6 - Unevaluated strings. |
| (uneval_string_attr): New enumerator. |
| (cp_parser_string_literal_common): Add UNEVAL argument. If true, |
| pass CPP_UNEVAL_STRING rather than CPP_STRING to |
| cpp_interpret_string_notranslate. |
| (cp_parser_string_literal, cp_parser_userdef_string_literal): Adjust |
| callers of cp_parser_string_literal_common. |
| (cp_parser_unevaluated_string_literal): New function. |
| (cp_parser_parenthesized_expression_list): Handle uneval_string_attr. |
| (cp_parser_linkage_specification): Use |
| cp_parser_unevaluated_string_literal for C++26. |
| (cp_parser_static_assert): Likewise. |
| (cp_parser_std_attribute): Use uneval_string_attr for standard |
| deprecated and nodiscard attributes. |
| |
| 2023-10-31 David Malcolm <dmalcolm@redhat.com> |
| |
| * module.cc (ordinary_loc_of): Update for removal of |
| MACRO_MAP_EXPANSION_POINT_LOCATION. |
| (module_state::note_location): Update for renaming of field. |
| (module_state::write_macro_maps): Likewise. |
| |
| 2023-10-27 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111929 |
| * init.cc (build_new_1): Remove unnecessary call to convert |
| on 'nelts'. Use build2 instead of fold_build2 for |
| 'outer_nelts_checks'. |
| |
| 2023-10-27 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (maybe_warn_unparenthesized_assignment): Declare. |
| * semantics.cc (is_assignment_op_expr_p): Generalize to return |
| true for any assignment operator expression, not just one that |
| has been resolved to an operator overload. |
| (maybe_warn_unparenthesized_assignment): Factored out from ... |
| (maybe_convert_cond): ... here. |
| (finish_parenthesized_expr): Mention |
| maybe_warn_unparenthesized_assignment. |
| * typeck.cc (convert_for_assignment): Replace -Wparentheses |
| warning logic with maybe_warn_unparenthesized_assignment. |
| |
| 2023-10-27 Lewis Hyatt <lhyatt@gmail.com> |
| |
| PR preprocessor/87299 |
| * parser.cc (cp_lexer_new_main): Call c_reset_target_pragmas () |
| after preprocessing is complete, before starting compilation. |
| |
| 2023-10-26 liuhongt <hongtao.liu@intel.com> |
| |
| * typeck.cc (build_vec_cmp): Pass type of arg0 to |
| truth_type_for. |
| |
| 2023-10-25 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.def: Improve OFFSET_REF comment. |
| * cp-gimplify.cc (cp_fold_immediate): Add to comment. |
| |
| 2023-10-25 Thomas Schwinge <thomas@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_clause_name): Return |
| 'PRAGMA_OACC_CLAUSE_SELF' for "self". |
| (cp_parser_oacc_data_clause, OACC_UPDATE_CLAUSE_MASK): Adjust. |
| (cp_parser_oacc_all_clauses): Remove 'bool compute_p' formal |
| parameter, and instead locally determine whether we're called for |
| an OpenACC compute construct or OpenACC 'update' directive. |
| (cp_parser_oacc_compute): Adjust. |
| |
| 2023-10-25 Chung-Lin Tang <cltang@codesourcery.com> |
| |
| * parser.cc (cp_parser_oacc_compute_clause_self): New function. |
| (cp_parser_oacc_all_clauses): Add new 'bool compute_p = false' |
| parameter, add parsing of self clause when compute_p is true. |
| (OACC_KERNELS_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_SELF. |
| (OACC_PARALLEL_CLAUSE_MASK): Likewise, |
| (OACC_SERIAL_CLAUSE_MASK): Likewise. |
| (cp_parser_oacc_compute): Adjust call to c_parser_oacc_all_clauses to |
| set compute_p argument to true. |
| * pt.cc (tsubst_omp_clauses): Add OMP_CLAUSE_SELF case. |
| * semantics.cc (c_finish_omp_clauses): Add OMP_CLAUSE_SELF case, merged |
| with OMP_CLAUSE_IF case. |
| |
| 2023-10-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/111895 |
| * typeck.cc (build_static_cast_1): Call decay_conversion. |
| |
| 2023-10-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111929 |
| * init.cc (build_new_1): Use convert, build2, build3 and |
| cp_fully_fold instead of fold_convert, size_binop and |
| fold_build3 when building up 'size'. |
| |
| 2023-10-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111919 |
| * tree.cc (cp_stabilize_reference): Do nothing when |
| processing_template_decl. |
| |
| 2023-10-22 Patrick Palka <ppalka@redhat.com> |
| |
| PR objc++/111920 |
| * pt.cc (tsubst_expr) <case AT_ENCODE_EXPR>: Use tsubst instead |
| of tsubst_expr. |
| |
| 2023-10-20 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (implicit_conversion_1): Rename... |
| (implicit_conversion): ...to this. Remove the old wrapper. |
| |
| 2023-10-20 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (tourney): Only skip champ_compared_to_predecessor. |
| |
| 2023-10-20 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/105322 |
| * module.cc (trees_out::core_vals): Stream CONSTRUCTOR operands |
| after the type. |
| (trees_in::core_vals): Likewise. |
| |
| 2023-10-20 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-lang.cc (objcp_tsubst_copy_and_build): Rename to ... |
| (objcp_tsubst_expr): ... this. |
| * cp-objcp-common.h (objcp_tsubst_copy_and_build): Rename to ... |
| (objcp_tsubst_expr): ... this. |
| * cp-tree.h (tsubst_copy_and_build): Remove declaration. |
| * init.cc (maybe_instantiate_nsdmi_init): Use tsubst_expr |
| instead of tsubst_copy_and_build. |
| * pt.cc (expand_integer_pack): Likewise. |
| (instantiate_non_dependent_expr_internal): Likewise. |
| (instantiate_class_template): Use tsubst_stmt instead of |
| tsubst_expr for STATIC_ASSERT. |
| (tsubst_function_decl): Adjust tsubst_copy_and_build uses. |
| (tsubst_arg_types): Likewise. |
| (tsubst_exception_specification): Likewise. |
| (tsubst_tree_list): Likewise. |
| (tsubst): Likewise. |
| (tsubst_name): Likewise. |
| (tsubst_omp_clause_decl): Use tsubst_stmt instead of tsubst_expr. |
| (tsubst_omp_clauses): Likewise. |
| (tsubst_copy_asm_operands): Adjust tsubst_copy_and_build use. |
| (tsubst_omp_for_iterator): Use tsubst_stmt instead of tsubst_expr. |
| (tsubst_expr): Rename to ... |
| (tsubst_stmt): ... this. |
| <case CO_YIELD_EXPR, CO_AWAIT_EXPR>: Move to tsubst_expr. |
| (tsubst_omp_udr): Use tsubst_stmt instead of tsubst_expr. |
| (tsubst_non_call_postfix_expression): Adjust tsubst_copy_and_build |
| use. |
| (tsubst_lambda_expr): Likewise. Use tsubst_stmt instead of |
| tsubst_expr for the body of a lambda. |
| (tsubst_copy_and_build_call_args): Rename to ... |
| (tsubst_call_args): ... this. Adjust tsubst_copy_and_build use. |
| (tsubst_copy_and_build): Rename to tsubst_expr. Adjust |
| tsubst_copy_and_build and tsubst_copy_and_build_call_args use. |
| <case TRANSACTION_EXPR>: Use tsubst_stmt instead of tsubst_expr. |
| (maybe_instantiate_noexcept): Adjust tsubst_copy_and_build use. |
| (instantiate_body): Use tsubst_stmt instead of tsubst_expr for |
| substituting the function body. |
| (tsubst_initializer_list): Adjust tsubst_copy_and_build use. |
| |
| 2023-10-20 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup. |
| * pt.cc (tsubst_pack_expansion): Use tsubst for substituting |
| BASES_TYPE. |
| (tsubst_decl) <case USING_DECL>: Use tsubst_name instead of |
| tsubst_copy. |
| (tsubst) <case TEMPLATE_TYPE_PARM>: Use tsubst_copy_and_build |
| instead of tsubst_copy for substituting |
| CLASS_PLACEHOLDER_TEMPLATE. |
| <case TYPENAME_TYPE>: Use tsubst_name instead of tsubst_copy for |
| substituting TYPENAME_TYPE_FULLNAME. |
| (tsubst_name): Define. |
| (tsubst_qualified_id): Use tsubst_name instead of tsubst_copy |
| for substituting the component name of a SCOPE_REF. |
| (tsubst_copy): Remove. |
| (tsubst_copy_and_build): Clear tf_no_name_lookup at the start, |
| and remember if it was set. Call maybe_dependent_member_ref if |
| tf_no_name_lookup was not set. |
| <case IDENTIFIER_NODE>: Don't do name lookup if tf_no_name_lookup |
| was set. |
| <case TEMPLATE_ID_EXPR>: If tf_no_name_lookup was set, use |
| tsubst_name instead of tsubst_copy_and_build to substitute the |
| template and don't finish the template-id. |
| <case BIT_NOT_EXPR>: Handle identifier and type operand (if |
| tf_no_name_lookup was set). |
| <case SCOPE_REF>: Avoid trying to resolve a SCOPE_REF if |
| tf_no_name_lookup was set by calling build_qualified_name directly |
| instead of tsubst_qualified_id. |
| <case SIZEOF_EXPR>: Handling of sizeof... copied from tsubst_copy. |
| <case CALL_EXPR>: Use tsubst_name instead of tsubst_copy to |
| substitute a TEMPLATE_ID_EXPR callee naming an unresolved template. |
| <case COMPONENT_REF>: Likewise to substitute the member. |
| <case FUNCTION_DECL>: Copied from tsubst_copy and merged with ... |
| <case VAR_DECL, PARM_DECL>: ... these. Initial handling copied |
| from tsubst_copy. Optimize local variable substitution by |
| trying retrieve_local_specialization before checking |
| uses_template_parms. |
| <case CONST_DECL>: Copied from tsubst_copy. |
| <case FIELD_DECL>: Likewise. |
| <case NAMESPACE_DECL>: Likewise. |
| <case OVERLOAD>: Likewise. |
| <case TEMPLATE_DECL>: Likewise. |
| <case TEMPLATE_PARM_INDEX>: Likewise. |
| <case TYPE_DECL>: Likewise. |
| <case CLEANUP_POINT_EXPR>: Likewise. |
| <case OFFSET_REF>: Likewise. |
| <case EXPR_PACK_EXPANSION>: Likewise. |
| <case NONTYPE_ARGUMENT_PACK>: Likewise. |
| <case *_CST>: Likewise. |
| <case *_*_FOLD_EXPR>: Likewise. |
| <case DEBUG_BEGIN_STMT>: Likewise. |
| <case CO_AWAIT_EXPR>: Likewise. |
| <case TRAIT_EXPR>: Use tsubst and tsubst_copy_and_build instead |
| of tsubst_copy. |
| <default>: Copied from tsubst_copy. |
| (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build |
| instead of tsubst_copy. |
| |
| 2023-10-20 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/106086 |
| * parser.cc (cp_parser_postfix_expression): Consolidate three |
| calls to finish_call_expr, one to build_new_method_call and |
| one to build_min_nt_call_vec into one call to finish_call_expr. |
| Don't call maybe_generic_this_capture here. |
| * pt.cc (tsubst_copy_and_build) <case CALL_EXPR>: Remove |
| COMPONENT_REF callee handling. |
| (type_dependent_expression_p): Use t_d_object_e_p instead of |
| t_d_e_p for COMPONENT_REF and OFFSET_REF. |
| * semantics.cc (finish_call_expr): In the type-dependent case, |
| call maybe_generic_this_capture here instead. |
| |
| 2023-10-20 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (build_new_method_call): Remove calls to |
| build_non_dependent_expr and/or make_args_non_dependent. |
| * coroutines.cc (finish_co_return_stmt): Likewise. |
| * cp-tree.h (build_non_dependent_expr): Remove. |
| (make_args_non_dependent): Remove. |
| * decl2.cc (grok_array_decl): Remove calls to |
| build_non_dependent_expr and/or make_args_non_dependent. |
| (build_offset_ref_call_from_tree): Likewise. |
| * init.cc (build_new): Likewise. |
| * pt.cc (make_args_non_dependent): Remove. |
| (test_build_non_dependent_expr): Remove. |
| (cp_pt_cc_tests): Adjust. |
| * semantics.cc (finish_expr_stmt): Remove calls to |
| build_non_dependent_expr and/or make_args_non_dependent. |
| (finish_for_expr): Likewise. |
| (finish_call_expr): Likewise. |
| (finish_omp_atomic): Likewise. |
| * typeck.cc (finish_class_member_access_expr): Likewise. |
| (build_x_indirect_ref): Likewise. |
| (build_x_binary_op): Likewise. |
| (build_x_array_ref): Likewise. |
| (build_x_vec_perm_expr): Likewise. |
| (build_x_shufflevector): Likewise. |
| (build_x_unary_op): Likewise. |
| (cp_build_addressof): Likewise. |
| (build_x_conditional_expr): Likewise. |
| (build_x_compound_expr): Likewise. |
| (build_static_cast): Likewise. |
| (build_x_modify_expr): Likewise. |
| (check_return_expr): Likewise. |
| * typeck2.cc (build_x_arrow): Likewise. |
| |
| 2023-10-20 Patrick Palka <ppalka@redhat.com> |
| |
| * class.cc (instantiate_type): Remove NON_DEPENDENT_EXPR |
| handling. |
| * constexpr.cc (cxx_eval_constant_expression): Likewise. |
| (potential_constant_expression_1): Likewise. |
| * coroutines.cc (coro_validate_builtin_call): Don't |
| expect ALIGNOF_EXPR to be wrapped in NON_DEPENDENT_EXPR. |
| * cp-objcp-common.cc (cp_common_init_ts): Remove |
| NON_DEPENDENT_EXPR handling. |
| * cp-tree.def (NON_DEPENDENT_EXPR): Remove. |
| * cp-tree.h (build_non_dependent_expr): Temporarily redefine as |
| the identity function. |
| * cvt.cc (maybe_warn_nodiscard): Handle type-dependent and |
| variable callee of CALL_EXPR. |
| * cxx-pretty-print.cc (cxx_pretty_printer::expression): Remove |
| NON_DEPENDENT_EXPR handling. |
| * error.cc (dump_decl): Likewise. |
| (dump_expr): Likewise. |
| * expr.cc (mark_use): Likewise. |
| (mark_exp_read): Likewise. |
| * pt.cc (build_non_dependent_expr): Remove. |
| * tree.cc (lvalue_kind): Remove NON_DEPENDENT_EXPR handling. |
| (cp_stabilize_reference): Likewise. |
| * typeck.cc (warn_for_null_address): Likewise. |
| (cp_build_binary_op): Handle type-dependent SIZEOF_EXPR operands. |
| (cp_build_unary_op) <case TRUTH_NOT_EXPR>: Don't fold inside a |
| template. |
| |
| 2023-10-20 Alexandre Oliva <oliva@adacore.com> |
| |
| * decl.cc (push_throw_library_fn): Mark with ECF_XTHROW. |
| * except.cc (build_throw): Likewise __cxa_throw, |
| _ITM_cxa_throw, __cxa_rethrow. |
| |
| 2023-10-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/101631 |
| PR c++/102286 |
| * call.cc (build_over_call): Fold more indirect refs for trivial |
| assignment op. |
| * class.cc (type_has_non_deleted_trivial_default_ctor): Create. |
| * constexpr.cc (cxx_eval_call_expression): Start lifetime of |
| union member before entering constructor. |
| (cxx_eval_component_reference): Check against first member of |
| value-initialised union. |
| (cxx_eval_store_expression): Activate member for |
| value-initialised union. Check for accessing inactive union |
| member indirectly. |
| * cp-tree.h (type_has_non_deleted_trivial_default_ctor): |
| Forward declare. |
| |
| 2023-10-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constexpr.cc (is_std_source_location_current): New. |
| (cxx_eval_constant_expression): Only ignore cast from void* for |
| specific cases and improve other diagnostics. |
| |
| 2023-10-19 Marek Polacek <polacek@redhat.com> |
| |
| * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value. |
| |
| 2023-10-19 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.cc (check_narrowing): Adjust. |
| |
| 2023-10-19 Jason Merrill <jason@redhat.com> |
| |
| * parser.cc (cp_parser_primary_expression): Use G_. |
| (cp_parser_using_enum): Likewise. |
| * decl.cc (identify_goto): Likewise. |
| |
| 2023-10-18 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.cc (check_narrowing): Use permerror. |
| |
| 2023-10-17 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/111840 |
| * parser.cc (cp_parser_simple_declaration): Do cp_parser_error |
| for FUNCTION_DECLs. |
| |
| 2023-10-17 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/111660 |
| * cp-gimplify.cc (cp_fold_immediate_r) <case COND_EXPR>: Don't |
| handle it here. |
| (cp_fold_r): Handle COND_EXPR here. |
| |
| 2023-10-17 Jason Merrill <jason@redhat.com> |
| |
| * mangle.cc (abi_check): New. |
| (write_prefix, write_unqualified_name, write_discriminator) |
| (write_type, write_member_name, write_expression) |
| (write_template_arg, write_template_param): Use it. |
| (start_mangling): Assign from {}. |
| * cp-tree.h: Update comment. |
| |
| 2023-10-17 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constexpr.cc (cxx_eval_dynamic_cast_fn): Add missing |
| auto_diagnostic_group. |
| (cxx_eval_call_expression): Likewise. |
| (diag_array_subscript): Likewise. |
| (outside_lifetime_error): Likewise. |
| (potential_constant_expression_1): Likewise. |
| |
| 2023-10-16 Jason Merrill <jason@redhat.com> |
| |
| * parser.cc (cp_parser_fold_expression): Track location range. |
| * semantics.cc (finish_unary_fold_expr) |
| (finish_left_unary_fold_expr, finish_right_unary_fold_expr) |
| (finish_binary_fold_expr): Add location parm. |
| * constraint.cc (finish_shorthand_constraint): Pass it. |
| * pt.cc (convert_generic_types_to_packs): Likewise. |
| * cp-tree.h: Adjust. |
| |
| 2023-10-16 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/111272 |
| * constexpr.cc (explain_invalid_constexpr_fn): Also check the body of |
| a constructor in C++14 and up. |
| |
| 2023-10-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/102989 |
| * module.cc (trees_out::start, trees_in::start): Remove |
| TREE_INT_CST_OFFSET_NUNITS handling. |
| |
| 2023-10-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109422 |
| * mangle.cc (write_template_param): Also mangle level. |
| |
| 2023-10-08 David Malcolm <dmalcolm@redhat.com> |
| |
| * module.cc (module_state::read_location): Update for renaming of |
| get_combined_adhoc_loc. |
| |
| 2023-10-03 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.cc (print_instantiation_partial_context_line): Call |
| diagnostic_show_locus. |
| |
| 2023-10-03 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.cc: Update for "m_" prefixes to text_info fields. |
| |
| 2023-09-30 Eugene Rozenfeld <erozen@microsoft.com> |
| |
| * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY |
| |
| 2023-09-28 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables. |
| |
| 2023-09-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/111357 |
| * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR. |
| |
| 2023-09-22 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (free_constructor): Handle null ce->value. |
| |
| 2023-09-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/111529 |
| * parser.cc (cp_parser_lambda_declarator_opt): Don't suggest |
| -std=c++14 for lambda templates. |
| * pt.cc (tsubst_expr): Move ANNOTATE_EXPR handling... |
| (tsubst_copy_and_build): ...here. |
| |
| 2023-09-22 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111493 |
| * decl2.cc (grok_array_decl): Guard diagnostic and backward |
| compatibility fallback code paths with tf_error. |
| |
| 2023-09-22 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111485 |
| * pt.cc (is_compatible_template_arg): New parameter 'args'. |
| Add the outer template arguments 'args' to 'new_args'. |
| (convert_template_argument): Pass 'args' to |
| is_compatible_template_arg. |
| |
| 2023-09-20 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_postfix_expression): Parse |
| __builtin_classify_type call with typename as argument. |
| * pt.cc (tsubst_copy_and_build): Handle __builtin_classify_type |
| with dependent typename as argument. |
| |
| 2023-09-20 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111471 |
| * cxx-pretty-print.cc (cxx_pretty_printer::expression) |
| <case VAR_DECL>: Handle class NTTP objects by printing |
| their type and value. |
| <case VIEW_CONVERT_EXPR>: Strip const VIEW_CONVERT_EXPR |
| wrappers for class NTTPs. |
| (pp_cxx_template_argument_list): Don't handle class NTTP |
| objects here. |
| |
| 2023-09-20 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (tsubst_function_decl): Don't bother computing 'argvec' |
| when 'lambda_fntype' is set. |
| (tsubst_template_decl): Make sure we return a TEMPLATE_DECL |
| during specialization lookup. In the non-class non-function |
| template case, use tsubst_decl directly with use_spec_table=false, |
| update DECL_TI_ARGS and call register_specialization like |
| tsubst_decl would have done if use_spec_table=true. |
| |
| 2023-09-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/111392 |
| * parser.h (struct cp_lexer): Add in_omp_decl_attribute member. |
| * cp-tree.h (cp_maybe_parse_omp_decl): Declare. |
| * parser.cc (cp_parser_handle_statement_omp_attributes): Diagnose |
| omp::decl attribute on statements. Adjust diagnostic wording for |
| omp::decl. |
| (cp_parser_omp_directive_args): Add DECL_P argument, set TREE_PUBLIC |
| to it on the DEFERRED_PARSE tree. |
| (cp_parser_omp_sequence_args): Adjust caller. |
| (cp_parser_std_attribute): Handle omp::decl attribute. |
| (cp_parser_omp_var_list): If parser->lexer->in_omp_decl_attribute |
| don't expect any arguments, instead create clause or TREE_LIST for |
| that decl. |
| (cp_parser_late_parsing_omp_declare_simd): Adjust diagnostic wording |
| for omp::decl. |
| (cp_maybe_parse_omp_decl): New function. |
| (cp_parser_omp_declare_target): If |
| parser->lexer->in_omp_decl_attribute and first token isn't name or |
| comma invoke cp_parser_omp_var_list. |
| * decl2.cc (cplus_decl_attributes): Adjust diagnostic wording for |
| omp::decl. Handle omp::decl on declarations. |
| * name-lookup.cc (finish_using_directive): Adjust diagnostic wording |
| for omp::decl. |
| |
| 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com> |
| |
| * mapper-client.cc, mapper-client.h (open_module_client): Accept |
| dependency tracking and track module mapper files as |
| dependencies. |
| * module.cc (make_mapper, get_mapper): Pass the dependency |
| tracking class down. |
| |
| 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com> |
| |
| * module.cc (do_import): Report imported CMI files as |
| dependencies. |
| |
| 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com> |
| |
| * module.cc (preprocessed_module): Pass whether the module is |
| exported to dependency tracking. |
| |
| 2023-09-19 Javier Martinez <javier.martinez.bugzilla@gmail.com> |
| |
| * class.cc (propagate_class_warmth_attribute): New function. |
| (check_bases_and_members): propagate hot and cold attributes |
| to all FUNCTION_DECL when the record is marked hot or cold. |
| * cp-tree.h (maybe_propagate_warmth_attributes): New function. |
| * decl2.cc (maybe_propagate_warmth_attributes): New function. |
| * method.cc (lazily_declare_fn): propagate hot and cold |
| attributes to lazily declared functions when the record is |
| marked hot or cold. |
| |
| 2023-09-19 Patrick Palka <ppalka@redhat.com> |
| |
| * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC |
| test guarding TYPE_TEMPLATE_INFO. |
| |
| 2023-09-19 Jason Merrill <jason@redhat.com> |
| |
| DR 2799 |
| * class.cc (add_implicit_default_ctor): Split out... |
| (add_implicitly_declared_members): ...from here. |
| Also call it when inheriting a default ctor. |
| |
| 2023-09-19 Marek Polacek <polacek@redhat.com> |
| |
| * call.cc (build_over_call): Set ADDR_EXPR_DENOTES_CALL_P. Don't handle |
| immediate_invocation_p here. |
| * constexpr.cc (cxx_eval_call_expression): Use mce_true for |
| DECL_IMMEDIATE_FUNCTION_P. |
| (cxx_eval_conditional_expression): Call cp_fold_immediate. |
| * cp-gimplify.cc (enum fold_flags): Add ff_fold_immediate. |
| (maybe_replace_decl): Make static. |
| (cp_fold_r): Expand immediate invocations. |
| (cp_fold_immediate_r): New. |
| (cp_fold_immediate): New. |
| * cp-tree.h (ADDR_EXPR_DENOTES_CALL_P): Define. |
| (cp_fold_immediate): Declare. |
| * tree.cc (bot_replace): Don't handle immediate invocations here. |
| |
| 2023-09-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/111419 |
| * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call |
| complete_type if the type is volatile. |
| <case VAR_DECL>: Likewise. |
| |
| 2023-09-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99631 |
| * semantics.cc (finish_decltype_type): For an NTTP object, |
| return its type modulo cv-quals. |
| |
| 2023-09-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/89231 |
| * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality |
| test by not calling most_general_template. Only unify the |
| innermost levels of template arguments. |
| (unify) <case CLASS_TYPE>: Only unify the innermost levels of |
| template arguments, and only if the template is primary. |
| |
| 2023-09-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/63198 |
| PR c++/18474 |
| * semantics.cc (maybe_convert_cond): Look through implicit |
| INDIRECT_REF when deciding whether to issue a -Wparentheses |
| warning, and consider templated assignment expressions as well. |
| (finish_parenthesized_expr): Look through implicit INDIRECT_REF |
| when suppressing -Wparentheses warning. |
| * typeck.cc (build_x_modify_expr): Check simple assignments |
| ahead time too, not just compound assignments. Give the second |
| operand of MODOP_EXPR a non-null type so that it's not considered |
| always instantiation-dependent. Don't call suppress_warning. |
| |
| 2023-09-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108347 |
| * pt.cc (unify): Return unify_success for identical dependent |
| DECL_P 'arg' and 'parm'. |
| <case CONST_DECL>: Remove handling. |
| |
| 2023-09-18 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (add_template_candidate_real): Check arity even |
| when there are no explicit template arguments. Combine the |
| two adjacent '!obj' tests into one. |
| |
| 2023-09-18 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (register_specialization): Remove now-unnecessary |
| early exit for FUNCTION_DECL partial instantiation. |
| (tsubst_template_decl): Pass use_spec_table=false to |
| tsubst_function_decl. Set DECL_TI_ARGS of a non-lambda |
| FUNCTION_DECL specialization to the full set of arguments. |
| Simplify register_specialization call accordingly. |
| |
| 2023-09-18 Jason Merrill <jason@redhat.com> |
| |
| * class.cc (check_subobject_offset): Use similar_type_p. |
| |
| 2023-09-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/111357 |
| * pt.cc (expand_integer_pack): Convert argument to int. |
| |
| 2023-09-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107198 |
| * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR |
| regardless of seen_error. |
| |
| 2023-09-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99599 |
| * pt.cc (check_non_deducible_conversions): Add bool parameter |
| passed down to check_non_deducible_conversion. |
| (fn_type_unification): Call check_non_deducible_conversions |
| an extra time before satisfaction with noninst_only_p=true. |
| (conversion_may_instantiate_p): Define. |
| (check_non_deducible_conversion): Add bool parameter controlling |
| whether to compute only conversions that are guaranteed to |
| not induce template instantiation. |
| |
| 2023-09-07 Sandra Loosemore <sandra@codesourcery.com> |
| |
| PR c++/111274 |
| * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK. |
| |
| 2023-09-06 Jason Merrill <jason@redhat.com> |
| |
| * class.cc (check_subobject_offset): Check |
| same_type_ignoring_top_level_qualifiers_p. |
| |
| 2023-09-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/91483 |
| * constexpr.cc (verify_constant_explain_r): New. |
| (verify_constant): Call it. |
| |
| 2023-09-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/52953 |
| * name-lookup.cc (check_local_shadow): Don't punt early for |
| DECL_EXTERNAL decls, instead just disable the shadowing of namespace |
| decls check for those and emit a pedwarn rather than error_at or |
| permerror for those. Formatting fix. |
| |
| 2023-09-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/52953 |
| * name-lookup.h (struct cp_binding_level): Add artificial bit-field. |
| Formatting fixes. |
| * name-lookup.cc (check_local_shadow): Skip artificial bindings when |
| checking if parameter scope is parent scope. Don't special case |
| FUNCTION_NEEDS_BODY_BLOCK. Diagnose the in_function_try_handler |
| cases in the b->kind == sk_function_parms test and verify no |
| non-artificial intervening scopes. Add missing auto_diagnostic_group. |
| * decl.cc (begin_function_body): Set |
| current_binding_level->artificial. |
| * semantics.cc (begin_function_try_block): Likewise. |
| |
| 2023-09-05 Patrick Palka <ppalka@redhat.com> |
| |
| * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass |
| nullptr as non_constant_p to cp_parser_braced_list if our |
| non_constant_p is null. |
| (cp_parser_initializer_list): Likewise to |
| cp_parser_initializer_clause. Avoid inspecting |
| clause_non_constant_p if it's uninitialized. |
| |
| 2023-09-05 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (build_user_type_conversion): Free allocated |
| conversions. |
| (build_converted_constant_expr_internal): Use |
| conversion_obstack_sentinel instead. |
| (perform_dguide_overload_resolution): Likewise. |
| (build_new_function_call): Likewise. |
| (build_operator_new_call): Free allocated conversions. |
| (build_op_call): Use conversion_obstack_sentinel instead. |
| (build_conditional_expr): Use conversion_obstack_sentinel |
| instead, and hoist it out to the outermost scope. |
| (build_new_op): Use conversion_obstack_sentinel instead |
| and set it up before the first goto. Remove second unneeded goto. |
| (build_op_subscript): Use conversion_obstack_sentinel instead. |
| (ref_conv_binds_to_temporary): Likewise. |
| (build_new_method_call): Likewise. |
| (can_convert_arg): Likewise. |
| (can_convert_arg_bad): Likewise. |
| (perform_implicit_conversion_flags): Likewise. |
| (perform_direct_initialization_if_possible): Likewise. |
| (initialize_reference): Likewise. |
| |
| 2023-09-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/111069 |
| * cp-tree.h (determine_local_discriminator): Add NAME argument with |
| NULL_TREE default. |
| (struct cp_decomp): New type. |
| (cp_finish_decl): Add DECOMP argument defaulted to nullptr. |
| (cp_maybe_mangle_decomp): Remove declaration. |
| (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned |
| args. |
| (cp_convert_range_for): Likewise. |
| * decl.cc (determine_local_discriminator): Add NAME argument, use it |
| if non-NULL, otherwise compute it the old way. |
| (maybe_commonize_var): Don't return early for structured bindings. |
| (cp_finish_decl): Add DECOMP argument, if non-NULL, call |
| cp_maybe_mangle_decomp. |
| (cp_maybe_mangle_decomp): Make it static with a forward declaration. |
| Call determine_local_discriminator. Replace FIRST and COUNT arguments |
| with DECOMP argument. |
| (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP |
| argument. |
| * mangle.cc (find_decomp_unqualified_name): Remove. |
| (write_unqualified_name): Don't call find_decomp_unqualified_name. |
| (mangle_decomp): Handle mangling of static function/block scope |
| structured bindings. Don't call decl_mangling_context twice. Call |
| check_abi_tags, call write_abi_tags for abi version >= 19 and emit |
| -Wabi warnings if needed. |
| (write_guarded_var_name): Handle structured bindings. |
| (mangle_ref_init_variable): Use write_guarded_var_name. |
| * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction |
| and cp_convert_range_for callers. |
| (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and |
| DECOMP_CNT arguments with DECOMP. Adjust cp_finish_decomp caller. |
| (cp_convert_range_for): Replace DECOMP_FIRST_NAME and |
| DECOMP_CNT arguments with DECOMP. Don't call cp_maybe_mangle_decomp, |
| adjust cp_finish_decl and cp_finish_decomp callers. |
| (cp_parser_decomposition_declaration): Don't call |
| cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp |
| callers. |
| (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction |
| and cp_finish_decomp callers. |
| (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp, |
| adjust cp_finish_decl and cp_finish_decomp callers. |
| * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names |
| caller. |
| (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP. |
| (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust |
| tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and |
| cp_convert_range_for callers. |
| |
| 2023-08-30 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/91319 |
| * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT |
| when the designated initializer is of the .x{} form. |
| |
| 2023-08-30 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/111173 |
| * decl.cc (grokdeclarator): Disallow constinit on functions. |
| |
| 2023-08-29 Marek Polacek <polacek@redhat.com> |
| |
| * call.cc (convert_like_internal): Show where the conversion function |
| was declared. |
| (maybe_show_nonconverting_candidate): New. |
| * cp-tree.h (maybe_show_nonconverting_candidate): Declare. |
| * typeck.cc (convert_for_assignment): Call it. |
| |
| 2023-08-25 Sandra Loosemore <sandra@codesourcery.com> |
| |
| * cp-tree.h (cp_convert_omp_range_for): Adjust declaration. |
| * parser.cc (struct omp_for_parse_data): New. |
| (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime |
| in intervening code. |
| (check_omp_intervening_code): New. |
| (cp_parser_statement_seq_opt): Special-case nested loops, blocks, |
| and other constructs for OpenMP loops. |
| (cp_parser_iteration_statement): Reject loops in intervening code. |
| (cp_parser_omp_for_loop_init): Expand comments and tweak the |
| interface slightly to better distinguish input/output parameters. |
| (cp_convert_omp_range_for): Likewise. |
| (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop |
| and largely rewritten. Add more comments. |
| (insert_structured_blocks): New. |
| (find_structured_blocks): New. |
| (struct sit_data, substitute_in_tree_walker, substitute_in_tree): |
| New. |
| (fixup_blocks_walker): New. |
| (cp_parser_omp_for_loop): Rewrite to use recursive descent instead |
| of a loop. Add logic to reshuffle the bits of code collected |
| during parsing so intervening code gets moved to the loop body. |
| (cp_parser_omp_loop): Remove call to finish_omp_for_block, which |
| is now redundant. |
| (cp_parser_omp_simd): Likewise. |
| (cp_parser_omp_for): Likewise. |
| (cp_parser_omp_distribute): Likewise. |
| (cp_parser_oacc_loop): Likewise. |
| (cp_parser_omp_taskloop): Likewise. |
| (cp_parser_pragma): Reject OpenMP pragmas in intervening code. |
| * parser.h (struct cp_parser): Add omp_for_parse_state field. |
| * pt.cc (tsubst_omp_for_iterator): Adjust call to |
| cp_convert_omp_range_for. |
| * semantics.cc (finish_omp_for): Try harder to preserve location |
| of loop variable init expression for use in diagnostics. |
| (struct fofb_data, finish_omp_for_block_walker): New. |
| (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR |
| nested inside BIND instead of directly in BIND itself. |
| |
| 2023-08-25 Sandra Loosemore <sandra@codesourcery.com> |
| |
| * constexpr.cc (cxx_eval_constant_expression): Handle |
| OMP_STRUCTURED_BLOCK. |
| * pt.cc (tsubst_expr): Likewise. |
| |
| 2023-08-25 Uros Bizjak <ubizjak@gmail.com> |
| |
| * call.cc (build_conditional_expr): |
| Rename TRUE/FALSE to true/false. |
| (build_new_op): Ditto. |
| |
| 2023-08-22 Jason Merrill <jason@redhat.com> |
| |
| * pt.cc (outer_template_args): Handle non-template argument. |
| * constraint.cc (maybe_substitute_reqs_for): Pass decl to it. |
| * cp-tree.h (outer_template_args): Adjust. |
| |
| 2023-08-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/109751 |
| * cp-tree.h (member_like_constrained_friend_p): Declare. |
| * decl.cc (member_like_constrained_friend_p): New. |
| (function_requirements_equivalent_p): Check it. |
| (duplicate_decls): Check it. |
| (grokfndecl): Check friend template constraints. |
| * mangle.cc (decl_mangling_context): Check it. |
| (write_unqualified_name): Check it. |
| * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends. |
| (tsubst_friend_function): Don't check satisfaction. |
| |
| 2023-08-22 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.cc (cp_parser_omp_clause_defaultmap): Parse |
| 'all' as category. |
| |
| 2023-08-15 Chung-Lin Tang <cltang@codesourcery.com> |
| Thomas Schwinge <thomas@codesourcery.com> |
| |
| * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT. |
| |
| 2023-08-14 gnaggnoyil <gnaggnoyil@gmail.com> |
| |
| DR 2386 |
| PR c++/110216 |
| * decl.cc (get_tuple_size): Update implementation for DR 2386. |
| |
| 2023-08-14 Jason Merrill <jason@redhat.com> |
| |
| * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14 |
| -fconcepts. |
| |
| 2023-08-12 Patrick Palka <ppalka@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/106604 |
| * decl.cc (redeclaration_error_message): Remove special handling |
| for deduction guides. |
| (grokfndecl): Give deduction guides a dummy DECL_INITIAL. |
| |
| 2023-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110927 |
| * parser.cc (cp_parser_type_requirement): Pass |
| check_dependency_p=true instead of =false. |
| |
| 2023-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/71954 |
| * decl.cc (grokdeclarator): Pass 'dname' instead of |
| 'unqualified_id' as the name when building the VAR_DECL for a |
| static data member. Call check_explicit_specialization for a |
| TEMPLATE_ID_EXPR such member. |
| * pt.cc (finish_member_template_decl): Return NULL_TREE |
| instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not |
| set. |
| |
| 2023-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and |
| TS_DECL_COMMON only when necessary. Print DECL_TEMPLATE_INFO |
| for all decls that have it, not just VAR_DECL or FUNCTION_DECL. |
| Also print DECL_USE_TEMPLATE. |
| (cxx_print_type): Print TYPE_TEMPLATE_INFO. |
| <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS |
| anymore. |
| <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX |
| instead of printing the index, level and original level |
| individually. |
| |
| 2023-08-08 Marek Polacek <polacek@redhat.com> |
| |
| * parser.cc (cp_parser_postfix_expression): Adjust the call to |
| cp_parser_braced_list. |
| (cp_parser_postfix_open_square_expression): Likewise. |
| (cp_parser_new_initializer): Likewise. |
| (cp_parser_assignment_expression): Adjust the call to |
| cp_parser_initializer_clause. |
| (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer. |
| (cp_parser_range_for): Adjust the call to cp_parser_braced_list. |
| (cp_parser_jump_statement): Likewise. |
| (cp_parser_mem_initializer): Likewise. |
| (cp_parser_template_argument): Likewise. |
| (cp_parser_default_argument): Adjust the call to cp_parser_initializer. |
| (cp_parser_initializer): Handle null is_direct_init and non_constant_p |
| arguments. |
| (cp_parser_initializer_clause): Handle null non_constant_p argument. |
| (cp_parser_braced_list): Likewise. |
| (cp_parser_initializer_list): Likewise. |
| (cp_parser_member_declaration): Adjust the call to |
| cp_parser_initializer_clause and cp_parser_initializer. |
| (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list. |
| (cp_parser_functional_cast): Likewise. |
| (cp_parser_late_parse_one_default_arg): Adjust the call to |
| cp_parser_initializer. |
| (cp_parser_omp_for_loop_init): Likewise. |
| (cp_parser_omp_declare_reduction_exprs): Likewise. |
| |
| 2023-08-08 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/100482 |
| * parser.cc (cp_parser_decltype_expr): Report errors raised by |
| finish_id_expression. |
| |
| 2023-08-04 Tamar Christina <tamar.christina@arm.com> |
| |
| * cp-tree.h (RANGE_FOR_NOVECTOR): New. |
| (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt, |
| finish_for_cond): Add novector param. |
| * init.cc (build_vec_init): Default novector to false. |
| * method.cc (build_comparison_op): Likewise. |
| * parser.cc (cp_parser_statement): Likewise. |
| (cp_parser_for, cp_parser_c_for, cp_parser_range_for, |
| cp_convert_range_for, cp_parser_iteration_statement, |
| cp_parser_omp_for_loop, cp_parser_pragma): Support novector. |
| (cp_parser_pragma_novector): New. |
| * pt.cc (tsubst_expr): Likewise. |
| * semantics.cc (finish_while_stmt_cond, finish_do_stmt, |
| finish_for_cond): Likewise. |
| |
| 2023-08-01 Lewis Hyatt <lhyatt@gmail.com> |
| |
| * parser.cc (c_init_preprocess): New function. |
| (maybe_read_tokens_for_pragma_lex): New function. |
| (pragma_lex): Support preprocess-only mode. |
| (pragma_lex_discard_to_eol): New function. |
| |
| 2023-07-31 Chung-Lin Tang <cltang@codesourcery.com> |
| |
| * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC |
| host_data construct to have an use_device clause. |
| |
| 2023-07-28 Ng YongXiang <yongxiangng@gmail.com> |
| |
| PR c++/110057 |
| PR ipa/83054 |
| * init.cc (build_vec_delete_1): Devirtualize array destruction. |
| |
| 2023-07-27 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110197 |
| * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an |
| empty subobject even if CONSTRUCTOR_NO_CLEARING is set. |
| (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally |
| whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx, |
| i.e. whenever initializing an subobject of empty type. |
| (cxx_eval_vec_init_1): Define 'no_slot' as above and use it |
| accordingly. |
| |
| 2023-07-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/103497 |
| * pt.cc (type_uses_auto): Check inside parameter packs. |
| |
| 2023-07-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110566 |
| PR c++/108179 |
| * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO |
| on the DECL_TEMPLATE_RESULT of the new ttp. |
| (add_defaults_to_ttp): Make a copy of the original ttp's |
| DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO |
| as well. |
| (coerce_template_template_parms): Make sure 'scope_args' has |
| the right amount of levels for the ttp argument. |
| (most_general_template): Handle template template parameters. |
| (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the |
| DECL_TEMPLATE_RESULT of the new ttp. |
| |
| 2023-07-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110566 |
| PR c++/108179 |
| * pt.cc (coerce_template_template_parms): Simplify by using |
| DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts. |
| Always pass the parameters of the most general template to |
| coerce_template_parms. |
| |
| 2023-07-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110809 |
| * pt.cc (unify) <case INTEGER_CST>: Generalize to handle |
| REAL_CST as well. |
| |
| 2023-07-26 Marek Polacek <polacek@redhat.com> |
| |
| * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be |
| nullptr even when allow_non_constant_p is true. Don't call |
| _rvalue_constant_expression when not necessary. Move local variable |
| declarations closer to their first use. |
| (cp_parser_static_assert): Don't pass a dummy down to |
| cp_parser_constant_expression. |
| |
| 2023-07-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/106310 |
| * parser.cc (cp_parser_template_name): Skip non-member |
| lookup after the template keyword. |
| (cp_parser_lookup_name): Pass down template_keyword_p. |
| |
| 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/96630 |
| PR c++/98675 |
| PR c++/70331 |
| * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New |
| function. |
| (constexpr_global_ctx::get_value): Don't return expired values. |
| (constexpr_global_ctx::get_value_ptr): Likewise. |
| (constexpr_global_ctx::remove_value): Mark value outside |
| lifetime. |
| (outside_lifetime_error): New function. |
| (cxx_eval_call_expression): No longer track save_exprs. |
| (cxx_eval_loop_expr): Likewise. |
| (cxx_eval_constant_expression): Add checks for outside lifetime |
| values. Remove local variables at end of bind exprs, and |
| temporaries after cleanup points. |
| |
| 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/110619 |
| * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to |
| not return dangling pointers. |
| * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag. |
| (check_return_expr): Add a new parameter. |
| * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR |
| when referring to dangling pointer. |
| * typeck.cc (check_return_expr): Disable transformation of |
| dangling pointers, instead pass this information to caller. |
| |
| 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constexpr.cc (modifying_const_object_error): Find the source |
| location of the const object's declaration. |
| (cxx_eval_constant_expression): Update input_location to the |
| location of the currently evaluated expression, if possible. |
| |
| 2023-07-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/108960 |
| * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial |
| here. |
| (instantiate_template): Reset all complain flags except |
| tf_warning_or_error. |
| |
| 2023-07-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/110382 |
| * constexpr.cc (cxx_eval_array_reference): Create a new constructor |
| only when we don't already have a matching one. Clear the object |
| when the type is non-scalar. |
| |
| 2023-07-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/110106 |
| * constexpr.cc (potential_constant_expression_1): Try to complete the |
| type when !processing_template_decl. |
| |
| 2023-07-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/110114 |
| * call.cc (implicit_conversion_1): Return early if the type isn't |
| complete. |
| |
| 2023-07-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/110745 |
| * error.cc (dump_simple_decl): Print base class name. |
| |
| 2023-07-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/110064 |
| * typeck2.cc (process_init_constructor_record): Don't emit |
| -Wmissing-field-initializers for empty classes. |
| |
| 2023-07-19 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (type_unification_real): Test for PARM_DECL instead |
| of TEMPLATE_PARM_INDEX to distinguish a type vs non-type |
| template parameter pack. |
| (type_targs_deducible_from): Likewise. |
| |
| 2023-07-19 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table' |
| flag parameter. Don't look up or insert into the specializations |
| table if 'use_spec_table' is false. |
| (tsubst_decl): Add defaulted 'use_spec_table' flag parameter. |
| Check for error_mark_node. |
| <case FUNCTION_DECL>: Pass 'use_spec_table' to |
| tsubst_function_decl. |
| <case TYPE/VAR_DECL>: Don't call coerce_template_parms. |
| Don't look up or insert into the specializations table if |
| 'use_spec_table' is false. Exit earlier if the substituted |
| type is erroneous and we're not complaining, and do so for |
| alias specializations as well. |
| (instantiate_template): Pass false as 'use_spec_table' |
| to tsubst_decl. Call register_specialization afterwards. |
| |
| 2023-07-18 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_bit_cast): Check that the result of |
| native_interpret_aggregate doesn't need more evaluation. |
| |
| 2023-07-18 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (add_template_conv_candidate): Don't check for |
| non-empty 'candidates' here. |
| (build_op_call): Check it here, before we've considered any |
| conversion functions. |
| |
| 2023-07-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110535 |
| * call.cc (add_conv_candidate): Check constraints. |
| |
| 2023-07-17 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_call_expression): Only cache |
| reduced_constant_expression_p results. |
| (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type. |
| (cxx_eval_constant_expression): Fold vectors here. |
| (cxx_eval_bare_aggregate): Not here. |
| |
| 2023-07-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110441 |
| * call.cc (keep_unused_object_arg): Use cp_build_compound_expr |
| instead of building a COMPOUND_EXPR directly. |
| |
| 2023-07-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110524 |
| * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR |
| whose template is already an IDENTIFIER_NODE. |
| |
| 2023-07-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value. |
| |
| 2023-07-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/110344 |
| * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling |
| after heap handling. |
| * name-lookup.cc (get_cxx_dialect_name): Add C++26. |
| |
| 2023-07-14 Marek Polacek <polacek@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/109876 |
| * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing |
| an object of empty class type. |
| * pt.cc (value_dependent_expression_p) <case VAR_DECL>: Treat a |
| constexpr-declared non-constant variable as value-dependent. |
| |
| 2023-07-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110580 |
| * pt.cc (lookup_template_variable): Pass all levels of arguments |
| to coerce_template_parms, and use the parameters from the most |
| general template. |
| |
| 2023-07-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110523 |
| * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT |
| assert, and downgrade it to a checking assert. |
| |
| 2023-06-30 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden. |
| (TEMPLATE_TYPE_DESCENDANTS): Define. |
| (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define. |
| * pt.cc (reduce_template_parm_level): Revert |
| r14-418-g0bc2a1dc327af9 change. |
| (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P |
| appropriately. |
| (uses_outer_template_parms): Determine the outer depth of |
| a template template parm without relying on DECL_CONTEXT. |
| (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a |
| simple template template parm. Consistently use 'code'. |
| |
| 2023-06-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110468 |
| * init.cc (maybe_instantiate_nsdmi_init): Mask out all |
| tsubst flags except for tf_warning_or_error. |
| |
| 2023-06-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/110463 |
| * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate |
| CONSTRUCTOR_MUTABLE_POISON. |
| |
| 2023-06-29 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (tree_template_info::partial): New data member. |
| (TI_PARTIAL_INFO): New tree accessor. |
| (most_specialized_partial_spec): Add defaulted bool parameter. |
| * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream |
| TI_PARTIAL_INFO. |
| (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise. |
| * parser.cc (specialization_of): Adjust after making |
| most_specialized_partial_spec return TEMPLATE_INFO instead |
| of TREE_LIST. |
| * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO |
| of 'decl' to point back to the partial TEMPLATE_DECL. Likewise |
| (and pass rechecking=true to most_specialization_partial_spec). |
| (instantiate_class_template): Likewise. |
| (instantiate_template): Set TI_PARTIAL_INFO to the result of |
| most_specialization_partial_spec after forming a variable |
| template specialization. |
| (most_specialized_partial_spec): Add 'rechecking' parameter. |
| Exit early if the template is not primary. Use the TI_PARTIAL_INFO |
| of the corresponding TEMPLATE_INFO as a cache unless 'rechecking' |
| is true. Don't bother setting TREE_TYPE of each TREE_LIST. |
| (instantiate_decl): Adjust after making |
| most_specialized_partial_spec return TEMPLATE_INFO instead of |
| TREE_LIST. |
| * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump |
| TI_PARTIAL_INFO. |
| |
| 2023-06-29 Eugene Rozenfeld <erozen@microsoft.com> |
| |
| * Make-lang.in: Pass correct stage cc1plus when processing |
| profile data collected while building target libraries |
| |
| 2023-06-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/89442 |
| PR c++/107437 |
| * cp-tree.h (lookup_template_variable): Add complain parameter. |
| * parser.cc (cp_parser_template_id): Pass tf_warning_or_error |
| to lookup_template_variable. |
| * pt.cc (lookup_template_variable): Add complain parameter. |
| Coerce template arguments here ... |
| (finish_template_variable): ... instead of here. |
| (lookup_and_finish_template_variable): Check for error_mark_node |
| result from lookup_template_variable. |
| (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to |
| lookup_template_variable. |
| (instantiate_template): Use build2 instead of |
| lookup_template_variable to build a TEMPLATE_ID_EXPR |
| for most_specialized_partial_spec. |
| |
| 2023-06-28 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/110175 |
| * typeck.cc (cp_build_unary_op): Check tf_warning before warning. |
| |
| 2023-06-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/110334 |
| * cp-tree.h (clone_attrs): Declare. |
| * method.cc (implicitly_declare_fn): Use it for inherited |
| constructor. |
| * optimize.cc (clone_attrs): New. |
| (maybe_clone_body): Use it. |
| |
| 2023-06-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/110344 |
| * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast |
| from void* to the type of a pointed-to object. |
| |
| 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. |