| 2024-12-29 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/100358 | |
| PR c++/115008 | |
| * module.cc (elf_out::create_mapping): Fallback to ftruncate if | |
| posix_fallocate fails. | |
| 2024-12-29 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/106221 | |
| PR c++/110680 | |
| * pt.cc (check_default_tmpl_args): Check this is actually a | |
| lambda declaration and not just a typedef. | |
| (push_template_decl): Likewise. | |
| 2024-12-27 Jakub Jelinek <jakub@redhat.com> | |
| Revert: | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| * parser.cc (cp_lexer_new_main): Attempt to optimize large sequences | |
| of CPP_NUMBER with int type and values 0-255 separated by CPP_COMMA | |
| into CPP_EMBED with RAW_DATA_CST u.value. | |
| 2024-12-20 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * tree.cc (handle_maybe_unused_attribute): New function. | |
| (std_attributes): Use handle_maybe_unused_attribute instead | |
| of handle_unused_attribute for maybe_unused attribute. | |
| 2024-12-20 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * parser.cc (cp_parser_std_attribute): Don't transform | |
| [[deprecated]] into [[gnu::deprecated]]. | |
| * tree.cc (handle_std_deprecated_attribute): New function. | |
| (std_attributes): Add deprecated entry. | |
| 2024-12-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116401 | |
| * decl.cc (grokfndecl): Mark deduction guides as 'inline'. | |
| * module.cc (check_module_decl_linkage): Implement checks for | |
| non-inline external linkage definitions in headers. | |
| 2024-12-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * cp-tree.h (check_module_decl_linkage): Declare. | |
| * decl2.cc (finish_static_data_member_decl): Check linkage. | |
| * module.cc (set_originating_module): Adjust comment. | |
| (check_module_decl_linkage): New function. | |
| * name-lookup.cc (do_namespace_alias): Build alias with | |
| specified location, check linkage. | |
| (pushtag): Check linkage. | |
| (push_namespace): Slightly clarify error message. | |
| * name-lookup.h (do_namespace_alias): Add location parameter. | |
| * parser.cc (cp_parser_namespace_alias_definition): Pass | |
| identifier location to do_namespace_alias. | |
| (cp_parser_alias_declaration): Check linkage. | |
| (cp_parser_init_declarator): Check linkage. | |
| (cp_parser_function_definition_after_declarator): Check linkage. | |
| (cp_parser_save_member_function_body): Check linkage. | |
| * pt.cc (finish_concept_definition): Mark as public, check | |
| linkage. | |
| 2024-12-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (depset::hash::add_binding_entity): Also walk | |
| unnamed namespaces. | |
| (module_state::write_namespaces): Adjust assertion. | |
| * name-lookup.cc (push_namespace): Move anon using-directive | |
| handling to... | |
| (make_namespace_finish): ...here. | |
| 2024-12-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * cp-objcp-common.cc (cp_tree_size): Add TU_LOCAL_ENTITY. | |
| * cp-tree.def (TU_LOCAL_ENTITY): New tree code. | |
| * cp-tree.h (DECL_TEMPLATE_INSTANTIATIONS): Update comment. | |
| (struct tree_tu_local_entity): New type. | |
| (TU_LOCAL_ENTITY_NAME): New accessor. | |
| (TU_LOCAL_ENTITY_LOCATION): New accessor. | |
| (enum cp_tree_node_structure_enum): Add TS_CP_TU_LOCAL_ENTITY. | |
| (union GTY): Add tu_local_entity field. | |
| * module.cc (enum tree_tag): New flag DB_REFS_TU_LOCAL_BIT. | |
| (depset::has_defn): Override for TU-local entities. | |
| (depset::refs_tu_local): New accessor. | |
| (depset::hash::ignore_tu_local): New field. | |
| (depset::hash::hash): Initialize it. | |
| (trees_out::tree_tag::tt_tu_local): New flag. | |
| (trees_out::writing_local_entities): New field. | |
| (trees_out::is_initial_scan): New function. | |
| (trees_out::tu_local_count): New counter. | |
| (trees_out::trees_out): Initialize writing_local_entities. | |
| (dumper::impl::nested_name): Handle TU_LOCAL_ENTITY. | |
| (trees_out::instrument): Report TU-local entity counts. | |
| (trees_out::decl_value): Early exit for TU-local entities. | |
| (trees_in::decl_value): Handle typedefs of TU-local entities. | |
| (trees_out::decl_node): Adjust assertion to cope with early exit | |
| of TU-local deps. Always write TU-local entities by value. | |
| (trees_out::type_node): Handle TU-local types. | |
| (trees_out::has_tu_local_dep): New function. | |
| (trees_out::find_tu_local_decl): New function. | |
| (trees_out::tree_node): Intercept TU-local entities and write | |
| placeholder values for them instead of normal streaming. | |
| (trees_in::tree_node): Handle TU-local entities and TU-local | |
| template results. | |
| (trees_out::write_function_def): Ignore exposures in non-inline | |
| function bodies. | |
| (trees_out::write_var_def): Ignore exposures in initializers. | |
| (trees_out::write_class_def): Ignore exposures in friend decls. | |
| (trees_in::read_class_def): Skip TU-local friends. | |
| (trees_out::write_definition): Record whether we're writing a | |
| decl which refers to TU-local entities. | |
| (depset::hash::add_dependency): Only mark as exposure if we're not | |
| ignoring TU-local entities. | |
| (depset::hash::find_dependencies): Use depset's own is_key_order | |
| function rather than delegating via walker. Pass whether the | |
| decl has ignored TU-local entities in its definition. | |
| (template_has_explicit_inst): New function. | |
| (depset::hash::finalize_dependencies): Implement new warning | |
| Wtemplate-names-tu-local. | |
| (module_state::intercluster_seed): Don't seed TU-local deps. | |
| (module_state::write_cluster): Pass whether the decl has ignored | |
| TU-local entities in its definition. | |
| * pt.cc (register_specialization): Always register in a module. | |
| (complain_about_tu_local_entity): New function. | |
| (expr_contains_tu_local_entity): New function. | |
| (function_contains_tu_local_entity): New function. | |
| (instantiate_class_template): Skip TU-local friends. | |
| (tsubst_decl): Handle typedefs of TU-local entities. | |
| (tsubst): Complain about TU-local entities. | |
| (dependent_operand_p): Early exit for TU-local entities so we | |
| don't attempt to constant-evaluate them. | |
| (tsubst_expr): Detect and complain about TU-local entities. | |
| 2024-12-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * tree.cc (decl_linkage): Treat DECL_SELF_REFERENCE_P like | |
| DECL_IMPLICIT_TYPEDEF_P. | |
| * name-lookup.cc (do_namespace_alias): Fix linkage. | |
| * module.cc (DB_IS_INTERNAL_BIT): Rename to... | |
| (DB_TU_LOCAL_BIT): ...this. | |
| (DB_REFS_INTERNAL_BIT): Rename to... | |
| (DB_EXPOSURE_BIT): ...this. | |
| (depset::hash::is_internal): Rename to... | |
| (depset::hash::is_tu_local): ...this. | |
| (depset::hash::refs_internal): Rename to... | |
| (depset::hash::is_exposure): ...this. | |
| (depset::hash::is_tu_local_entity): New function. | |
| (depset::hash::has_tu_local_tmpl_arg): New function. | |
| (depset::hash::is_tu_local_value): New function. | |
| (depset::hash::make_dependency): Check for TU-local entities. | |
| (depset::hash::add_dependency): Make current an exposure | |
| whenever it references a TU-local entity. | |
| (depset::hash::add_binding_entity): Don't create bindings for | |
| any TU-local entity. | |
| (depset::hash::finalize_dependencies): Rename flags and adjust | |
| diagnostic messages to report exposures of TU-local entities. | |
| (depset::tarjan::connect): Don't include any TU-local depsets. | |
| (depset::hash::connect): Likewise. | |
| 2024-12-19 Patrick Palka <ppalka@redhat.com> | |
| PR c++/118069 | |
| * constraint.cc (atom_hasher): Define here, instead of ... | |
| * cp-tree.h (atom_hasher): ... here. | |
| * logic.cc (clause::m_set): Use pointer instead of structural | |
| hashing. | |
| 2024-12-19 Patrick Palka <ppalka@redhat.com> | |
| PR c++/118069 | |
| * logic.cc (dnf_size_r): Use HOST_WIDE_INT instead of int, and | |
| handle overflow gracefully via add_sat_hwi and mul_sat_hwi. | |
| (cnf_size_r): Likewise. | |
| (dnf_size): Use HOST_WIDE_INT instead of int. | |
| (cnf_size): Likewise. | |
| 2024-12-19 Marek Polacek <polacek@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| PR c++/117980 | |
| * constexpr.cc (cxx_eval_outermost_constant_expr): If there's | |
| an object to initialize, take its type. Don't set the type | |
| in the constexpr dtor case. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| * parser.cc (cp_lexer_new_main): Attempt to optimize large sequences | |
| of CPP_NUMBER with int type and values 0-255 separated by CPP_COMMA | |
| into CPP_EMBED with RAW_DATA_CST u.value. | |
| 2024-12-18 Tobias Burnus <tburnus@baylibre.com> | |
| * decl.cc (omp_declare_variant_finalize_one): Handle | |
| append_args. | |
| * parser.cc (cp_parser_omp_clause_init_modifiers): New; | |
| split of from ... | |
| (cp_parser_omp_clause_init): ... here; call it. | |
| (cp_parser_omp_all_clauses): Replace interop parsing by | |
| a call to ... | |
| (cp_parser_omp_clause_interop): ... this new function; | |
| set tree used/read. | |
| (cp_finish_omp_declare_variant): Parse 'append_args' clause. | |
| (cp_parser_omp_declare): Update comment. | |
| * pt.cc (tsubst_attribute, tsubst_omp_clauses): Handle template | |
| substitution also for declare variant's append_args clause, | |
| using for 'init' the same code as for interop's init clause. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| * parser.cc (cp_parser_postfix_expression): Use | |
| type_id_in_expr_sentinel instead of manually saving+setting/restoring | |
| parser->in_type_id_in_expr_p around cp_parser_type_id calls. | |
| (cp_parser_has_attribute_expression): Likewise. | |
| (cp_parser_cast_expression): Likewise. | |
| (cp_parser_sizeof_operand): Likewise. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * cp-tree.h (enum cp_tree_index): Add CPTI_INTERNAL_IDENTIFIER. | |
| (internal_identifier): Define. | |
| (internal_attribute_table): Declare. | |
| * parser.cc (cp_parser_exception_declaration): Error on alignas | |
| on exception declaration. | |
| (cp_parser_std_attribute_spec): Turn alignas into internal | |
| ns aligned attribute rather than gnu. | |
| * decl.cc (initialize_predefined_identifiers): Initialize | |
| internal_identifier. | |
| * tree.cc (handle_alignas_attribute): New function. | |
| (internal_attributes): New variable. | |
| (internal_attribute_table): Likewise. | |
| * cp-objcp-common.h (cp_objcp_attribute_table): Add | |
| internal_attribute_table entry. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * parser.cc (cp_parser_type_specifier_seq): Chain cxx11_attribute_p | |
| attributes after any type specifier in the is_declaration case | |
| to std_attributes rather than attributes. Set also ds_attribute | |
| or ds_std_attribute locations if not yet set. | |
| (cp_parser_exception_declaration): Pass &type_specifiers.attributes | |
| instead of NULL as last argument, call cp_decl_attributes. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * decl.cc (check_tag_decl): Diagnose std_attributes. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * parser.cc (cp_parser_decl_specifier_seq): Call | |
| warn_misplaced_attr_for_class_type for all OVERLOAD_TYPE_P | |
| types, not just CLASS_TYPE_P. When not calling | |
| warn_misplaced_attr_for_class_type, don't clear attrs and | |
| add it to decl_specs->std_attributes instead. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| PR c/41045 | |
| * semantics.cc (finish_asm_stmt): Reject - constraint modifier inside | |
| of a function. | |
| 2024-12-18 Jakub Jelinek <jakub@redhat.com> | |
| * semantics.cc (finish_asm_stmt): Diagnose invalid ":" constraint | |
| uses. | |
| 2024-12-18 Lewis Hyatt <lhyatt@gmail.com> | |
| PR c++/117970 | |
| * module.cc (module_state::read_ordinary_maps): Change argument to | |
| line_map_uint_t instead of unsigned int. | |
| 2024-12-17 Marek Polacek <polacek@redhat.com> | |
| PR c++/118073 | |
| * error.cc (dump_expr) <case NONTYPE_ARGUMENT_PACK>: New case. | |
| 2024-12-17 Marek Polacek <polacek@redhat.com> | |
| PR c++/117985 | |
| * init.cc (build_vec_init): Pop CLEANUP_FLAGS if we're not | |
| generating the loop. | |
| 2024-12-17 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/116108 | |
| * decl.cc (grokdeclarator): Pass TYYPE_MAIN_VARIANT (type) | |
| rather than type to same_type_p when checking if the non-static | |
| data member doesn't have current class type. | |
| 2024-12-16 David Malcolm <dmalcolm@redhat.com> | |
| PR sarif-replay/117943 | |
| * error.cc (auto_context_line::~auto_context_line): Use | |
| source-printing options from text_output. | |
| 2024-12-15 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc | |
| (cp_coroutine_transform::wrap_original_function_body): Use | |
| finish_if_stmt instead of manually applying the same process. | |
| 2024-12-15 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (expand_one_await_expression): Update the | |
| resume index before checking if the coroutine is ready. | |
| 2024-12-15 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/98935 | |
| * coroutines.cc (register_local_var_uses): Add a pset to the | |
| tree walk to avoid visiting the same BIND_EXPR twice. Make | |
| an early exit for cases that the callback does not apply. | |
| (cp_coroutine_transform::apply_transforms): Add a pset to the | |
| tree walk for register_local_vars. | |
| 2024-12-14 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/90321 | |
| * decl.cc (find_decomp_class_base): Check for decomposing a | |
| lambda closure type. Report base class chains if needed. | |
| (cp_finish_decomp): Remove no-longer-needed check. | |
| 2024-12-13 Tobias Burnus <tburnus@baylibre.com> | |
| * parser.cc (cp_parser_omp_construct, cp_parser_pragma): Reject | |
| OpenMP expressions in constexpr functions. | |
| 2024-12-12 Tobias Burnus <tburnus@baylibre.com> | |
| * parser.cc (OMP_DISPATCH_CLAUSE_MASK): Add has_device_addr clause. | |
| 2024-12-11 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/117614 | |
| * constexpr.cc (cxx_eval_store_expression): For stores to | |
| DECL_ANON_UNION_VAR_P vars just continue with DECL_VALUE_EXPR | |
| of it, without setting evaluated to true or full | |
| cxx_eval_constant_expression. | |
| 2024-12-11 David Malcolm <dmalcolm@redhat.com> | |
| * decl.cc: Add #include "diagnostic-highlight-colors.h" | |
| and #include "pretty-print-markup.h". | |
| (complain_about_incompatible_declspecs): New. | |
| (grokdeclarator): Use it when complaining about both 'signed' and | |
| 'unsigned', and both 'long' and 'short'. | |
| 2024-12-11 David Malcolm <dmalcolm@redhat.com> | |
| * call.cc (print_z_candidates): Count the number of | |
| candidates and issue a note stating the count at an | |
| intermediate nesting level. Number the individual | |
| candidates. | |
| 2024-12-10 Arsen Arsenović <arsen@aarsen.me> | |
| Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (dump_record_fields): New helper. Iterates a | |
| RECORD_TYPEs TYPE_FIELDS and pretty-prints them. | |
| (dmp_str): New. The lang-coro dump stream. | |
| (coro_dump_id): New. ID of the lang-coro dump. | |
| (coro_dump_flags): New. Flags passed to the lang-coro dump. | |
| (coro_maybe_dump_initial_function): New helper. Prints, if | |
| dumping is enabled, the fndecl passed to it as the original | |
| function. | |
| (coro_maybe_dump_ramp): New. Prints the ramp function passed to | |
| it, if dumping is enabled. | |
| (coro_maybe_dump_transformed_functions): New. | |
| (cp_coroutine_transform::apply_transforms): Initialize the | |
| lang-coro dump. Call coro_maybe_dump_initial_function on the | |
| original function, as well as coro_maybe_dump_ramp, after the | |
| transformation into the ramp is finished. | |
| (cp_coroutine_transform::finish_transforms): Call | |
| coro_maybe_dump_transformed_functions on the built actor and | |
| destroy. | |
| * cp-objcp-common.cc (cp_register_dumps): Register the coroutine | |
| dump. | |
| * cp-tree.h (coro_dump_id): Declare as extern. | |
| * cxx-pretty-print.cc (pp_cxx_template_parameter): Don't call | |
| TREE_TYPE on a TREE_LIST cell. | |
| (cxx_pretty_printer::declaration): Handle FIELD_DECL similar to | |
| VAR_DECL. | |
| 2024-12-10 Marek Polacek <polacek@redhat.com> | |
| PR c++/117788 | |
| * typeck.cc (cp_build_binary_op) <case EQ_EXPR>: Don't check | |
| warn_array_compare. Check tf_warning_or_error instead of just | |
| tf_warning. Maybe return an error_mark_node in C++26. | |
| <case LE_EXPR>: Likewise. | |
| 2024-12-09 Marek Polacek <polacek@redhat.com> | |
| Patrick Palka <ppalka@redhat.com> | |
| PR c++/116416 | |
| * cp-gimplify.cc (cp_fold_r) <case TARGET_EXPR>: Try to fold | |
| TARGET_EXPR_INITIAL and replace it with the folded result if | |
| it's TREE_CONSTANT. | |
| 2024-12-09 Matthew Malcomson <mmalcomson@nvidia.com> | |
| * call.cc (build_cxx_call): Pass `complain` parameter to | |
| check_builtin_function_arguments. Take its value from the | |
| `tsubst_flags_t` type `complain & tf_error`. | |
| * semantics.cc (finish_call_expr): Pass `complain` parameter to | |
| resolve_overloaded_builtin. Take its value from the | |
| `tsubst_flags_t` type `complain & tf_error`. | |
| 2024-12-06 David Malcolm <dmalcolm@redhat.com> | |
| PR other/116253 | |
| * call.cc (print_conversion_rejection): Remove leading space from | |
| diagnostic messages. | |
| (print_conversion_rejection): Likewise. | |
| (print_arity_information): Likewise. | |
| (print_z_candidate): Likewise. Add auto_diagnostic_nesting_level | |
| before calls to fn_type_unification and diagnose_constraints. | |
| (print_z_candidates): Add auto_diagnostic_nesting_level before | |
| looping over candidates. | |
| (conversion_null_warnings): Remove leading space from | |
| diagnostic messages. | |
| (maybe_inform_about_fndecl_for_bogus_argument_init): Likewise. | |
| * constraint.cc (tsubst_valid_expression_requirement): Add | |
| auto_diagnostic_nesting_level when showing why the expression is | |
| invalid. | |
| (satisfy_disjunction): Likewise when showing operans, and again | |
| when replaying each branch of the disjunction. | |
| (diagnose_constraints): Likewise when replaying satisfaction. | |
| * error.cc (cp_diagnostic_text_starter): Set prefix. | |
| (print_instantiation_full_context): Only show the file | |
| if we're not showing nesting or the user has opted in to | |
| showing location information in nested diagnostics. | |
| (class auto_context_line): New. | |
| (print_instantiation_partial_context_line): Replace calls to | |
| print_location and to diagnostic_show_locus with an | |
| auto_context_line. | |
| (print_instantiation_partial_context): Replace calls to | |
| print_location with an auto_context_line. | |
| (maybe_print_constexpr_context): Likewise. | |
| (print_constrained_decl_info): Likewise. | |
| (print_concept_check_info): Likewise. | |
| (print_constraint_context_head): Likewise. | |
| (print_requires_expression_info): Likewise. | |
| 2024-12-06 David Malcolm <dmalcolm@redhat.com> | |
| * cp-gimplify.cc: Include "gcc-urlifier.h". | |
| (process_stmt_hotness_attribute): Use auto_urlify_attributes with | |
| OPT_Wattributes. | |
| * cvt.cc: Include "gcc-urlifier.h". | |
| (maybe_warn_nodiscard): Use auto_urlify_attributes with | |
| OPT_Wunused_result. | |
| * decl.cc: Include "gcc-urlifier.h". | |
| (start_decl): Use auto_urlify_attributes. | |
| (start_preparsed_function): Likewise. | |
| 2024-12-06 David Malcolm <dmalcolm@redhat.com> | |
| * name-lookup.cc (suggest_alternative_in_explicit_scope): | |
| Gracefully handle non-namespaces, such as scoped enums. | |
| * parser.cc (cp_parser_name_lookup_error): Provide | |
| a name_hint for the case where we're in an explicit scope. | |
| * std-name-hint.gperf: Add <concepts>. | |
| * std-name-hint.h: Regenerate. | |
| 2024-12-06 David Malcolm <dmalcolm@redhat.com> | |
| PR other/116253 | |
| * error.cc (print_location): Move to earlier in the file. | |
| (print_instantiation_partial_context_line): Replace | |
| location-printing logic with a call to print_location. | |
| (print_instantiation_partial_context): Likewise, splitting up | |
| pp_verbatim calls. | |
| (maybe_print_constexpr_context): Likewise. | |
| 2024-12-06 Jakub Jelinek <jakub@redhat.com> | |
| * cp-tree.h (class raw_data_iterator): New type. | |
| (class raw_data_range): New type. | |
| * parser.cc (cp_parser_postfix_open_square_expression): Handle | |
| parsing of CPP_EMBED. | |
| (cp_parser_parenthesized_expression_list): Likewise. Use | |
| cp_lexer_next_token_is. | |
| (cp_parser_expression): Handle parsing of CPP_EMBED. | |
| (cp_parser_template_argument_list): Likewise. | |
| (cp_parser_initializer_list): Likewise. | |
| (cp_parser_oacc_clause_tile): Likewise. | |
| (cp_parser_omp_tile_sizes): Likewise. | |
| * pt.cc (tsubst_expr): Handle RAW_DATA_CST. | |
| * constexpr.cc (reduced_constant_expression_p): Likewise. | |
| (raw_data_cst_elt): New function. | |
| (find_array_ctor_elt): Handle RAW_DATA_CST. | |
| (cxx_eval_array_reference): Likewise. | |
| * typeck2.cc (digest_init_r): Emit -Wnarrowing and/or -Wconversion | |
| diagnostics. | |
| (process_init_constructor_array): Handle RAW_DATA_CST. | |
| * decl.cc (maybe_deduce_size_from_array_init): Likewise. | |
| (is_direct_enum_init): Fail for RAW_DATA_CST. | |
| (cp_maybe_split_raw_data): New function. | |
| (consume_init): New function. | |
| (reshape_init_array_1): Add VECTOR_P argument. Handle RAW_DATA_CST. | |
| (reshape_init_array): Adjust reshape_init_array_1 caller. | |
| (reshape_init_vector): Likewise. | |
| (reshape_init_class): Handle RAW_DATA_CST. | |
| (reshape_init_r): Likewise. | |
| 2024-12-06 Marek Polacek <polacek@redhat.com> | |
| PR c++/117898 | |
| * pt.cc (tsubst_pack_index): Detect indexing an empty pack. | |
| 2024-12-05 Jakub Jelinek <jakub@redhat.com> | |
| PR c/41045 | |
| * cp-tree.h (finish_asm_stmt): Add TOPLEV_P argument. | |
| * parser.cc (cp_parser_asm_definition): Parse also extended asm | |
| without clobbers/labels outside of functions. | |
| * semantics.cc (finish_asm_stmt): Add TOPLEV_P argument, if set, | |
| check extra restrictions for extended asm outside of functions. | |
| * pt.cc (tsubst_stmt): Adjust finish_asm_stmt caller. | |
| 2024-12-04 David Malcolm <dmalcolm@redhat.com> | |
| PR c++/116771 | |
| * parser.cc (cp_parser_name_lookup_error): Provide suggestions for | |
| the case of complete failure where there is no scope. | |
| 2024-12-04 Simon Martin <simon@nasilyan.com> | |
| PR c++/117615 | |
| * constexpr.cc (cxx_eval_constant_expression): Don't reject | |
| INTEGER_CSTs with type POINTER_TYPE to METHOD_TYPE. | |
| 2024-12-04 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/117826 | |
| * cp-tree.h (struct decl_location_traits): New type. | |
| (erroneous_templates_t): Change using into typedef. | |
| (erroneous_templates): Add GTY((cache)). | |
| * error.cc (cp_adjust_diagnostic_info): Use | |
| hash_map_safe_get_or_insert<true> rather than | |
| hash_map_safe_get_or_insert<false> for erroneous_templates. | |
| 2024-12-03 Nina Ranns <dinka.ranns@googlemail.com> | |
| PR c++/117579 | |
| * parser.cc (cp_parser_statement): Replace assertion with a | |
| conditional check that the statement containing a contract assert | |
| is empty. | |
| 2024-12-02 Patrick Palka <ppalka@redhat.com> | |
| * constraint.cc (resolve_concept_check): Remove. | |
| (deduce_constrained_parameter): Remove. | |
| (finish_type_constraints): Inline into its only caller | |
| cp_parser_placeholder_type_specifier and remove. | |
| (build_concept_check_arguments): Coding style tweaks. | |
| (build_standard_check): Inline into its only caller ... | |
| (build_concept_check): ... here. | |
| (build_type_constraint): Use the prototype parameter as the | |
| first template argument. | |
| (finish_shorthand_constraint): Remove function concept | |
| handling. Use concept_prototype_parameter. | |
| (placeholder_extract_concept_and_args): Inline into its | |
| callers and remove. | |
| (equivalent_placeholder_constraints): Adjust after | |
| placeholder_extract_concept_and_args removal. | |
| (iterative_hash_placeholder_constraint): Likewise. | |
| * cp-objcp-common.cc (cp_common_init_ts): Remove WILDCARD_DECL | |
| handling. | |
| * cp-tree.def (WILDCARD_DECL): Remove. | |
| * cp-tree.h (WILDCARD_PACK_P): Remove. | |
| (type_uses_auto_or_concept): Remove declaration of nonexistent | |
| function. | |
| (append_type_to_template_for_access_check): Likewise. | |
| (finish_type_constraints): Remove declaration. | |
| (placeholder_extract_concept_and_args): Remove declaration. | |
| (deduce_constrained_parameter): Remove declaration. | |
| (resolve_constraint_check): Remove declaration. | |
| (valid_requirements_p): Remove declaration of nonexistent | |
| function. | |
| (finish_concept_name): Likewise. | |
| (concept_definition_p): Remove redundant overload. | |
| (concept_prototype_parameter): Define. | |
| * cxx-pretty-print.cc (pp_cxx_constrained_type_spec): Adjust | |
| after placeholder_extract_concept_and_args. | |
| * error.cc (dump_decl) <case WILDCARD_DECL>: Remove. | |
| (dump_expr) <case WILDCARD_DECL>: Likewise. | |
| * parser.cc (is_constrained_parameter): Inline into | |
| declares_constrained_type_template_parameter and remove. | |
| (cp_parser_check_constrained_type_parm): Declare static. | |
| (finish_constrained_template_template_parm): Remove. | |
| (cp_parser_constrained_template_template_parm): Remove. | |
| (finish_constrained_parameter): Remove dead code guarded by | |
| cp_parser_constrained_template_template_parm. | |
| (declares_constrained_type_template_parameter): Adjust after | |
| is_constrained_parameter removal. | |
| (declares_constrained_template_template_parameter): Remove. | |
| (cp_parser_placeholder_type_specifier): Adjust after | |
| finish_type_constraints removal. Check the prototype parameter | |
| earlier, before build_type_constraint. | |
| Use concept_prototype_parameter. | |
| (cp_parser_parameter_declaration): Remove dead code guarded by | |
| declares_constrained_template_template_parameter. | |
| * pt.cc (convert_wildcard_argument): Remove. | |
| (convert_template_argument): Remove WILDCARD_DECL handling. | |
| (coerce_template_parameter_pack): Likewise. | |
| (tsubst) <case TEMPLATE_TYPE_PARM>: Likewise. | |
| (type_dependent_expression_p): Likewise. | |
| (make_constrained_placeholder_type): Remove function concept | |
| handling. | |
| (placeholder_type_constraint_dependent_p): Remove WILDCARD_DECL | |
| handling. | |
| 2024-11-30 Jakub Jelinek <jakub@redhat.com> | |
| * parser.cc: Implement C++26 P3176R1 - The Oxford variadic comma. | |
| (cp_parser_parameter_declaration_clause): Emit | |
| -Wdeprecated-variadic-comma-omission warnings. | |
| 2024-11-29 Tejas Belagod <tejas.belagod@arm.com> | |
| * decl.cc (reshape_init_array_1): Handle poly indices. | |
| 2024-11-28 Marek Polacek <polacek@redhat.com> | |
| PR c++/113798 | |
| * constexpr.cc (potential_constant_expression_1) <case PACK_INDEX_EXPR>: | |
| New case. | |
| * cp-objcp-common.cc (cp_common_init_ts): Mark PACK_INDEX_TYPE and | |
| PACK_INDEX_EXPR. | |
| * cp-tree.def (PACK_INDEX_TYPE): New. | |
| (PACK_INDEX_EXPR): New. | |
| * cp-tree.h (WILDCARD_TYPE_P): Also check PACK_INDEX_TYPE. | |
| (PACK_INDEX_CHECK): Define. | |
| (PACK_INDEX_P): Define. | |
| (PACK_INDEX_PACK): Define. | |
| (PACK_INDEX_INDEX): Define. | |
| (PACK_INDEX_PARENTHESIZED_P): Define. | |
| (make_pack_index): Declare. | |
| (pack_index_element): Declare. | |
| * cxx-pretty-print.cc (cxx_pretty_printer::expression) <case | |
| PACK_INDEX_EXPR>: New case. | |
| (cxx_pretty_printer::type_id) <case PACK_INDEX_TYPE>: New case. | |
| * error.cc (dump_type) <case PACK_INDEX_TYPE>: New case. | |
| (dump_type_prefix): Handle PACK_INDEX_TYPE. | |
| (dump_type_suffix): Likewise. | |
| (dump_expr) <case PACK_INDEX_EXPR>: New case. | |
| * mangle.cc (write_type) <case PACK_INDEX_TYPE>: New case. | |
| * module.cc (trees_out::type_node) <case PACK_INDEX_TYPE>: New case. | |
| (trees_in::tree_node) <case PACK_INDEX_TYPE>: New case. | |
| * parser.cc (cp_parser_next_tokens_are_pack_index_p): New. | |
| (cp_parser_pack_index): New. | |
| (cp_parser_primary_expression): Handle a C++26 pack-index-expression. | |
| (cp_parser_unqualified_id): Handle a C++26 pack-index-specifier. | |
| (cp_parser_nested_name_specifier_opt): See if a pack-index-specifier | |
| follows. | |
| (cp_parser_qualifying_entity): Handle a C++26 pack-index-specifier. | |
| (cp_parser_decltype_expr): Set id_expression_or_member_access_p for | |
| pack indexing. | |
| (cp_parser_mem_initializer_id): Handle a C++26 pack-index-specifier. | |
| (cp_parser_simple_type_specifier): Likewise. | |
| (cp_parser_base_specifier): Likewise. | |
| * pt.cc (iterative_hash_template_arg) <case PACK_INDEX_TYPE, | |
| PACK_INDEX_EXPR>: New case. | |
| (find_parameter_packs_r) <case PACK_INDEX_TYPE, PACK_INDEX_EXPR>: New | |
| case. | |
| (make_pack_index): New. | |
| (tsubst_pack_index): New. | |
| (tsubst): Avoid tsubst on PACK_INDEX_TYPE. | |
| <case TYPENAME_TYPE>: Add a call to error. | |
| <case PACK_INDEX_TYPE>: New case. | |
| (tsubst_expr) <case PACK_INDEX_EXPR>: New case. | |
| (dependent_type_p_r): Return true for PACK_INDEX_TYPE. | |
| (type_dependent_expression_p): Recurse on PACK_INDEX_PACK for | |
| PACK_INDEX_EXPR. | |
| * ptree.cc (cxx_print_type) <case PACK_INDEX_TYPE>: New case. | |
| * semantics.cc (finish_parenthesized_expr): Set | |
| PACK_INDEX_PARENTHESIZED_P for PACK_INDEX_EXPR. | |
| (finish_type_pack_element): Adjust error messages. | |
| (pack_index_element): New. | |
| * tree.cc (cp_tree_equal) <case PACK_INDEX_EXPR>: New case. | |
| (cp_walk_subtrees) <case PACK_INDEX_TYPE, PACK_INDEX_EXPR>: New case. | |
| * typeck.cc (structural_comptypes) <case PACK_INDEX_TYPE>: New case. | |
| 2024-11-28 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/78620 | |
| PR c++/117256 | |
| * init.cc (build_zero_init_1): Set CONSTRUCTOR_ZERO_PADDING_BITS. | |
| (build_value_init_noctor): Likewise. | |
| * constexpr.cc (cxx_eval_store_expression): Propagate | |
| CONSTRUCTOR_ZERO_PADDING_BITS flag. | |
| 2024-11-28 David Malcolm <dmalcolm@redhat.com> | |
| PR c/82892 | |
| * name-lookup.cc (suggest_alternatives_for_1): Provide hints for | |
| missing command-line options. | |
| 2024-11-28 David Malcolm <dmalcolm@redhat.com> | |
| PR c++/87850 | |
| * call.cc (convert_like_real): Call maybe_emit_indirection_note | |
| for "invalid conversion" diagnostic. | |
| * typeck.cc (compatible_types_for_indirection_note_p): New | |
| function. | |
| 2024-11-28 David Malcolm <dmalcolm@redhat.com> | |
| PR c/104896 | |
| * cvt.cc (maybe_warn_nodiscard): Replace "%<%s%>" with "%qs" in | |
| message wording. | |
| 2024-11-27 Jason Merrill <jason@redhat.com> | |
| * module.cc (trees_out::core_bools): Check vague_linkage_p. | |
| (has_definition): Likewise. | |
| 2024-11-23 Lewis Hyatt <lhyatt@gmail.com> | |
| * module.cc (bytes_out::loc): New function. | |
| (bytes_in::loc): New function. | |
| (struct span): Change int fields to location_diff_t. | |
| (range_t): Change from "unsigned int" to "line_map_uint_t". | |
| (struct ord_loc_info): Likewise. | |
| (struct macro_loc_info): Likewise. | |
| (class module_state): Likewise. | |
| (dumper::operator()): Add new code 'K' for dumping a location_t. | |
| (loc_spans::init): Use %K instead of %u for location_t dumps. | |
| (loc_spans::open): Likewise. | |
| (loc_spans::close): Likewise. Adjust bitwise expressions to support | |
| 64-bit location_t as well. | |
| (struct module_state_config): Change ordinary_locs and macro_locs | |
| from "unsigned int" to "line_map_uint_t". Reorder fields to improve | |
| packing. Rather than changing the constructor initializer list to | |
| match the new order, switch to NSDMI instead. | |
| (module_state::note_location): Adjust to support 64-bit location_t. | |
| (module_state::write_location): Use %K instead of %u for location_t | |
| dumps. Use loc() instead of u() for streaming location_t. | |
| (module_state::read_location): Likewise. | |
| (module_state::write_ordinary_maps): Likewise. | |
| (module_state::write_macro_maps): Likewise. | |
| (module_state::write_config): Likewise. | |
| (module_state::read_config): Likewise. | |
| (module_state::write_prepare_maps): Use %K instead of %u for | |
| location_t dumps. Adjust variable types and bitwise expressions to | |
| support 64-bit location_t. | |
| (module_state::read_ordinary_maps): Likewise. | |
| (module_state::read_macro_maps): Likewise. | |
| (preprocess_module): Adjust data types to support 64-bit number of | |
| line maps. | |
| 2024-11-22 Andrew Pinski <quic_apinski@quicinc.com> | |
| PR bootstrap/117737 | |
| * call.cc (INCLUDE_MEMORY): Remove. | |
| * class.cc (INCLUDE_MEMORY): Remove. | |
| * constexpr.cc (INCLUDE_MEMORY): Remove. | |
| * constraint.cc (INCLUDE_MEMORY): Remove. | |
| * contracts.cc (INCLUDE_MEMORY): Remove. | |
| * coroutines.cc (INCLUDE_MEMORY): Remove. | |
| * cp-gimplify.cc (INCLUDE_MEMORY): Remove. | |
| * cp-lang.cc (INCLUDE_MEMORY): Remove. | |
| * cp-objcp-common.cc (INCLUDE_MEMORY): Remove. | |
| * cp-ubsan.cc (INCLUDE_MEMORY): Remove. | |
| * cvt.cc (INCLUDE_MEMORY): Remove. | |
| * cxx-pretty-print.cc (INCLUDE_MEMORY): Remove. | |
| * decl.cc (INCLUDE_MEMORY): Remove. | |
| * decl2.cc (INCLUDE_MEMORY): Remove. | |
| * dump.cc (INCLUDE_MEMORY): Remove. | |
| * error.cc (INCLUDE_MEMORY): Remove. | |
| * except.cc (INCLUDE_MEMORY): Remove. | |
| * expr.cc (INCLUDE_MEMORY): Remove. | |
| * friend.cc (INCLUDE_MEMORY): Remove. | |
| * init.cc (INCLUDE_MEMORY): Remove. | |
| * lambda.cc (INCLUDE_MEMORY): Remove. | |
| * lex.cc (INCLUDE_MEMORY): Remove. | |
| * logic.cc (INCLUDE_MEMORY): Remove. | |
| * mangle.cc (INCLUDE_MEMORY): Remove. | |
| * mapper-client.cc (INCLUDE_MEMORY): Remove. | |
| * mapper-resolver.cc (INCLUDE_MEMORY): Remove. | |
| * method.cc (INCLUDE_MEMORY): Remove. | |
| * module.cc (INCLUDE_MEMORY): Remove. | |
| * name-lookup.cc (INCLUDE_MEMORY): Remove. | |
| * optimize.cc (INCLUDE_MEMORY): Remove. | |
| * parser.cc (INCLUDE_MEMORY): Remove. | |
| * pt.cc (INCLUDE_MEMORY): Remove. | |
| * ptree.cc (INCLUDE_MEMORY): Remove. | |
| * rtti.cc (INCLUDE_MEMORY): Remove. | |
| * search.cc (INCLUDE_MEMORY): Remove. | |
| * semantics.cc (INCLUDE_MEMORY): Remove. | |
| * tree.cc (INCLUDE_MEMORY): Remove. | |
| * typeck.cc (INCLUDE_MEMORY): Remove. | |
| * typeck2.cc (INCLUDE_MEMORY): Remove. | |
| * vtable-class-hierarchy.cc (INCLUDE_MEMORY): Remove. | |
| 2024-11-22 Tobias Burnus <tburnus@baylibre.com> | |
| * parser.cc (cp_parser_omp_clause_name, cp_parser_omp_all_clauses, | |
| cp_parser_omp_dispatch_body): Handle 'interop' clause. | |
| * pt.cc (tsubst_omp_clauses): Likewise. | |
| * semantics.cc (finish_omp_clauses): Likewise. | |
| 2024-11-22 Tobias Burnus <tburnus@baylibre.com> | |
| * parser.cc (INCLUDE_STRING): Define. | |
| (cp_parser_omp_clause_name): Handle init, use, and destroy clauses. | |
| (cp_parser_omp_all_clauses): Likewise; use C_ORT_OMP_INTEROP, if | |
| 'use' is permitted, for c_finish_omp_clauses. | |
| (cp_parser_omp_modifier_prefer_type, cp_parser_omp_clause_init, | |
| OMP_INTEROP_CLAUSE_MASK, cp_parser_omp_interop): New. | |
| (cp_parser_pragma): Handle 'interop' directive. | |
| * pt.cc (tsubst_omp_clauses): Handle init, use, and destroy clauses. | |
| (tsubst_stmt): Handle OMP_INTEROP. | |
| * semantics.cc (cp_omp_init_prefer_type_update): New. | |
| (finish_omp_clauses): Handle init, use, and destroy clauses | |
| and add clause check for 'depend' on 'interop'. | |
| 2024-11-21 Jason Merrill <jason@redhat.com> | |
| * module.cc (has_definition): Also true for inline vars. | |
| 2024-11-21 Jason Merrill <jason@redhat.com> | |
| * module.cc (trees_in::core_vals) [STATEMENT_LIST]: Skip | |
| DEBUG_BEGIN_STMT if !MAY_HAVE_DEBUG_MARKER_STMTS. | |
| 2024-11-21 Jason Merrill <jason@redhat.com> | |
| * name-lookup.cc (lookup_imported_hidden_friend): Call | |
| lazy_load_pendings. | |
| 2024-11-20 Paul-Antoine Arras <parras@baylibre.com> | |
| * decl.cc (omp_declare_variant_finalize_one): Set adjust_args | |
| need_device_ptr attribute. | |
| * parser.cc (cp_parser_direct_declarator): Update call to | |
| cp_parser_late_return_type_opt. | |
| (cp_parser_late_return_type_opt): Add 'tree parms' parameter. Update | |
| call to cp_parser_late_parsing_omp_declare_simd. | |
| (cp_parser_omp_clause_name): Handle nocontext and novariants clauses. | |
| (cp_parser_omp_clause_novariants): New function. | |
| (cp_parser_omp_clause_nocontext): Likewise. | |
| (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_NOVARIANTS and | |
| PRAGMA_OMP_CLAUSE_NOCONTEXT. | |
| (cp_parser_omp_dispatch_body): New function, inspired from | |
| cp_parser_assignment_expression and cp_parser_postfix_expression. | |
| (OMP_DISPATCH_CLAUSE_MASK): Define. | |
| (cp_parser_omp_dispatch): New function. | |
| (cp_finish_omp_declare_variant): Add parameter. Handle adjust_args | |
| clause. | |
| (cp_parser_late_parsing_omp_declare_simd): Add parameter. Update calls | |
| to cp_finish_omp_declare_variant and cp_finish_omp_declare_variant. | |
| (cp_parser_omp_construct): Handle PRAGMA_OMP_DISPATCH. | |
| (cp_parser_pragma): Likewise. | |
| * semantics.cc (finish_omp_clauses): Handle OMP_CLAUSE_NOCONTEXT and | |
| OMP_CLAUSE_NOVARIANTS. | |
| * pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_NOCONTEXT and | |
| OMP_CLAUSE_NOVARIANTS. | |
| (tsubst_stmt): Handle OMP_DISPATCH. | |
| (tsubst_expr): Handle IFN_GOMP_DISPATCH. | |
| 2024-11-19 Jason Merrill <jason@redhat.com> | |
| * decl2.cc (cp_handle_deprecated_or_unavailable): Avoid redundant | |
| warning. | |
| * call.cc (build_over_call): Set TREE_NO_WARNING for calls | |
| to deprecated functions. | |
| * semantics.cc (finish_call_expr): Propagate TREE_NO_WARNING. | |
| 2024-11-17 Jason Merrill <jason@redhat.com> | |
| * module.cc (module_preprocess_options): Set directives_only here. | |
| 2024-11-17 Jason Merrill <jason@redhat.com> | |
| * module.cc (module_preprocess_options): Don't override it. | |
| 2024-11-16 Jan Hubicka <hubicka@ucw.cz> | |
| * decl.cc (cxx_build_operator_new): Break out from ... | |
| (cxx_build_operator_delete): Break out from ... | |
| (cxx_init_operator_new_delete_decls): Break out from ... | |
| (cxx_init_decl_processing): ... here. | |
| 2024-11-14 Jason Merrill <jason@redhat.com> | |
| * name-lookup.cc (do_namespace_alias): set_originating_module after | |
| pushdecl. | |
| 2024-11-14 Jason Merrill <jason@redhat.com> | |
| * module.cc (module_state_config::get_dialect): Expect coroutines in | |
| C++20. | |
| 2024-11-11 Jason Merrill <jason@redhat.com> | |
| * Make-lang.in: Also collect tags from libcody and c++tools. | |
| 2024-11-11 Jason Merrill <jason@redhat.com> | |
| * lang-specs.h: Check fmodules* instead of fmodules-ts. | |
| 2024-11-11 Simon Martin <simon@nasilyan.com> | |
| PR c++/117463 | |
| * constexpr.cc (cxx_placement_new_fn): Implement in terms of | |
| std_placement_new_fn_p. | |
| * cp-tree.h (std_placement_new_fn_p): Declare. | |
| * init.cc (std_placement_new_fn_p): Add missing checks to ensure | |
| that fndecl is a non-replaceable ::operator new. | |
| 2024-11-11 Jakub Jelinek <jakub@redhat.com> | |
| * parser.cc (cp_parser_postfix_expression): Handle | |
| RID_BUILTIN_OPERATOR_NEW and RID_BUILTIN_OPERATOR_DELETE. | |
| * cp-objcp-common.cc (names_builtin_p): Change return type from | |
| bool to int, adjust return statments. Handle | |
| RID_BUILTIN_OPERATOR_NEW and RID_BUILTIN_OPERATOR_DELETE. | |
| * pt.cc (tsubst_expr) <case CALL_EXPR>: Handle | |
| CALL_FROM_NEW_OR_DELETE_P. | |
| 2024-11-11 Jason Merrill <jason@redhat.com> | |
| * cp-tree.h (struct ptrmem_cst): Change tree_common to tree_typed. | |
| (struct tree_trait_expr): Likewise. | |
| (struct tree_static_assert): Change tree_common to tree_base. | |
| (struct tree_argument_pack_select): Likewise. | |
| 2024-11-10 Lewis Hyatt <lhyatt@gmail.com> | |
| * cp-objcp-common.cc (cp_common_init_ts): Change TRAIT_EXPR from | |
| TS_EXP to TS_TYPED. | |
| 2024-11-08 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/117317 | |
| * semantics.cc (emit_associated_thunks): Do nothing for | |
| !DECL_INTERFACE_KNOWN && DECL_DEFER_OUTPUT fns. | |
| 2024-11-05 Jason Merrill <jason@redhat.com> | |
| PR c++/116634 | |
| * init.cc (can_init_array_with_p): Allow PR59465 case with | |
| permerror. | |
| 2024-11-05 Simon Martin <simon@nasilyan.com> | |
| PR c++/117099 | |
| PR c++/117129 | |
| * typeck.cc (check_return_expr): Upon error, set | |
| current_function_return_value to error_mark_node. | |
| 2024-11-05 Simon Martin <simon@nasilyan.com> | |
| PR c++/117101 | |
| * init.cc (std_placement_new_fn_p): Check first_arg against | |
| NULL_TREE. | |
| 2024-11-05 Simon Martin <simon@nasilyan.com> | |
| PR c++/117158 | |
| * typeck.cc (cp_build_array_ref): Only wrap array expression | |
| into a SAVE_EXPR at template instantiation time. | |
| 2024-11-05 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/117370 | |
| * cp-tree.h (is_std_class): Declare. | |
| * constexpr.cc (is_std_class): New function. | |
| (is_std_allocator): Use it. | |
| * decl.cc (grok_op_properties): Mark global replaceable | |
| operator new/delete operators with const std::nothrow_t & last | |
| argument with DECL_IS_REPLACEABLE_OPERATOR. | |
| 2024-11-05 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/99274 | |
| * module.cc (trees_in::is_matching_decl): Merge default | |
| arguments. | |
| * tree.cc (cp_tree_equal) <AGGR_INIT_EXPR>: Handle unification | |
| of AGGR_INIT_EXPRs with new VAR_DECL slots. | |
| 2024-11-05 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/105443 | |
| * module.cc (loc_spans::locs_exhausted_p): New field. | |
| (loc_spans::loc_spans): Initialise it. | |
| (loc_spans::locations_exhausted_p): New function. | |
| (module_state::read_prepare_maps): Move inform into... | |
| (loc_spans::report_location_exhaustion): ...this new function. | |
| (module_state::write_location): Check for writing module | |
| locations stored due to resource exhaustion. | |
| 2024-11-02 Nathaniel Shead <nathanieloshead@gmail.com> | |
| Jason Merrill <jason@redhat.com> | |
| PR c++/113814 | |
| * pt.cc (add_mergeable_specialization): Propagate | |
| TYPE_CANONICAL. | |
| 2024-11-02 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116317 | |
| * module.cc | |
| (depset::DB_MAYBE_RECURSIVE_BIT): New flag. | |
| (depset::DB_ENTRY_BIT): New flag. | |
| (depset::is_maybe_recursive): New accessor. | |
| (depset::is_entry): New accessor. | |
| (depset::hash::writing_merge_key): New field. | |
| (trees_out::decl_value): Inform dep_hash while we're writing the | |
| merge key information for a decl. | |
| (depset::hash::add_dependency): Find recursive deps and mark the | |
| entry point. | |
| (sort_cluster): Ensure that the entry dep is streamed first. | |
| 2024-11-01 David Malcolm <dmalcolm@redhat.com> | |
| PR bootstrap/117361 | |
| * Make-lang.in (s-selftest-c++): Use GCC_FOR_SELFTESTS. | |
| (selftest-c++-gdb): Likewise. | |
| (selftest-c++-valgrind): Likewise. | |
| 2024-11-01 Jakub Jelinek <jakub@redhat.com> | |
| * pt.cc (tsubst_attribute): For "omp declare variant base" attribute | |
| if varid is error_mark_node, set val to error_mark_node rather than | |
| creating a TREE_LIST with error_mark_node TREE_PURPOSE. | |
| 2024-10-31 Tobias Burnus <tburnus@baylibre.com> | |
| * decl.cc (omp_declare_variant_finalize_one): Use STRIP_REFERENCE_REF | |
| instead of doing it manually. | |
| 2024-10-31 Tobias Burnus <tburnus@baylibre.com> | |
| * decl.cc (omp_declare_variant_finalize_one): Strip indirect ref | |
| around variant-function call when processing a variant. | |
| 2024-10-30 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/116607 | |
| * contracts.cc (has_active_contract_condition): Use the | |
| CONTRACT_CHAIN macro to advance through the attribute list. | |
| 2024-10-29 David Malcolm <dmalcolm@redhat.com> | |
| PR other/116613 | |
| * error.cc (cxx_initialize_diagnostics): Use unique_ptr for | |
| pretty_printer. Use context->set_format_decoder. | |
| * module.cc (noisy_p): Update for global_dc's m_printer becoming | |
| reference printer. | |
| 2024-10-29 Jason Merrill <jason@redhat.com> | |
| PR c++/30854 | |
| PR c++/116634 | |
| * error.cc (dump_aggr_init_expr_args): Remove. | |
| (dump_call_expr_args): Handle AGGR_INIT_EXPR. | |
| (dump_expr): Combine AGGR_INIT_EXPR and CALL_EXPR cases. | |
| 2024-10-25 Jakub Jelinek <jakub@redhat.com> | |
| * vtable-class-hierarchy.cc: Remove trailing whitespace. | |
| * typeck2.cc: Likewise. | |
| * decl.cc: Likewise. | |
| * init.cc: Likewise. | |
| * semantics.cc: Likewise. | |
| * module.cc: Likewise. | |
| * rtti.cc: Likewise. | |
| * cxx-pretty-print.cc: Likewise. | |
| * cvt.cc: Likewise. | |
| * mangle.cc: Likewise. | |
| * name-lookup.h: Likewise. | |
| * coroutines.cc: Likewise. | |
| * error.cc: Likewise. | |
| * lambda.cc: Likewise. | |
| * tree.cc: Likewise. | |
| * g++spec.cc: Likewise. | |
| * decl2.cc: Likewise. | |
| * cp-tree.h: Likewise. | |
| * parser.cc: Likewise. | |
| * pt.cc: Likewise. | |
| * call.cc: Likewise. | |
| * lex.cc: Likewise. | |
| * cp-lang.cc: Likewise. | |
| * cp-tree.def: Likewise. | |
| * constexpr.cc: Likewise. | |
| * typeck.cc: Likewise. | |
| * name-lookup.cc: Likewise. | |
| * optimize.cc: Likewise. | |
| * search.cc: Likewise. | |
| * mapper-client.cc: Likewise. | |
| * ptree.cc: Likewise. | |
| * class.cc: Likewise. | |
| 2024-10-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (trees_in::read_class_def): Propagate some missing | |
| flags from the streamed-in definition. | |
| 2024-10-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (post_load_processing): Mark COMDAT as needed, emit | |
| declarations if maybe_clone_body fails. | |
| 2024-10-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115007 | |
| * module.cc (module_state::read_cluster): Replace | |
| DECL_ABSTRACT_P with DECL_MAYBE_IN_CHARGE_CDTOR_P. | |
| (post_load_processing): Check and mark TREE_ASM_WRITTEN. | |
| * semantics.cc (expand_or_defer_fn_1): Use the more specific | |
| module_maybe_has_cmi_p instead of modules_p. | |
| 2024-10-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * decl2.cc (import_export_class): Use TYPE_CONTAINS_VPTR_P | |
| instead of TYPE_POLYMORPHIC_P. | |
| (import_export_decl): Likewise. | |
| 2024-10-24 David Malcolm <dmalcolm@redhat.com> | |
| Gaius Mulley <gaiusmod2@gmail.com> | |
| PR other/116613 | |
| * call.cc: Add #define INCLUDE_MEMORY. | |
| * class.cc: Likewise. | |
| * constexpr.cc: Likewise. | |
| * constraint.cc: Likewise. | |
| * contracts.cc: Likewise. | |
| * coroutines.cc: Likewise. | |
| * cp-gimplify.cc: Likewise. | |
| * cp-lang.cc: Likewise. | |
| * cp-objcp-common.cc: Likewise. | |
| * cp-ubsan.cc: Likewise. | |
| * cvt.cc: Likewise. | |
| * cxx-pretty-print.cc: Likewise. Add #include "cp-tree.h". | |
| (cxx_pretty_printer::clone): Use std::unique_ptr and | |
| ::make_unique. | |
| * cxx-pretty-print.h (cxx_pretty_printer::clone): Use | |
| std::unique_ptr. | |
| * decl2.cc: Add #define INCLUDE_MEMORY. | |
| * dump.cc: Likewise. | |
| * except.cc: Likewise. | |
| * expr.cc: Likewise. | |
| * friend.cc: Likewise. | |
| * init.cc: Likewise. | |
| * lambda.cc: Likewise. | |
| * logic.cc: Likewise. | |
| * mangle.cc: Likewise. | |
| * method.cc: Likewise. | |
| * optimize.cc: Likewise. | |
| * pt.cc: Likewise. | |
| * ptree.cc: Likewise. | |
| * rtti.cc: Likewise. | |
| * search.cc: Likewise. | |
| * semantics.cc: Likewise. | |
| * tree.cc: Likewise. | |
| * typeck.cc: Likewise. | |
| * typeck2.cc: Likewise. | |
| * vtable-class-hierarchy.cc: Likewise. | |
| 2024-10-24 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/117259 | |
| * typeck.cc (get_member_function_from_ptrfunc): Use force_target_expr | |
| rather than save_expr for instance_ptr and function. Don't call it | |
| for TREE_CONSTANT. | |
| 2024-10-22 Jason Merrill <jason@redhat.com> | |
| PR c++/117107 | |
| PR c++/92687 | |
| * decl.cc (lookup_decomp_type): Handle null table. | |
| 2024-10-22 Patrick Palka <ppalka@redhat.com> | |
| * pt.cc (register_specialization): Set elt.hash. | |
| 2024-10-22 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (depset::DB_IS_MEMBER_BIT): Rename to... | |
| (depset::DB_IS_PENDING_BIT): ...this. | |
| (depset::is_member): Remove. | |
| (depset::is_pending_entity): New function. | |
| (depset::hash::make_dependency): Mark definitions of | |
| namespace-scope types as maybe-pending entities. | |
| (depset::hash::add_class_entities): Rename DB_IS_MEMBER_BIT to | |
| DB_IS_PENDING_BIT. | |
| (depset::hash::find_dependencies): Use is_pending_entity | |
| instead of is_member. | |
| (module_state::write_pendings): Likewise; adjust comment. | |
| 2024-10-18 Alejandro Colomar <alx@kernel.org> | |
| * cp-tree.h (array_type_nelts_top) | |
| * tree.cc (array_type_nelts_top): | |
| Remove function (move to gcc/). | |
| 2024-10-18 Alejandro Colomar <alx@kernel.org> | |
| * decl.cc (reshape_init_array) | |
| * init.cc | |
| (build_zero_init_1) | |
| (build_value_init_noctor) | |
| (build_vec_init) | |
| (build_delete) | |
| * lambda.cc (add_capture) | |
| * tree.cc (array_type_nelts_top): | |
| Rename array_type_nelts => array_type_nelts_minus_one | |
| 2024-10-16 Jakub Jelinek <jakub@redhat.com> | |
| * search.cc (lookup_member): ?: operator formatting fixes. | |
| * typeck.cc (cp_build_modify_expr): Likewise. | |
| 2024-10-15 Jakub Jelinek <jakub@redhat.com> | |
| PR c/117022 | |
| * semantics.cc (begin_while_stmt, begin_do_stmt, begin_for_stmt, | |
| finish_break_stmt, finish_continue_stmt, begin_switch_stmt): Pass | |
| another NULL_TREE to build_stmt calls. | |
| 2024-10-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116710 | |
| * pt.cc (unify) <case REFERENCE_TYPE>: Compare rvalueness. | |
| 2024-10-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/117054 | |
| * pt.cc (extract_locals_r): Disable tree_extra_args assert | |
| for LAMBDA_EXPR. | |
| 2024-10-14 Jason Merrill <jason@redhat.com> | |
| * cp-tree.h (most_constrained_function): Declare.. | |
| * class.cc (resolve_address_of_overloaded_function): Call it. | |
| * pt.cc (get_template_for_ordering): Handle list from | |
| resolve_address_of_overloaded_function. | |
| (most_constrained_function): No longer static. | |
| (resolve_overloaded_unification): Always compare type rather | |
| than decl. | |
| 2024-10-13 Simon Martin <simon@nasilyan.com> | |
| Revert: | |
| 2024-10-12 Simon Martin <simon@nasilyan.com> | |
| PR c++/109918 | |
| * class.cc (warn_hidden): Keep track of overloaded and of hidden | |
| base methods. Mention the actual hiding function in the warning, | |
| not the first overload. | |
| * error.cc (location_of): Skip over conv_op_marker. | |
| 2024-10-12 Simon Martin <simon@nasilyan.com> | |
| PR c++/109918 | |
| * class.cc (warn_hidden): Keep track of overloaded and of hidden | |
| base methods. Mention the actual hiding function in the warning, | |
| not the first overload. | |
| * error.cc (location_of): Skip over conv_op_marker. | |
| 2024-10-07 Jason Merrill <jason@redhat.com> | |
| * decl.cc (duplicate_decls): Only check PURVIEW_P if | |
| DECL_LANG_SPECIFIC. | |
| 2024-10-07 Jason Merrill <jason@redhat.com> | |
| * decl2.cc (mark_used): Always check require_deduced_type. | |
| 2024-10-07 Jason Merrill <jason@redhat.com> | |
| * module.cc (init_modules): Don't warn about -M. | |
| 2024-10-04 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/113266 | |
| PR c++/116911 | |
| * parser.cc (cp_parser_template_argument): Allow | |
| internal-linkage variables since C++11. | |
| 2024-10-04 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116913 | |
| * name-lookup.cc (update_binding): Return the strip_using'd old | |
| decl rather than the binding. | |
| 2024-10-04 Jason Merrill <jason@redhat.com> | |
| Richard Biener <rguenther@suse.de> | |
| * cp-tree.h (spec_entry::hash): New member. | |
| * pt.cc (spec_hasher::hash): Set it and return it. | |
| (maybe_process_partial_specialization): Clear it when | |
| changing tmpl/args. | |
| (lookup_template_class): Likewise, don't pass hash to find. | |
| (retrieve_specialization): Set it, don't pass hash to find. | |
| (register_specialization): Don't pass hash to find. | |
| (reregister_specialization): Likewise. | |
| (match_mergeable_specialization): Likewise. | |
| (add_mergeable_specialization): Likewise. | |
| 2024-10-03 Jason Merrill <jason@redhat.com> | |
| Richard Biener <rguenther@suse.de> | |
| * pt.cc (coerce_template_parms): Free garbage vecs. | |
| 2024-10-03 Jason Merrill <jason@redhat.com> | |
| Revert: | |
| 2024-10-03 Jason Merrill <jason@redhat.com> | |
| Richard Biener <rguenther@suse.de> | |
| * pt.cc (struct free_if_changed_proxy): New. | |
| (coerce_template_parms): Use it. | |
| 2024-10-03 Jason Merrill <jason@redhat.com> | |
| * parser.cc (location_between): New. | |
| (cp_parser_operator): Handle -Wdeprecated-literal-operator. | |
| 2024-10-03 Jason Merrill <jason@redhat.com> | |
| Richard Biener <rguenther@suse.de> | |
| * pt.cc (struct free_if_changed_proxy): New. | |
| (coerce_template_parms): Use it. | |
| 2024-10-02 Simon Martin <simon@nasilyan.com> | |
| PR c++/116722 | |
| * constexpr.cc (cxx_bind_parameters_in_call): When !ctx->quiet, | |
| emit error before bailing out due to a call to {con,de}structor | |
| for a class with virtual bases. | |
| 2024-10-02 Richard Biener <rguenther@suse.de> | |
| * pt.cc (iterative_hash_template_arg): Use iterative_hash_hashval_t | |
| to hash TYPE_HASH. | |
| 2024-10-02 Richard Biener <rguenther@suse.de> | |
| * pt.cc (iterative_hash_template_arg): Avoid using | |
| iterative_hash_object. | |
| 2024-10-01 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | |
| * constraint.cc (diagnose_trait_expr): New diagnostic. | |
| * cp-trait.def (IS_VIRTUAL_BASE_OF): New builtin. | |
| * cp-tree.h (enum base_access_flags): Add a new flag to be | |
| able to request a search for a virtual base class. | |
| * cxx-pretty-print.cc (pp_cxx_userdef_literal): Update the | |
| list of GNU extensions to the grammar. | |
| * search.cc (struct lookup_base_data_s): Add a field to | |
| request searching for a virtual base class. | |
| (dfs_lookup_base): Add the ability to look for a virtual | |
| base class. | |
| (lookup_base): Forward the flag to dfs_lookup_base. | |
| * semantics.cc (trait_expr_value): Implement the builtin | |
| by calling lookup_base with the new flag. | |
| (finish_trait_expr): Handle the new builtin. | |
| 2024-09-30 Marek Polacek <polacek@redhat.com> | |
| PR c++/109859 | |
| * parser.cc (cp_parser_lambda_declarator_opt): Temporarily clear | |
| local_variables_forbidden_p. | |
| (cp_parser_placeholder_type_specifier): Turn an assert into an | |
| error. | |
| 2024-09-30 David Malcolm <dmalcolm@redhat.com> | |
| PR other/116613 | |
| * pt.cc: Include "pretty-print-markup.h". | |
| (warn_spec_missing_attributes): Defer colorization choices by | |
| replacing printing to a pretty_printer * param with appending | |
| to a vec of strings. Replace pretty_printer with usage of | |
| pp_markup::comma_separated_quoted_strings and "%e". | |
| 2024-09-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116160 | |
| * name-lookup.cc (supplement_binding): Allow redeclaration via | |
| USING_DECL if not in class scope. | |
| (do_nonmember_using_decl): Remove function-scope exemption. | |
| (push_using_decl_bindings): Remove outdated comment. | |
| 2024-09-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116748 | |
| * name-lookup.cc (update_binding): Maintain USING_DECLs in the | |
| binding slots. | |
| 2024-09-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116803 | |
| * decl.cc (duplicate_decls): Propagate DECL_MODULE_PURVIEW_P and | |
| DECL_MODULE_IMPORT_P for template redeclarations. | |
| 2024-09-27 Marek Polacek <polacek@redhat.com> | |
| PR c++/102594 | |
| * init.cc (build_vec_init): Build up a CONSTRUCTOR to signal | |
| direct-initialization rather than a TREE_LIST. | |
| 2024-09-27 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/116793 | |
| * coroutines.cc (await_statement_expander): Just process | |
| subtrees if encountering a CLEANUP_POINT_EXPR. | |
| 2024-09-27 Arsen Arsenović <arsen@aarsen.me> | |
| * coroutines.cc (co_await_get_resume_call): Return a tree | |
| directly, rather than a tree pointer. | |
| * cp-tree.h (co_await_get_resume_call): Adjust signature | |
| accordingly. | |
| * cvt.cc (convert_to_void): Do not alter CO_AWAIT_EXPRs when | |
| discarding them. Simplify handling implicit INDIRECT_REFs. | |
| 2024-09-27 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/116502 | |
| * coroutines.cc (maybe_promote_temps): Convert temporary | |
| initializers to void without complaining. | |
| 2024-09-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (has_definition): Use decl_maybe_constant_var | |
| instead of TREE_CONSTANT. | |
| 2024-09-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * name-lookup.cc (check_can_export_using_decl): Handle internal | |
| linkage GM entities (but ignore in header units); use linkage | |
| of entity ultimately referred to by aliases. | |
| 2024-09-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * name-lookup.cc (maybe_record_mergeable_decl): Use decl_linkage | |
| instead of ad-hoc checks. | |
| 2024-09-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * name-lookup.cc (do_namespace_alias): Propagate TREE_PUBLIC for | |
| namespace aliases. | |
| * tree.cc (decl_linkage): Update rules for C++11. | |
| 2024-09-26 Marek Polacek <polacek@redhat.com> | |
| PR c++/116731 | |
| * parser.cc (warn_for_range_copy): Check if TYPE is trivially | |
| constructible, not copyable. | |
| 2024-09-25 Marek Polacek <polacek@redhat.com> | |
| * coroutines.cc (build_co_await): Use TARGET_EXPR accessors. | |
| (finish_co_yield_expr): Likewise. | |
| (register_awaits): Likewise. | |
| (tmp_target_expr_p): Likewise. | |
| (flatten_await_stmt): Likewise. | |
| * error.cc (dump_expr): Likewise. | |
| * semantics.cc (finish_omp_target_clauses): Likewise. | |
| * tree.cc (bot_manip): Likewise. | |
| (cp_tree_equal): Likewise. | |
| * typeck.cc (cxx_mark_addressable): Likewise. | |
| (cp_build_compound_expr): Likewise. | |
| (cp_build_modify_expr): Likewise. | |
| (check_return_expr): Likewise. | |
| 2024-09-25 Tobias Burnus <tburnus@baylibre.com> | |
| * parser.cc (cp_parser_omp_declare_target): Set target-used bit | |
| in omp_requires_mask. | |
| 2024-09-24 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/107637 | |
| * cp-tree.h: Implement C++23 P2718R0 - Wording for P2644R1 Fix for | |
| Range-based for Loop. | |
| (cp_convert_omp_range_for): Add bool tmpl_p argument. | |
| (find_range_for_decls): Declare. | |
| * parser.cc (cp_convert_range_for): For flag_range_for_ext_temps call | |
| push_stmt_list () before cp_finish_decl for range_temp and save it | |
| temporarily to FOR_INIT_STMT. | |
| (cp_convert_omp_range_for): Add tmpl_p argument. If set, remember | |
| DECL_NAME of range_temp and for cp_finish_decl call restore it before | |
| clearing it again, if unset, don't adjust DECL_NAME of range_temp at | |
| all. | |
| (cp_parser_omp_loop_nest): For flag_range_for_ext_temps range for add | |
| CLEANUP_POINT_EXPR around sl. Call find_range_for_decls and adjust | |
| DECL_NAMEs for range fors if not processing_template_decl. Adjust | |
| cp_convert_omp_range_for caller. Remove superfluous backslash at the | |
| end of line. | |
| * decl.cc (initialize_local_var): For flag_range_for_ext_temps | |
| temporarily clear stmts_are_full_exprs_p rather than set for | |
| for_range__identifier decls. | |
| * call.cc (extend_ref_init_temps): For flag_range_for_ext_temps return | |
| init early for for_range__identifier decls. | |
| * semantics.cc (find_range_for_decls): New function. | |
| (finish_for_stmt): Use it. For flag_range_for_ext_temps if | |
| cp_convert_range_for set FOR_INIT_STMT, pop_stmt_list it and wrap | |
| into CLEANUP_POINT_EXPR. | |
| * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_omp_for_iterator | |
| caller. | |
| (tsubst_stmt) <case OMP_FOR>: For flag_range_for_ext_temps if there | |
| are any range fors in the loop nest, add push_stmt_list starting | |
| before the initializations, pop_stmt_list it after the body and wrap | |
| into CLEANUP_POINT_EXPR. Change DECL_NAME of range for temps from | |
| NULL to for_range_identifier. | |
| 2024-09-24 Nina Dinka Ranns <dinka.ranns@googlemail.com> | |
| PR c++/116490 | |
| * contracts.cc (build_contract_condition_function): added | |
| a check for comdat group of the guarded function. If set, | |
| the condition check function is added to the same comdat | |
| group. | |
| 2024-09-24 Tobias Burnus <tburnus@baylibre.com> | |
| * parser.cc (cp_parser_omp_requires): Handle self_maps clause. | |
| 2024-09-23 Marek Polacek <polacek@redhat.com> | |
| PR c++/116798 | |
| * parser.cc (cp_parser_parameter_declaration): Detect an explicit | |
| object parameter in a requires expression. | |
| 2024-09-23 Simon Martin <simon@nasilyan.com> | |
| PR c++/109790 | |
| PR c++/100632 | |
| * mangle.cc (write_member_name): Handle members whose type is an | |
| anonymous union member. Write missing "on" marker for operators | |
| when ABI version is at least 16. | |
| 2024-09-23 Simon Martin <simon@nasilyan.com> | |
| PR c++/116722 | |
| * constexpr.cc (cxx_bind_parameters_in_call): Leave early for | |
| {con,de}structors of classes with virtual bases. | |
| 2024-09-20 David Malcolm <dmalcolm@redhat.com> | |
| PR other/116613 | |
| * cp-tree.h (cxx_print_error_function): Convert first param | |
| from diagnostic_context * to diagnostic_text_output_format &. | |
| * error.cc: Include "diagnostic-format-text.h". | |
| (cxx_initialize_diagnostics): Update for renamings. | |
| (cxx_print_error_function): Convert first param from | |
| diagnostic_context * to diagnostic_text_output_format & and update | |
| accordingly | |
| (cp_diagnostic_starter): Rename to... | |
| (cp_diagnostic_text_starter): ...this. Convert first | |
| param from diagnostic_context * to diagnostic_text_output_format & | |
| and update accordingly. | |
| (cp_print_error_function): Likewise. | |
| (print_instantiation_full_context): Likewise. | |
| (print_instantiation_partial_context_line): Likewise. | |
| (print_instantiation_partial_context): Likewise. | |
| (maybe_print_instantiation_context): Likewise. | |
| (maybe_print_constexpr_context): Likewise. | |
| (print_location): Likewise. | |
| (print_constrained_decl_info): Likewise. | |
| (print_concept_check_info): Likewise. | |
| (print_constraint_context_head): Likewise. | |
| (print_requires_expression_info): Likewise. | |
| (maybe_print_single_constraint_context): Likewise. | |
| 2024-09-20 Patrick Palka <ppalka@redhat.com> | |
| DR 2789 | |
| * call.cc (cand_parms_match): Check for matching class contexts | |
| even in the reversed case. | |
| 2024-09-20 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116492 | |
| DR 2789 | |
| * call.cc (object_parms_correspond): Remove. | |
| (cand_parms_match): Return false for member functions that come | |
| from different classes. Adjust call to object_parms_correspond. | |
| (joust): Update comment for the non-template "more constrained" | |
| case. | |
| 2024-09-20 Patrick Palka <ppalka@redhat.com> | |
| DR 2273 | |
| * call.cc (joust): Restrict inheritedness tiebreaker to | |
| constructors. | |
| 2024-09-20 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (coro_build_artificial_var_with_dve): New. | |
| (coro_build_and_push_artificial_var): New. | |
| (coro_build_and_push_artificial_var_with_dve): New. | |
| (analyze_fn_parms): Ensure that frame entries cannot clash | |
| with local variables. | |
| (build_coroutine_frame_delete_expr): Amend comment. | |
| (cp_coroutine_transform::build_ramp_function): Rework to | |
| avoid manual management of variables and scopes. | |
| 2024-09-19 Marek Polacek <polacek@redhat.com> | |
| PR c++/116162 | |
| * class.cc (check_bases_and_members): Don't set DECL_DELETED_FN here, | |
| leave it to defaulted_late_check. | |
| * cp-tree.h (maybe_delete_defaulted_fn): Declare. | |
| (defaulted_late_check): Add a tristate parameter. | |
| * method.cc (maybe_delete_defaulted_fn): New. | |
| (defaulted_late_check): Add a tristate parameter. Call | |
| maybe_delete_defaulted_fn instead of giving an error. | |
| 2024-09-18 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116714 | |
| PR c++/107390 | |
| * pt.cc (dependent_opaque_alias_p): Also return true for a | |
| decltype(lambda) alias. | |
| 2024-09-18 Jason Merrill <jason@redhat.com> | |
| * call.cc (do_warn_dangling_reference): Return temporary | |
| instead of the call it's passed to. | |
| (maybe_warn_dangling_reference): Adjust diagnostic. | |
| 2024-09-18 Jason Merrill <jason@redhat.com> | |
| PR c++/115361 | |
| * call.cc (do_warn_dangling_reference): Check is_empty_class. | |
| 2024-09-17 Marek Polacek <polacek@redhat.com> | |
| PR c++/116741 | |
| * constexpr.cc (cxx_eval_constant_expression) <case CONVERT_EXPR>: If | |
| the result of build_fold_indirect_ref is a COMPONENT_REF, use its op1. | |
| Check DECL_P before calling inform. | |
| 2024-09-17 Marek Polacek <polacek@redhat.com> | |
| PR c++/116676 | |
| * constexpr.cc (maybe_warn_about_constant_value): Check DECL_NAME. | |
| 2024-09-15 Jason Merrill <jason@redhat.com> | |
| * parser.cc (cp_parser_unary_expression) [RID_EXTENSION]: Also | |
| suppress -Wconditionally-supported. | |
| 2024-09-15 Jason Merrill <jason@redhat.com> | |
| * call.cc (convert_like_internal) [ck_user]: Use iloc_sentinel. | |
| 2024-09-15 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/115905 | |
| * coroutines.cc (struct coro_aw_data): Add a member for the | |
| restart dispatch label. | |
| (expand_one_await_expression): Rework to modernise and to | |
| handle the boolean await_suspend() case. | |
| (build_actor_fn): Rework the dispatcher and allow for a jump | |
| back to the dispatcher. | |
| 2024-09-14 Jason Merrill <jason@redhat.com> | |
| * tree.cc (handle_init_priority_attribute): Check | |
| in_system_header_at. | |
| 2024-09-14 Simon Martin <simon@nasilyan.com> | |
| PR c++/116681 | |
| * name-lookup.cc (qualified_namespace_lookup): Use an | |
| auto_cond_timer instead of using timevar_start and timevar_stop. | |
| 2024-09-13 Jason Merrill <jason@redhat.com> | |
| PR c++/116696 | |
| * constexpr.cc (explain_invalid_constexpr_fn): When | |
| -fimplicit-constexpr, also explain inline functions, and point out | |
| non-inline functions. | |
| 2024-09-13 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/116678 | |
| * optimize.cc: Include decl.h. | |
| (maybe_thunk_body): Temporarily change deprecated_state to | |
| UNAVAILABLE_DEPRECATED_SUPPRESS. | |
| 2024-09-12 Jonathan Wakely <jwakely@redhat.com> | |
| PR c++/116673 | |
| * semantics.cc (finish_builtin_launder): Diagnose function | |
| pointers and cv void pointers. | |
| 2024-09-12 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116418 | |
| * tree.cc (strip_typedefs_expr) <case STATEMENT_LIST>: Replace | |
| this error path with ... | |
| <case STMT_EXPR>: ... this, returning the original tree. | |
| 2024-09-12 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/116636 | |
| * method.cc: Include decl.h. | |
| (use_thunk): Temporarily change deprecated_state to | |
| UNAVAILABLE_DEPRECATED_SUPPRESS. | |
| 2024-09-12 Marek Polacek <polacek@redhat.com> | |
| PR c++/96097 | |
| * pt.cc (coerce_template_template_parm): Increment | |
| processing_template_decl before calling tsubst. | |
| 2024-09-12 Simon Martin <simon@nasilyan.com> | |
| PR c++/116323 | |
| * search.cc (get_parent_with_private_access): Only call access_in_type | |
| for RECORD_OR_UNION_TYPE_P base BINFOs. | |
| 2024-09-12 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116496 | |
| * module.cc (trees_in::decl_value): Don't call | |
| set_defining_module_for_partial_spec here. | |
| (depset::hash::add_partial_entities): Clarity assertions. | |
| * pt.cc (add_mergeable_specialization): Always call | |
| set_defining_module_for_partial_spec when adding a partial spec. | |
| 2024-09-11 Alex Coplan <alex.coplan@arm.com> | |
| PR libstdc++/116140 | |
| * semantics.cc (anotate_saver): New. Use it ... | |
| (maybe_convert_cond): ... here, to ensure any ANNOTATE_EXPRs | |
| remain the outermost expression(s) of the condition. | |
| 2024-09-10 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/116449 | |
| * typeck.cc (get_member_function_from_ptrfunc): Use save_expr | |
| on instance_ptr and function even if it doesn't have side-effects, | |
| as long as it isn't a decl. | |
| 2024-09-10 Marek Polacek <polacek@redhat.com> | |
| PR c++/116369 | |
| * call.cc (set_up_extended_ref_temp): Don't mark a temporary | |
| TREE_READONLY if its type is TYPE_HAS_MUTABLE_P. | |
| 2024-09-09 David Malcolm <dmalcolm@redhat.com> | |
| * constexpr.cc (constexpr_error): Update for renaming of | |
| diagnostic_info field. | |
| * cp-tree.h (pedwarn_cxx98): Use "diagnostic_option_id" rather | |
| than "int". | |
| * error.cc (cp_adjust_diagnostic_info): Update for renaming of | |
| diagnostic_info field. | |
| (pedwarn_cxx98): Use "diagnostic_option_id option_id" rather than | |
| "int opt". Update for renaming of diagnostic_info field. | |
| (diagnostic_set_info): Likewise. | |
| 2024-09-09 David Malcolm <dmalcolm@redhat.com> | |
| PR other/116613 | |
| * error.cc (cxx_initialize_diagnostics): Rename | |
| diagnostic_context's "printer" field to "m_printer". | |
| (cxx_print_error_function): Likewise. | |
| (cp_diagnostic_starter): Likewise. | |
| (cp_print_error_function): Likewise. | |
| (print_instantiation_full_context): Likewise. | |
| (print_instantiation_partial_context_line): Likewise. | |
| (maybe_print_constexpr_context): Likewise. | |
| (print_location): Likewise. | |
| (print_constrained_decl_info): Likewise. | |
| (print_concept_check_info): Likewise. | |
| (print_constraint_context_head): Likewise. | |
| (print_requires_expression_info): Likewise. | |
| * module.cc (noisy_p): Likewise. | |
| 2024-09-07 Jason Merrill <jason@redhat.com> | |
| * decl.cc (check_redeclaration_exception_specification): Remove | |
| OPT_Wsystem_headers from pedwarn when the old declaration is | |
| in a system header. Also check std namespace. | |
| 2024-09-07 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116567 | |
| * pt.cc (coerce_template_parms): Set tf_partial when substituting | |
| into a default template argument in a template context. | |
| (build_extra_args): Set TREE_STATIC on the deferred args if this | |
| is a partial substitution. | |
| (add_extra_args): Check TREE_STATIC instead of dependence of args. | |
| Adjust merging behavior in that case. | |
| (tsubst_lammda_expr): Check for tf_partial instead of dependence | |
| of args when determining whether to defer substitution. | |
| (tsubst_expr) <case LAMBDA_EXPR>: Remove tf_partial early exit. | |
| 2024-09-06 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/115769 | |
| * cp-tree.h: Partially implement CWG 2867 - Order of initialization | |
| for structured bindings. | |
| (cp_finish_decomp): Add TEST_P argument defaulted to false. | |
| * decl.cc (initialize_local_var): Add DECOMP argument, if true, | |
| don't build cleanup and temporarily override stmts_are_full_exprs_p | |
| to 0 rather than 1. Formatting fix. | |
| (cp_finish_decl): Invoke cp_finish_decomp for structured bindings | |
| here, first with test_p. For automatic structured binding bases | |
| if the test cp_finish_decomp returned true wrap the initialization | |
| together with what non-test cp_finish_decomp emits with a | |
| CLEANUP_POINT_EXPR, and if there are any CLEANUP_STMTs needed, emit | |
| them around the whole CLEANUP_POINT_EXPR with guard variables for the | |
| cleanups. Call cp_finish_decomp using RAII if not called with | |
| decomp != NULL otherwise. | |
| (cp_finish_decomp): Add TEST_P argument, change return type from | |
| void to bool, if TEST_P is true, return true instead of emitting | |
| actual code for the tuple case, otherwise return false. | |
| * parser.cc (cp_convert_range_for): Don't call cp_finish_decomp | |
| after cp_finish_decl. | |
| (cp_parser_decomposition_declaration): Set DECL_DECOMP_BASE | |
| before cp_finish_decl call. Don't call cp_finish_decomp after | |
| cp_finish_decl. | |
| (cp_finish_omp_range_for): Don't call cp_finish_decomp after | |
| cp_finish_decl. | |
| * pt.cc (tsubst_stmt): Likewise. | |
| 2024-09-06 Jason Merrill <jason@redhat.com> | |
| PR c++/46457 | |
| PR c++/81665 | |
| * cp-objcp-common.h (cp_objcp_attribute_table): Add | |
| c_common_clang_attribute_table. | |
| 2024-09-05 Marek Polacek <polacek@redhat.com> | |
| PR c++/116606 | |
| * decl2.cc (mark_vtable_entries): Temporarily override deprecated_state to | |
| UNAVAILABLE_DEPRECATED_SUPPRESS. Remove a warning_sentinel. | |
| 2024-09-05 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc | |
| (cp_coroutine_transform::build_ramp_function): Separate the | |
| build of promise constructor and destructor. When evaluating | |
| the constructor, check that build_special_member_call returns | |
| an expression with side effects before adding it. | |
| 2024-09-05 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113063 | |
| * name-lookup.cc (local_state_t): Clear and restore | |
| cp_noexcept_operand as well. | |
| 2024-09-05 Marek Polacek <polacek@redhat.com> | |
| PR c++/116239 | |
| * cp-tree.h (validate_constexpr_redeclaration): Declare. | |
| * decl.cc (validate_constexpr_redeclaration): No longer static. | |
| * name-lookup.cc (push_local_extern_decl_alias): Call | |
| validate_constexpr_redeclaration. | |
| 2024-09-05 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * class.cc (add_method): Add missing auto_diagnostic_group. | |
| (handle_using_decl): Likewise. | |
| (maybe_warn_about_overly_private_class): Likewise. | |
| (check_field_decl): Likewise. | |
| (check_field_decls): Likewise. | |
| (resolve_address_of_overloaded_function): Likewise. | |
| (note_name_declared_in_class): Likewise. | |
| * constraint.cc (associate_classtype_constraints): Likewise. | |
| (diagnose_trait_expr): Clean up whitespace. | |
| * coroutines.cc (find_coro_traits_template_decl): Add missing | |
| auto_diagnostic_group. | |
| (coro_promise_type_found_p): Likewise. | |
| (coro_diagnose_throwing_fn): Likewise. | |
| * cvt.cc (build_expr_type_conversion): Likewise. | |
| * decl.cc (validate_constexpr_redeclaration): Likewise. | |
| (duplicate_function_template_decls): Likewise. | |
| (duplicate_decls): Likewise. | |
| (lookup_label_1): Likewise. | |
| (check_previous_goto_1): Likewise. | |
| (check_goto_1): Likewise. | |
| (make_typename_type): Likewise. | |
| (make_unbound_class_template): Likewise. | |
| (check_tag_decl): Likewise. | |
| (start_decl): Likewise. | |
| (maybe_commonize_var): Likewise. | |
| (check_for_uninitialized_const_var): Likewise. | |
| (reshape_init_class): Likewise. | |
| (check_initializer): Likewise. | |
| (cp_finish_decl): Likewise. | |
| (find_decomp_class_base): Likewise. | |
| (cp_finish_decomp): Likewise. | |
| (expand_static_init): Likewise. | |
| (grokfndecl): Likewise. | |
| (grokdeclarator): Likewise. | |
| (check_elaborated_type_specifier): Likewise. | |
| (lookup_and_check_tag): Likewise. | |
| (xref_tag): Likewise. | |
| (cxx_simulate_enum_decl): Likewise. | |
| (finish_function): Likewise. | |
| * decl2.cc (check_classfn): Likewise. | |
| (record_mangling): Likewise. | |
| (mark_used): Likewise. | |
| * error.cc (qualified_name_lookup_error): Likewise. | |
| * except.cc (build_throw): Likewise. | |
| * init.cc (get_nsdmi): Likewise. | |
| (diagnose_uninitialized_cst_or_ref_member_1): Likewise. | |
| (warn_placement_new_too_small): Likewise. | |
| (build_new_1): Likewise. | |
| (build_vec_delete_1): Likewise. | |
| (build_delete): Likewise. | |
| * lambda.cc (add_capture): Likewise. | |
| (add_default_capture): Likewise. | |
| * lex.cc (unqualified_fn_lookup_error): Likewise. | |
| * method.cc (synthesize_method): Likewise. | |
| (defaulted_late_check): Likewise. | |
| * module.cc (trees_in::is_matching_decl): Likewise. | |
| (trees_in::read_enum_def): Likewise. | |
| (module_state::check_not_purview): Likewise. | |
| (module_state::deferred_macro): Likewise. | |
| (module_state::read_config): Likewise. | |
| (module_state::check_read): Likewise. | |
| (declare_module): Likewise. | |
| (init_modules): Likewise. | |
| * name-lookup.cc (diagnose_name_conflict): Likewise. | |
| (lookup_using_decl): Likewise. | |
| (set_decl_namespace): Likewise. | |
| (finish_using_directive): Likewise. | |
| (push_namespace): Likewise. | |
| (add_imported_namespace): Likewise. | |
| * parser.cc (cp_parser_check_for_definition_in_return_type): Likewise. | |
| (cp_parser_userdef_numeric_literal): Likewise. | |
| (cp_parser_nested_name_specifier_opt): Likewise. | |
| (cp_parser_new_expression): Likewise. | |
| (cp_parser_binary_expression): Likewise. | |
| (cp_parser_lambda_introducer): Likewise. | |
| (cp_parser_module_declaration): Likewise. | |
| (cp_parser_import_declaration): Likewise, removing gotos to | |
| support this. | |
| (cp_parser_declaration): Add missing auto_diagnostic_group. | |
| (cp_parser_decl_specifier_seq): Likewise. | |
| (cp_parser_template_id): Likewise. | |
| (cp_parser_template_name): Likewise. | |
| (cp_parser_explicit_specialization): Likewise. | |
| (cp_parser_placeholder_type_specifier): Likewise. | |
| (cp_parser_elaborated_type_specifier): Likewise. | |
| (cp_parser_enum_specifier): Likewise. | |
| (cp_parser_asm_definition): Likewise. | |
| (cp_parser_init_declarator): Likewise. | |
| (cp_parser_direct_declarator): Likewise. | |
| (cp_parser_class_head): Likewise. | |
| (cp_parser_member_declaration): Likewise. | |
| (cp_parser_lookup_name): Likewise. | |
| (cp_parser_explicit_template_declaration): Likewise. | |
| (cp_parser_check_class_key): Likewise. | |
| * pt.cc (maybe_process_partial_specialization): Likewise. | |
| (determine_specialization): Likewise. | |
| (check_for_bare_parameter_packs): Likewise. | |
| (check_template_shadow): Likewise. | |
| (process_partial_specialization): Likewise. | |
| (push_template_decl): Likewise. | |
| (redeclare_class_template): Likewise. | |
| (convert_nontype_argument_function): Likewise. | |
| (check_valid_ptrmem_cst_expr): Likewise. | |
| (convert_nontype_argument): Likewise. | |
| (convert_template_argument): Likewise. | |
| (coerce_template_parms): Likewise. | |
| (tsubst_qualified_id): Likewise. | |
| (tsubst_expr): Likewise. | |
| (most_specialized_partial_spec): Likewise. | |
| (do_class_deduction): Likewise. | |
| (do_auto_deduction): Likewise. | |
| * search.cc (lookup_member): Likewise. | |
| * semantics.cc (finish_non_static_data_member): Likewise. | |
| (process_outer_var_ref): Likewise. | |
| (finish_id_expression_1): Likewise. | |
| (finish_offsetof): Likewise. | |
| (omp_reduction_lookup): Likewise. | |
| (finish_omp_clauses): Likewise. | |
| * tree.cc (check_abi_tag_redeclaration): Likewise. | |
| (check_abi_tag_args): Likewise. | |
| * typeck.cc (invalid_nonstatic_memfn_p): Likewise. | |
| (complain_about_unrecognized_member): Likewise. | |
| (finish_class_member_access_expr): Likewise. | |
| (error_args_num): Likewise. | |
| (warn_for_null_address): Likewise. | |
| (cp_build_binary_op): Likewise. | |
| (build_x_unary_op): Likewise. | |
| (cp_build_unary_op): Likewise. | |
| (build_static_cast): Likewise. | |
| (cp_build_modify_expr): Likewise. | |
| (get_delta_difference): Likewise. | |
| (convert_for_assignment): Widen scope of auto_diagnostic_group. | |
| (check_return_expr): Add missing auto_diagnostic_group. | |
| * typeck2.cc (cxx_incomplete_type_diagnostic): Likewise. | |
| 2024-09-04 Marek Polacek <polacek@redhat.com> | |
| * pt.cc (coerce_template_template_parm): Return bool instead of int. | |
| 2024-09-04 Marek Polacek <polacek@redhat.com> | |
| PR c++/113108 | |
| * pt.cc (resolve_overloaded_unification): Call | |
| maybe_instantiate_noexcept. | |
| 2024-09-03 Jason Merrill <jason@redhat.com> | |
| * parser.cc (cp_nth_tokens_can_be_std_attribute_p): Don't check | |
| cxx_dialect. | |
| * error.cc (maybe_warn_cpp0x): Only complain about C++11 attributes | |
| if pedantic. | |
| 2024-09-03 David Malcolm <dmalcolm@redhat.com> | |
| * error.cc (type_to_string): Prefix all output_buffer fields with | |
| "m_". | |
| (append_formatted_chunk): Likewise. Rename "chunk_info" to | |
| "pp_formatted_chunks" and field cur_chunk_array with | |
| m_cur_formatted_chunks. | |
| 2024-09-02 Richard Sandiford <richard.sandiford@arm.com> | |
| * pt.cc (tsubst_stmt): Rename ASM_INPUT_P to ASM_BASIC_P. | |
| * parser.cc (cp_parser_asm_definition): Likewise. | |
| 2024-08-31 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (coro_build_frame_access_expr): New. | |
| (transform_await_expr): Use coro_build_frame_access_expr. | |
| (transform_local_var_uses): Likewise. | |
| (build_actor_fn): Likewise. | |
| (build_destroy_fn): Likewise. | |
| (cp_coroutine_transform::build_ramp_function): Likewise. | |
| 2024-08-30 Jason Merrill <jason@redhat.com> | |
| * decl2.cc (c_parse_final_cleanups): Also check | |
| DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION. | |
| 2024-08-30 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * parser.cc (make_array_declarator): Add STD_ATTRS argument, set | |
| declarator->std_attributes to it. | |
| (cp_parser_new_type_id): Warn on non-ignored std_attributes on the | |
| array declarator which is being omitted. | |
| (cp_parser_direct_new_declarator): Parse standard attributes after | |
| closing square bracket, pass it to make_array_declarator. | |
| (cp_parser_direct_declarator): Pass std_attrs to make_array_declarator | |
| instead of setting declarator->std_attributes manually. | |
| 2024-08-29 David Malcolm <dmalcolm@redhat.com> | |
| * error.cc: Include "make-unique.h". | |
| (deferred_printed_type::m_buffer_ptr): Replace with... | |
| (deferred_printed_type::m_printed_text): ...this and... | |
| (deferred_printed_type::m_token_list): ...this. | |
| (deferred_printed_type::deferred_printed_type): Update ctors for | |
| above changes. | |
| (deferred_printed_type::set_text_for_token_list): New. | |
| (append_formatted_chunk): Pass chunk_obstack to | |
| append_formatted_chunk. | |
| (add_quotes): Delete. | |
| (cxx_format_postprocessor::handle): Reimplement to call | |
| deferred_printed_type::set_text_for_token_list, rather than store | |
| buffer pointers. | |
| (defer_phase_2_of_type_diff): Replace param "buffer_ptr" | |
| with "formatted_token_list". Reimplement by storing | |
| a pointer to formatted_token_list so that the postprocessor can | |
| put its text there. | |
| (cp_printer): Convert param "buffer_ptr" to | |
| "formatted_token_list". Update calls to | |
| defer_phase_2_of_type_diff accordingly. | |
| 2024-08-29 David Malcolm <dmalcolm@redhat.com> | |
| * error.cc: Include "pretty-print-format-impl.h". | |
| 2024-08-28 Marek Polacek <polacek@redhat.com> | |
| PR c++/116476 | |
| * call.cc (maybe_init_list_as_array): Try convert_like and see if it | |
| worked. | |
| 2024-08-28 Marek Polacek <polacek@redhat.com> | |
| PR c++/116424 | |
| * typeck2.cc (process_init_constructor_record): Move the clearing of | |
| TARGET_EXPR_ELIDING_P down. | |
| 2024-08-28 Jason Merrill <jason@redhat.com> | |
| * parser.cc (cp_parser_simple_type_specifier): Use | |
| -Wc++20-extensions for auto parameter pedwarn. | |
| * pt.cc (do_decl_instantiation, do_type_instantiation): Use | |
| -Wc++11-extensions for 'extern template'. | |
| 2024-08-27 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/109867 | |
| * coroutines.cc (expand_one_await_expression): Replace uses of | |
| build_case_label with finish_case_label. | |
| (build_actor_fn): Ditto. | |
| (create_anon_label_with_ctx): Remove now-unused function. | |
| 2024-08-27 Simon Martin <simon@nasilyan.com> | |
| PR c++/105483 | |
| * parser.cc (cp_parser_expression_statement): Use %qE instead of | |
| incorrect %<%T::%D%>. Skip to end of statement and return | |
| error_mark_node in case of error. | |
| 2024-08-27 Jonathan Wakely <jwakely@redhat.com> | |
| * cxxapi-data.csv: Add C++20 and C++23 names from <chrono>, | |
| <format>, <generator>, <iterator>, <print>, and <stdfloat>. | |
| Set cxx11 dialect for std::ignore in <tuple>. Uncomment | |
| atomic_flag functions from <atomic>. | |
| * std-name-hint.gperf: Regenerate. | |
| * std-name-hint.h: Regenerate. | |
| 2024-08-27 Jonathan Wakely <jwakely@redhat.com> | |
| * gen-cxxapi-file.py: Fix copyright dates in generated output. | |
| 2024-08-27 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/116482 | |
| * coroutines.cc | |
| (coro_build_actor_or_destroy_function): Make the parameter | |
| decls DECL_ARTIFICIAL. | |
| 2024-08-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/99243 | |
| * module.cc (module_state::set_filename): Handle repeated calls | |
| to 'set_filename' as long as the CMI path matches. | |
| (maybe_translate_include): Adjust comment. | |
| 2024-08-27 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/110980 | |
| * module.cc (maybe_translate_include): Clean up. | |
| 2024-08-26 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/113457 | |
| * coroutines.cc (struct coroutine_info): Add integer field | |
| awaitable_number. This is a counter used for assigning unique | |
| names to awaitable temporaries. | |
| (get_awaitable_var): Use awaitable_number from coroutine_info | |
| instead of the static int awn. | |
| 2024-08-26 Simon Martin <simon@nasilyan.com> | |
| PR c++/115716 | |
| * pt.cc (maybe_process_partial_specialization): Call | |
| redeclare_class_template. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/110635 | |
| * coroutines.cc | |
| (cp_coroutine_transform::wrap_original_function_body): Look through | |
| initial await target expressions to find the actual co_await_expr | |
| that we need to update. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/102051 | |
| * coroutines.cc | |
| (cp_coroutine_transform::build_ramp_function): Handle | |
| "throwing_cleanup" here instead of ... | |
| (cp_coroutine_transform::apply_transforms): ... here. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/115908 | |
| * coroutines.cc | |
| (cp_coroutine_transform::build_ramp_function): Rework the return | |
| value initialisation to initialise the return slot always from | |
| get_return_object, even if that implies carrying out conversions | |
| to do so. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/109682 | |
| * coroutines.cc | |
| (cp_coroutine_transform::build_ramp_function): Allow for cases where | |
| get_return_on_allocation_fail has a type convertible to the ramp | |
| return type. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/100476 | |
| * coroutines.cc | |
| (cp_coroutine_transform::build_ramp_function): Remove special | |
| handling of void get_return_object expressions. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/113773 | |
| * coroutines.cc | |
| (cp_coroutine_transform::build_ramp_function): Only cleanup the | |
| frame state on exceptions that occur before the initial await | |
| resume has begun. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| * call.cc (build_op_delete_call_1): Renamed and added a param | |
| to allow the caller to prioritize two argument usual deleters. | |
| (build_op_delete_call): New. | |
| (build_coroutine_op_delete_call): New. | |
| * coroutines.cc (coro_get_frame_dtor): Rename... | |
| (build_coroutine_frame_delete_expr):... to this; simplify to | |
| use build_op_delete_call for all cases. | |
| (build_actor_fn): Use revised frame delete function. | |
| (build_coroutine_frame_alloc_expr): New. | |
| (cp_coroutine_transform::complete_ramp_function): Rename... | |
| (cp_coroutine_transform::build_ramp_function): ... to this. | |
| Reorder code to carry out checks for prerequisites before the | |
| codegen. Split out the allocation/delete code. | |
| (cp_coroutine_transform::apply_transforms): Use revised name. | |
| * coroutines.h: Rename function. | |
| * cp-tree.h (build_coroutine_op_delete_call): New. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| Arsen Arsenović <arsen@aarsen.me> | |
| * coroutines.cc (struct suspend_point_info, struct param_info, | |
| struct local_var_info, struct susp_frame_data, | |
| struct local_vars_frame_data): Move to coroutines.h. | |
| (build_actor_fn): Use start/finish function APIs. | |
| (build_destroy_fn): Likewise. | |
| (coro_build_actor_or_destroy_function): No longer mark the | |
| actor / destroyer as DECL_COROUTINE_P. | |
| (coro_rewrite_function_body): Use class members. | |
| (cp_coroutine_transform::wrap_original_function_body): Likewise. | |
| (build_ramp_function): Replace by... | |
| (cp_coroutine_transform::complete_ramp_function): ...this. | |
| (cp_coroutine_transform::cp_coroutine_transform): New. | |
| (cp_coroutine_transform::~cp_coroutine_transform): New | |
| (morph_fn_to_coro): Replace by... | |
| (cp_coroutine_transform::apply_transforms): ...this. | |
| (cp_coroutine_transform::finish_transforms): New. | |
| * cp-tree.h (morph_fn_to_coro): Remove. | |
| * decl.cc (emit_coro_helper): Remove. | |
| (finish_function): Revise handling of coroutine transforms. | |
| * coroutines.h: New file. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (build_actor_fn): Arrange to apply any | |
| required parameter copy DTORs in reverse order to their | |
| creation. | |
| (coro_rewrite_function_body): Handle revised param uses. | |
| (morph_fn_to_coro): Split the ramp function completion | |
| into a separate function. | |
| (build_ramp_function): New. | |
| 2024-08-24 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (build_co_await): Simplify checks for the cases that | |
| we need to materialise an awaiter. | |
| 2024-08-21 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (split_coroutine_body_from_ramp): Check | |
| that the binding level is as expected before attempting | |
| to outline the function body. | |
| 2024-08-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (module_state::write_begin): Return a boolean to | |
| indicate errors rather than just doing set_error(). | |
| (finish_module_processing): Prevent emission of unnecessary | |
| errors; only indicate module writing occurred if write_begin | |
| succeeds. | |
| 2024-08-20 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * decl.cc (grokdeclarator): Apply declarator->std_attributes | |
| for cdk_array to type, rather than chaining it to returned_attrs. | |
| 2024-08-20 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * parser.cc (cp_parser_base_specifier): Parse standard attributes | |
| at the start and emit a warning if there are any non-ignored ones. | |
| 2024-08-20 Franciszek Witt <franek.witt@gmail.com> | |
| PR c++/101232 | |
| * parser.cc (cp_parser_postfix_expression): Commit to the | |
| parse in case we know its either a cast or invalid syntax. | |
| (cp_parser_braced_list): Add a heuristic to inform about | |
| missing comma or operator. | |
| 2024-08-20 Patrick Palka <ppalka@redhat.com> | |
| PR c++/101463 | |
| * pt.cc (type_unification_real): Directly look for undeduced | |
| parameters in the default argument instead of doing a trial | |
| substitution. | |
| 2024-08-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115020 | |
| * module.cc (has_definition): Only force writing definitions for | |
| header_module_p. | |
| 2024-08-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116403 | |
| * pt.cc (deduction_guides_for): Use ANY_REACHABLE for lookup of | |
| deduction guides. | |
| * module.cc (depset::hash::add_deduction_guides): Likewise. | |
| (module_state::write_cluster): No longer override deduction | |
| guides as exported. | |
| * name-lookup.cc (name_lookup::search_namespace_only): Ignore | |
| visibility when LOOK_want::ANY_REACHABLE is specified. | |
| (check_module_override): Ignore visibility when checking for | |
| ambiguating deduction guides. | |
| * name-lookup.h (LOOK_want): New flag 'ANY_REACHABLE'. | |
| 2024-08-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116382 | |
| * cp-tree.h (get_template_parm_object): Add check_init param. | |
| * module.cc (trees_in::tree_node): Pass check_init=false when | |
| building NTTPs. | |
| * pt.cc (get_template_parm_object): Prevent cp_finish_decl from | |
| validating the initializer when check_init=false. | |
| 2024-08-20 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/116364 | |
| * cp-tree.h (get_mergeable_specialization_flags): Adjust | |
| signature. | |
| * module.cc (trees_out::decl_value): Indicate whether this is a | |
| type or decl specialisation. | |
| * pt.cc (get_mergeable_specialization_flags): Match against the | |
| type of a non-decl specialisation. | |
| (add_mergeable_specialization): Use the already calculated spec | |
| instead of always adding decl to DECL_TEMPLATE_INSTANTIATIONS. | |
| 2024-08-19 Marek Polacek <polacek@redhat.com> | |
| PR c++/115657 | |
| * decl.cc (build_enumerator): Call maybe_fold_non_dependent_expr | |
| instead of fold_non_dependent_expr. | |
| 2024-08-19 Marek Polacek <polacek@redhat.com> | |
| PR c++/116384 | |
| * pt.cc (tsubst_expr) <case IMPLICIT_CONV_EXPR>: Bail if tsubst | |
| returns error_mark_node. | |
| 2024-08-16 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/110345 | |
| * parser.cc (cp_parser_member_declaration): Call maybe_warn_extra_semi | |
| only if it is empty-declaration, if there are some tokens like | |
| attribute, pedwarn that the declaration doesn't declare anything. | |
| 2024-08-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116320 | |
| * semantics.cc (check_accessibility_of_qualified_id): Try | |
| currently_open_class when using the object type as the | |
| effective qualifying type. | |
| 2024-08-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116327 | |
| PR c++/104981 | |
| PR c++/115550 | |
| * coroutines.cc (morph_fn_to_coro): Use build_fold_indirect_ref | |
| instead of cp_build_fold_indirect_ref. | |
| 2024-08-14 Marek Polacek <polacek@redhat.com> | |
| PR c++/116015 | |
| * call.cc (convert_for_arg_passing): Don't set_target_expr_eliding | |
| when the TARGET_EXPR initializer is a CONSTRUCTOR. | |
| 2024-08-10 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116276 | |
| * call.cc (joust): Implement P2582R1 inherited vs non-inherited | |
| guide tiebreaker. | |
| * cp-tree.h (lang_decl_fn::context): Document usage in | |
| deduction_guide_p FUNCTION_DECLs. | |
| (inherited_guide_p): Declare. | |
| * pt.cc (inherited_guide_p): Define. | |
| (set_inherited_guide_context): Define. | |
| (alias_ctad_tweaks): Use set_inherited_guide_context. | |
| (inherited_ctad_tweaks): Recognize some inherited constructors | |
| whose scope is a TYPENAME_TYPE. | |
| (ctor_deduction_guides_for): For C++23 inherited CTAD, iterate | |
| over TYPE_FIELDS instead of CLASSTYPE_CONSTRUCTORS to recognize | |
| all inherited constructors. | |
| 2024-08-10 Patrick Palka <ppalka@redhat.com> | |
| * pt.cc (tsubst_friend_class): Simplify depth comparison test | |
| in the redeclaration code path to | |
| DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P. Clear the flag after | |
| partial instantiation here ... | |
| (tsubst_template_decl): ... instead of here. | |
| 2024-08-10 Patrick Palka <ppalka@redhat.com> | |
| * cp-tree.h (get_identifier_kind): Define. | |
| (IDENTIFIER_KEYWORD_P): Redefine in terms of get_identifier_kind. | |
| (IDENTIFIER_CDTOR_P): Likewise. | |
| (IDENTIFIER_CTOR_P): Likewise. | |
| (IDENTIFIER_DTOR_P): Likewise. | |
| (IDENTIFIER_ANY_OP_P): Likewise. | |
| (IDENTIFIER_OVL_OP_P): Likewise. | |
| (IDENTIFIER_ASSIGN_OP_P): Likewise. | |
| (IDENTIFIER_CONV_OP_P): Likewise. | |
| (IDENTIFIER_TRAIT_P): Likewise. | |
| * parser.cc (cp_lexer_peek_trait): Mark IDENTIFIER_TRAIT_P | |
| check UNLIKELY. | |
| 2024-08-09 Simon Martin <simon@nasilyan.com> | |
| PR c++/115806 | |
| * decl.cc (start_enum): Only set OPAQUE_ENUM_P and | |
| ENUM_FIXED_UNDERLYING_TYPE_P when pushing a new tag. | |
| 2024-08-08 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115062 | |
| * class.cc (fixup_type_variants): Propagate TREE_ADDRESSABLE. | |
| (finish_struct_bits): Cleanup now that TREE_ADDRESSABLE is | |
| propagated by fixup_type_variants. | |
| 2024-08-08 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (module_state::read_cluster): Assume header module | |
| declarations will require GM merging. | |
| 2024-08-08 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115801 | |
| * pt.cc (tsubst_friend_class): Return the type immediately when | |
| no tsubsting or name lookup is required. | |
| 2024-08-08 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114950 | |
| * module.cc (trees_out::decl_value): Stream bit indicating | |
| imported temploid friends early. | |
| (trees_in::decl_value): Use this bit with key_mergeable. | |
| (trees_in::key_mergeable): Allow merging attached declarations | |
| if they're imported temploid friends (which must be namespace | |
| scope). | |
| (module_state::read_cluster): Check for GM entities that may | |
| require merging even when importing from partitions. | |
| * name-lookup.cc (enum binding_slots): Adjust comment. | |
| (get_fixed_binding_slot): Always create partition slot. | |
| (name_lookup::search_namespace_only): Support binding vectors | |
| with both partition and GM entities to dedup. | |
| (walk_module_binding): Likewise. | |
| (name_lookup::adl_namespace_fns): Likewise. | |
| (set_module_binding): Likewise. | |
| (check_module_override): Use attachment of the decl when | |
| checking overrides rather than named_module_p. | |
| (lookup_imported_hidden_friend): Use partition slot for finding | |
| mergeable template bindings. | |
| * name-lookup.h (set_module_binding): Split mod_glob_flag | |
| parameter into separate global_p and partition_p params. | |
| 2024-08-08 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (trees_in::read_enum_def): Clarify error. | |
| 2024-08-07 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116064 | |
| * error.cc (get_current_template): If the current scope is | |
| a partial specialization, return it instead of the primary | |
| template. | |
| * pt.cc (instantiate_class_template): Pass the partial | |
| specialization if any to maybe_diagnose_erroneous_template | |
| instead of the primary template. | |
| 2024-08-07 Julian Brown <julian@codesourcery.com> | |
| Tobias Burnus <tobias@baylibre.com> | |
| * decl2.cc (tree-inline.h): Include. | |
| (static_init_fini_fns): Bump to four entries. Update comment. | |
| (start_objects, start_partial_init_fini_fn): Add 'omp_target' | |
| parameter. Support "declare target" decls. Update forward declaration. | |
| (emit_partial_init_fini_fn): Add 'host_fn' parameter. Return tree for | |
| the created function. Support "declare target". | |
| (OMP_SSDF_IDENTIFIER): New macro. | |
| (partition_vars_for_init_fini): Support partitioning "declare target" | |
| variables also. | |
| (generate_ctor_or_dtor_function): Add 'omp_target' parameter. Support | |
| "declare target" decls. | |
| (c_parse_final_cleanups): Support constructors/destructors on OpenMP | |
| offload targets. | |
| 2024-08-07 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/109126 | |
| * decl.cc (grokvardecl): Implement CWG 2387 - Linkage of | |
| const-qualified variable template. Set TREE_PUBLIC on variable | |
| templates with const qualified types unless static is present. | |
| 2024-08-07 Simon Martin <simon@nasilyan.com> | |
| PR c++/111592 | |
| * call.cc (build_over_call): Only error out if there's a single | |
| parameter of type A in a call to A::A(...). | |
| 2024-08-07 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/116175 | |
| * pt.cc (apply_late_template_attributes): For function/method types | |
| call cp_build_type_attribute_variant on the non-dependent attributes. | |
| (rebuild_function_or_method_type): Add ARGS argument. Use | |
| apply_late_template_attributes rather than | |
| cp_build_type_attribute_variant. | |
| (maybe_rebuild_function_decl_type): Add ARGS argument, pass it to | |
| rebuild_function_or_method_type. | |
| (tsubst_function_decl): Adjust caller. | |
| (tsubst_function_type): Adjust rebuild_function_or_method_type caller. | |
| 2024-08-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115231 | |
| * error.cc (dump_function_decl): Add a space before '->' when | |
| printing deduction guides. | |
| * module.cc (depset::hash::add_binding_entity): Don't create | |
| bindings for guides here, only mark dependencies. | |
| (depset::hash::add_deduction_guides): New. | |
| (depset::hash::find_dependencies): Add deduction guide | |
| dependencies for a class template. | |
| (module_state::write_cluster): Always consider deduction guides | |
| as exported. | |
| * pt.cc (deduction_guides_for): Use 'lkp_iterator' instead of | |
| 'ovl_iterator'. | |
| 2024-08-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * parser.cc (cp_parser_class_head): Clarify error message for | |
| explicit instantiations. | |
| 2024-08-07 Patrick Palka <ppalka@redhat.com> | |
| PR c++/116064 | |
| * cp-tree.h (erroneous_templates_t): Declare. | |
| (erroneous_templates): Declare. | |
| (cp_seen_error): Declare. | |
| (seen_error): #define to cp_seen_error. | |
| * error.cc (get_current_template): Define. | |
| (relaxed_template_errors): Define. | |
| (cp_adjust_diagnostic_info): Define. | |
| (cp_seen_error): Define. | |
| (cxx_initialize_diagnostics): Set | |
| diagnostic_context::m_adjust_diagnostic_info. | |
| * module.cc (finish_module_processing): Don't write the | |
| module if it contains an erroneous template. | |
| * pt.cc (maybe_diagnose_erroneous_template): Define. | |
| (instantiate_class_template): Call it. | |
| (instantiate_decl): Likewise. | |
| 2024-08-06 Marek Polacek <polacek@redhat.com> | |
| * constexpr.cc (cxx_eval_call_expression): Remove concept_check_p check. | |
| (cxx_eval_outermost_constant_expr): Likewise. | |
| * cp-gimplify.cc (cp_genericize_r) <case CALL_EXPR>: Likewise. | |
| * except.cc (check_noexcept_r): Likewise. | |
| 2024-08-06 Jason Merrill <jason@redhat.com> | |
| PR c++/116223 | |
| * pt.cc (deducible_expression): Strip all IMPLICIT_CONV_EXPR. | |
| (unify): Likewise. Handle resulting function/addr mismatch. | |
| 2024-08-06 Jason Merrill <jason@redhat.com> | |
| PR c++/116223 | |
| PR c++/112632 | |
| * pt.cc (deducible_expression): Also look through | |
| IMPLICIT_CONV_EXPR_FORCED. | |
| (unify): Likewise. | |
| 2024-08-06 Jason Merrill <jason@redhat.com> | |
| PR c++/94568 | |
| * init.cc (build_zero_init_1): Call cv_unqualified. | |
| 2024-08-06 Patrick Palka <ppalka@redhat.com> | |
| PR c++/96780 | |
| * cp-gimplify.cc (cp_fold) <case CALL_EXPR>: Fold calls | |
| to std::forward_like as well. | |
| 2024-08-06 Marek Polacek <polacek@redhat.com> | |
| * constexpr.cc (cxx_eval_constant_expression): Don't call | |
| unpack_concept_check. Add a concept_check_p assert. Remove | |
| function_concept_p code. | |
| * constraint.cc (check_constraint_atom): Remove function concepts code. | |
| (unpack_concept_check): Remove. | |
| (get_concept_check_template): Remove Concepts TS code. | |
| (resolve_function_concept_overload): Remove. | |
| (resolve_function_concept_check): Remove. | |
| (resolve_concept_check): Remove Concepts TS code. | |
| (get_returned_expression): Remove. | |
| (get_variable_initializer): Remove. | |
| (get_concept_definition): Remove Concepts TS code. | |
| (normalize_concept_check): Likewise. | |
| (build_function_check): Remove. | |
| (build_variable_check): Remove. | |
| (build_standard_check): Use concept_definition_p instead of | |
| standard_concept_p. | |
| (build_concept_check): Remove variable_concept_p/function_concept_p | |
| code. | |
| (build_concept_id): Simplify. | |
| (build_type_constraint): Likewise. | |
| (placeholder_extract_concept_and_args): Likewise. | |
| (satisfy_nondeclaration_constraints): Likewise. | |
| (check_function_concept): Remove. | |
| (get_constraint_error_location): Remove Concepts TS code. | |
| * cp-tree.h (DECL_DECLARED_CONCEPT_P): Remove. | |
| (check_function_concept): Remove. | |
| (unpack_concept_check): Remove. | |
| (standard_concept_p): Remove. | |
| (variable_concept_p): Remove. | |
| (function_concept_p): Remove. | |
| (concept_definition_p): Simplify. | |
| (concept_check_p): Don't check for CALL_EXPR. | |
| * decl.cc (check_concept_refinement): Remove. | |
| (duplicate_decls): Remove check_concept_refinement code. | |
| (is_concept_var): Remove. | |
| (cp_finish_decl): Remove is_concept_var. | |
| (check_concept_fn): Remove. | |
| (grokfndecl): Give an error about function concepts not being supported | |
| anymore. Remove unused code. | |
| (grokvardecl): Give an error about variable concepts not being | |
| supported anymore. | |
| (finish_function): Remove DECL_DECLARED_CONCEPT_P code. | |
| * decl2.cc (min_vis_expr_r): Use concept_definition_p instead of | |
| standard_concept_p. | |
| (maybe_instantiate_decl): Remove DECL_DECLARED_CONCEPT_P check. | |
| (mark_used): Likewise. | |
| * error.cc (dump_simple_decl): Use concept_definition_p instead of | |
| standard_concept_p. | |
| (dump_function_decl): Remove DECL_DECLARED_CONCEPT_P code. | |
| (print_concept_check_info): Don't call unpack_concept_check. Simplify. | |
| * mangle.cc (write_type_constraint): Likewise. | |
| * parser.cc (cp_parser_nested_name_specifier_opt): Remove | |
| function_concept_p code. Only check concept_definition_p, not | |
| variable_concept_p/standard_concept_p. | |
| (add_debug_begin_stmt): Remove DECL_DECLARED_CONCEPT_P code. | |
| (cp_parser_template_declaration_after_parameters): Remove a stale | |
| comment. | |
| * pt.cc (check_explicit_specialization): Remove | |
| DECL_DECLARED_CONCEPT_P code. | |
| (process_partial_specialization): Remove variable_concept_p code. | |
| (lookup_template_variable): Likewise. | |
| (tsubst_expr) <case CALL_EXPR>: Remove Concepts TS code and simplify. | |
| (do_decl_instantiation): Remove DECL_DECLARED_CONCEPT_P code. | |
| (instantiate_decl): Likewise. | |
| (placeholder_type_constraint_dependent_p): Don't call | |
| unpack_concept_check. Add a concept_check_p assert. | |
| (convert_generic_types_to_packs): Likewise. | |
| * semantics.cc (finish_call_expr): Remove Concepts TS code and simplify. | |
| 2024-08-05 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (split_coroutine_body_from_ramp): New. | |
| (morph_fn_to_coro): Use split_coroutine_body_from_ramp(). | |
| * cp-tree.h (use_eh_spec_block): New. | |
| * decl.cc (use_eh_spec_block): Make non-static. | |
| 2024-08-05 Marek Polacek <polacek@redhat.com> | |
| PR c++/115987 | |
| * call.cc (do_warn_dangling_reference): Don't consider a | |
| temporary with a scalar type that cannot bind to the return type. | |
| 2024-08-02 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/105475 | |
| * coroutines.cc (struct coroutine_info): Add from_address. | |
| Carries the from_address member we looked up earlier. | |
| (coro_resume_identifier): Remove. Unused. | |
| (coro_init_identifiers): Do not initialize the above. | |
| (void_coro_handle_address): New variable. Contains the baselink | |
| for the std::coroutine_handle<void>::address() instance method. | |
| (get_handle_type_address): New function. Looks up and validates | |
| handle_type::address in a given handle_type. | |
| (get_handle_type_from_address): New function. Looks up and | |
| validates handle_type::from_address in a given handle_type. | |
| (coro_promise_type_found_p): Remove reliance on | |
| coroutine_handle<> defaulting the promise type to void. Store | |
| get_handle_type_* results where appropriate. | |
| (get_coroutine_from_address): New helper. Gets the | |
| handle_type::from_address BASELINK from a coroutine_info. | |
| (build_actor_fn): Use the get_coroutine_from_address helper and | |
| void_coro_handle_address. | |
| 2024-08-02 Marek Polacek <polacek@redhat.com> | |
| PR c++/116169 | |
| * decl.cc (cp_finish_decl): Disallow deleting ::main. | |
| 2024-08-02 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (struct local_vars_frame_data): Add a | |
| CTOR. | |
| (morph_fn_to_coro): Use CTOR for local_vars_frame_data | |
| instead of brace init. | |
| 2024-08-02 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (struct susp_frame_data): Remove unused members, | |
| provide a CTOR. | |
| (morph_fn_to_coro): Use susp_frame_data CTOR, and make the suspend | |
| state hash map local to the morph function. | |
| 2024-08-02 Iain Sandoe <iain@sandoe.co.uk> | |
| * coroutines.cc (replace_continue): Look up expression type. | |
| 2024-08-01 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/116113 | |
| * semantics.cc (maybe_convert_cond): Check DECL_DECOMP_BASE | |
| is non-NULL before dereferencing it. | |
| (finish_switch_cond): Likewise. | |
| 2024-08-01 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/112341 | |
| * coroutines.cc (struct coroutine_info): Also cache the | |
| traits type. | |
| (ensure_coro_initialized): New function. Makes sure we have | |
| initialized the coroutine state successfully, or informs the | |
| caller should it fail to do so. Extracted from | |
| coro_promise_type_found_p. | |
| (coro_get_traits_class): New function. Gets the (cached) | |
| coroutine traits type for a given coroutine. Extracted from | |
| coro_promise_type_found_p and refactored to cache the result. | |
| (coro_promise_type_found_p): Use the two functions above. | |
| (build_template_co_await_expr): New function. Builds a | |
| CO_AWAIT_EXPR representing a CO_AWAIT_EXPR in a template | |
| declaration. | |
| (build_co_await): Use the above if processing_template_decl, and | |
| give it a proper type. | |
| (coro_dependent_p): New function. Returns true iff its | |
| argument is a type-dependent expression OR the current functions | |
| traits class is type dependent. | |
| (finish_co_await_expr): Defer expansion only in the case | |
| coro_dependent_p returns true. | |
| (finish_co_yield_expr): Ditto. | |
| (finish_co_return_stmt): Ditto. | |
| * pt.cc (type_dependent_expression_p): Do not treat | |
| CO_AWAIT/CO_YIELD specially. | |
| 2024-07-31 Marek Polacek <polacek@redhat.com> | |
| PR c++/115645 | |
| * init.cc (build_vec_init): When initializing a scalar type, try to | |
| create a constant initializer. | |
| 2024-07-30 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/115906 | |
| * parser.cc (cp_parser_unary_expression): Reject await | |
| expressions if use of local variables is currently forbidden. | |
| (cp_parser_yield_expression): Reject yield expressions if use of | |
| local variables is currently forbidden. | |
| 2024-07-30 Arsen Arsenovic <arsen@aarsen.me> | |
| PR c++/115906 | |
| * coroutines.cc (register_local_var_uses): Only process | |
| PARM_DECL and VAR_DECLs. | |
| 2024-07-30 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/110855 | |
| * cp-gimplify.cc (fold_builtin_source_location): Use the name of | |
| the DECL_RAMP_FN of the current function if present. | |
| 2024-07-29 Patrick Palka <ppalka@redhat.com> | |
| PR c++/88313 | |
| * parser.cc (cp_parser_lambda_declarator_opt): Pass | |
| lambda_p=true to cp_parser_parameter_declaration_clause. | |
| (cp_parser_direct_declarator): Pass lambda_p=false to | |
| to cp_parser_parameter_declaration_clause. | |
| (cp_parser_parameter_declaration_clause): Add bool lambda_p | |
| parameter. Consider lambda_p instead of current_class_type | |
| when setting parser->auto_is_implicit_function_template_parm_p. | |
| Don't consider processing_template_parmlist. | |
| (cp_parser_requirement_parameter_list): Pass lambda_p=false | |
| to cp_parser_parameter_declaration_clause. | |
| 2024-07-28 Jason Merrill <jason@redhat.com> | |
| PR c++/115583 | |
| * constexpr.cc (cxx_eval_conditional_expression): Don't | |
| cp_fold_immediate for if consteval. | |
| 2024-07-27 Jason Merrill <jason@redhat.com> | |
| PR c++/115986 | |
| * cp-gimplify.cc (remember_escalating_expr): Skip function | |
| templates. | |
| 2024-07-27 Jason Merrill <jason@redhat.com> | |
| PR c++/115561 | |
| * semantics.cc (finish_call_expr): Check cp_unevaluated_operand. | |
| 2024-07-26 Jason Merrill <jason@redhat.com> | |
| PR c++/116052 | |
| * mangle.cc (write_prefix): Handle TRAIT_EXPR. | |
| 2024-07-26 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115757 | |
| * module.cc (trees_out::core_vals): Write warning specs for | |
| DECLs and EXPRs. | |
| (trees_in::core_vals): Read warning specs. | |
| 2024-07-25 Jason Merrill <jason@redhat.com> | |
| PR c++/115403 | |
| PR c++/109753 | |
| * decl.cc (start_preparsed_function): Only call decl_attributes for | |
| artificial functions. | |
| 2024-07-25 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115897 | |
| * cp-tree.h (dependent_opaque_alias_p): Declare. | |
| * pt.cc (push_template_decl): Manually mark a dependent opaque | |
| alias or dependent alias template specialization as dependent, | |
| and use structural equality for them. | |
| (dependent_opaque_alias_p): Define. | |
| (alias_template_specialization_p): Don't look through an | |
| opaque alias. | |
| (complex_alias_template_p): Use dependent_opaque_alias_p instead of | |
| any_dependent_template_arguments_p directly. | |
| (dependent_alias_template_spec_p): Don't look through an | |
| opaque alias. | |
| (get_underlying_template): Use dependent_opaque_alias_p instead of | |
| any_dependent_template_arguments_p. | |
| (instantiate_alias_template): Mention same logic in | |
| push_template_decl. | |
| (dependent_type_p_r): Remove dependent_alias_template_spec_p check. | |
| (any_template_arguments_need_structural_equality_p): Return true | |
| for a dependent opaque alias. | |
| (alias_ctad_tweaks): Use template_args_equal instead of same_type_p | |
| followed by dependent_alias_template_spec_p. | |
| * tree.cc (strip_typedefs): Don't strip an opaque alias. | |
| * typeck.cc (structural_comptypes): Compare declaration attributes | |
| for an opaque alias. | |
| 2024-07-25 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115897 | |
| * tree.cc (strip_typedefs): Move up the typedef recursion case. | |
| Never strip a dependent alias template-id that has dependent | |
| attributes. | |
| 2024-07-25 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/110171 | |
| * coroutines.cc (co_await_get_resume_call): New function. | |
| Returns the await_resume expression of a given co_await. | |
| * cp-tree.h (co_await_get_resume_call): New function. | |
| * cvt.cc (convert_to_void): Handle CO_AWAIT_EXPRs and call | |
| maybe_warn_nodiscard on their resume exprs. | |
| 2024-07-25 Arsen Arsenović <arsen@aarsen.me> | |
| PR c++/111728 | |
| * coroutines.cc (rewrite_param_uses): Skip unevaluated | |
| subexpressions. | |
| 2024-07-24 Jason Merrill <jason@redhat.com> | |
| PR c++/116071 | |
| * parser.cc (cp_parser_simple_type_specifier): Call | |
| cp_parser_simulate_error if nothing worked. | |
| 2024-07-24 Jakub Jelinek <jakub@redhat.com> | |
| * constraint.cc (subst_info::quiet, subst_info::noisy): Formatting | |
| fixes. | |
| (known_non_bool_p): Comment formatting fixes. | |
| (unpack_concept_check): Likewise. | |
| (resolve_function_concept_overload): Likewise. | |
| (resolve_function_concept_check): Likewise. | |
| (resolve_concept_check): Likewise. | |
| (deduce_constrained_parameter): Likewise. | |
| (finish_type_constraints): Likewise. | |
| (get_returned_expression): Likewise. | |
| (get_variable_initializer): Likewise. | |
| (norm_info::update_context, norm_info::ctx_params): Formatting | |
| fixes. | |
| (norm_info::context): Comment formatting fixes. | |
| (normalize_logical_operation): Likewise. Formatting fix. | |
| (normalize_concept_check): Comment formatting fixes. | |
| (normalize_atom): Likewise. | |
| (normalize_expression): Likewise. | |
| (get_normalized_constraints_from_info): Likewise. | |
| (get_normalized_constraints_from_decl): Likewise. Formatting | |
| fixes. | |
| (atomic_constraints_identical_p): Comment formatting fixes. | |
| (constraints_equivalent_p): Formatting fixes. | |
| (inchash::add_constraint): Likewise. | |
| (associate_classtype_constraints): Comment formatting fixes. | |
| (get_constraints): Likewise. | |
| (set_constraints): Likewise. | |
| (build_concept_check_arguments): Likewise. | |
| (build_function_check): Likewise. | |
| (build_concept_check): Likewise. | |
| (finish_shorthand_constraint): Likewise. | |
| (get_shorthand_constraints): Likewise. | |
| (check_constraint_variables): Likewise. | |
| (tsubst_constraint_variables): Likewise. | |
| (tsubst_requires_expr): Likewise. | |
| (get_mapped_args): Likewise. Formatting fixes. | |
| (satisfy_atom): Comment formatting fixes. | |
| (satisfy_constraint_r): Comment wording and formatting fixes. | |
| (satisfy_normalized_constraints): Comment formatting fixes. | |
| (satisfy_declaration_constraints): Likewise. | |
| (evaluate_concept_check): Likewise. | |
| (finish_requires_expr): Likewise. | |
| (finish_compound_requirement): Likewise. | |
| (check_function_concept): Likewise. | |
| (equivalently_constrained): Likewise. | |
| (more_constrained): Likewise. | |
| (diagnose_atomic_constraint): Likewise. | |
| * cp-tree.h (TREE_LANG_FLAG_0): Fix a comment error, | |
| FOLD_EXPR_MODIFY_P instead of FOLD_EXPR_MODOP_P. | |
| (DECL_MAIN_FREESTANDING_P, DECL_MAIN_P): Comment formatting fixes. | |
| (enum cpp0x_warn_str): Likewise. | |
| (enum composite_pointer_operation): Likewise. | |
| (enum expr_list_kind): Likewise. | |
| (enum impl_conv_rhs): Likewise. | |
| (enum impl_conv_void): Likewise. | |
| (struct deferred_access_check): Likewise. | |
| (ATOMIC_CONSTR_EXPR): Likewise. | |
| (FUNCTION_REF_QUALIFIED): Likewise. | |
| (DECL_DEPENDENT_P): Likewise. | |
| (FOLD_EXPR_MODIFY_P): Likewise. | |
| (FOLD_EXPR_OP_RAW): Likewise. | |
| (FOLD_EXPR_PACK): Likewise. | |
| (FOLD_EXPR_INIT): Likewise. | |
| (TYPE_WAS_UNNAMED): Likewise. | |
| (class cp_unevaluated): Likewise. | |
| (struct ovl_op_info_t assertion): Likewise. | |
| (cp_declarator::function::requires_clause): Likewise. | |
| (variable_template_p): Likewise. | |
| (concept_definition_p): Likewise. | |
| * logic.cc (clause::clause): Likewise. | |
| (clause::replace): Likewise. | |
| (clause::insert): Likewise. Formatting fixes. | |
| (struct formula): Comment formatting fixes. | |
| (formula::branch): Likewise. | |
| (debug): Formatting fixes. | |
| (dnf_size_r): Comment formatting fixes. | |
| (cnf_size_r): Likewise. | |
| (dnf_size): Likewise. | |
| (cnf_size): Likewise. | |
| (branch_clause): Likewise. | |
| (decompose_term): Likewise. Formatting fixes. | |
| (struct subsumption_entry): Comment formatting fixes. | |
| (subsumption_cache): Likewise. | |
| (save_subsumption): Likewise. Formatting fixes. | |
| (subsumes_constraints_nonnull): Formatting fixes. | |
| 2024-07-23 Andi Kleen <ak@linux.intel.com> | |
| PR c/83324 | |
| * cp-tree.h (AGGR_INIT_EXPR_MUST_TAIL): Add. | |
| * parser.cc (cp_parser_statement): Handle musttail. | |
| (cp_parser_jump_statement): Dito. | |
| * pt.cc (tsubst_expr): Copy CALL_EXPR_MUST_TAIL_CALL. | |
| * semantics.cc (simplify_aggr_init_expr): Handle musttail. | |
| 2024-07-23 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115656 | |
| * constraint.cc (weakly_subsumes): Pass in_decl=tmpl to | |
| get_normalized_constraints_from_info. Rename to ... | |
| (ttp_subsumes): ... this. | |
| * cp-tree.h (weakly_subsumes): Rename to ... | |
| (ttp_subsumes): ... this. | |
| * pt.cc (is_compatible_template_arg): Adjust after renaming. | |
| 2024-07-23 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115296 | |
| * pt.cc (alias_ctad_tweaks): Use complain=tf_none instead of | |
| tf_warning_or_error. | |
| 2024-07-23 Jakub Jelinek <jakub@redhat.com> | |
| * cp-tree.def (CHECK_CONSTR): Remove. | |
| * cp-tree.h (CHECK_CONSTR_CONCEPT, CHECK_CONSTR_ARGS): Remove. | |
| * cp-objcp-common.cc (cp_common_init_ts): Don't handle CHECK_CONSTR. | |
| * tree.cc (cp_tree_equal): Likewise. | |
| * error.cc (dump_expr): Likewise. | |
| * cxx-pretty-print.cc (cxx_pretty_printer::expression): Likewise. | |
| (pp_cxx_check_constraint): Remove. | |
| (pp_cxx_constraint): Don't handle CHECK_CONSTR. | |
| 2024-07-23 Patrick Palka <ppalka@redhat.com> | |
| PR c++/104981 | |
| PR c++/115550 | |
| * coroutines.cc (morph_fn_to_coro): Remove unneeded calls | |
| to convert_to_reference and convert_from_reference when | |
| passing *this. Use cp_build_fold_indirect_ref instead | |
| of directly building INDIRECT_REF. | |
| 2024-07-22 Jakub Jelinek <jakub@redhat.com> | |
| * cp-tree.def (UNARY_LEFT_FOLD_EXPR): Use FOLD_EXPR_MODIFY_P instead | |
| of FOLD_EXPR_MOD_P or FOLDEXPR_MOD_P in the comment. Comment | |
| formatting fixes. | |
| (ATOMIC_CONSTEXPR): Use CONSTR_INFO instead of ATOMIC_CONSTR_INFO | |
| and ATOMIC_CONSTR_MAP instead of ATOMIC_CONSTR_PARMS in the comment. | |
| Comment formatting fixes. | |
| (CONJ_CONSTR): Remove comment about third operand. Use CONSTR_INFO | |
| instead of CONJ_CONSTR_INFO and DISJ_CONSTR_INFO. | |
| (CHECK_CONSTR): Use CHECK_CONSTR_ARGS instead of | |
| CHECK_CONSTR_ARGUMENTS. | |
| 2024-07-20 Andi Kleen <ak@gcc.gnu.org> | |
| Revert: | |
| 2024-07-20 Andi Kleen <ak@linux.intel.com> | |
| PR c/83324 | |
| * cp-tree.h (AGGR_INIT_EXPR_MUST_TAIL): Add. | |
| * parser.cc (cp_parser_statement): Handle musttail. | |
| (cp_parser_jump_statement): Dito. | |
| * pt.cc (tsubst_expr): Copy CALL_EXPR_MUST_TAIL_CALL. | |
| * semantics.cc (simplify_aggr_init_expr): Handle musttail. | |
| 2024-07-20 Andi Kleen <ak@linux.intel.com> | |
| PR c/83324 | |
| * cp-tree.h (AGGR_INIT_EXPR_MUST_TAIL): Add. | |
| * parser.cc (cp_parser_statement): Handle musttail. | |
| (cp_parser_jump_statement): Dito. | |
| * pt.cc (tsubst_expr): Copy CALL_EXPR_MUST_TAIL_CALL. | |
| * semantics.cc (simplify_aggr_init_expr): Handle musttail. | |
| 2024-07-19 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115783 | |
| * call.cc (build_new_method_call): Generalize METHOD_TYPE | |
| check to DECL_OBJECT_MEMBER_FUNCTION_P. | |
| 2024-07-19 Seyed Sajad Kahani <sska1377@gmail.com> | |
| * constraint.cc (hash_placeholder_constraint): Rename to | |
| iterative_hash_placeholder_constraint. | |
| (iterative_hash_placeholder_constraint): Rename from | |
| hash_placeholder_constraint and add the initial val argument. | |
| * cp-tree.h (hash_placeholder_constraint): Rename to | |
| iterative_hash_placeholder_constraint. | |
| (iterative_hash_placeholder_constraint): Renamed from | |
| hash_placeholder_constraint and add the initial val argument. | |
| * pt.cc (struct ctp_hasher): Updated to use | |
| iterative_hash_placeholder_constraint in the case of a valid placeholder | |
| constraint. | |
| (auto_hash::hash): Reflect the renaming of hash_placeholder_constraint to | |
| iterative_hash_placeholder_constraint. | |
| 2024-07-18 Marek Polacek <polacek@redhat.com> | |
| PR c++/108769 | |
| PR c++/58074 | |
| PR c++/115522 | |
| PR c++/85723 | |
| * class.cc (type_has_non_deleted_trivial_default_ctor): Fix formatting. | |
| * tree.cc (trivial_type_p): Instead of TYPE_HAS_TRIVIAL_DFLT, use | |
| type_has_non_deleted_trivial_default_ctor. | |
| 2024-07-18 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115165 | |
| * module.cc (lazy_load_binding): Use 'timevar_cond*' APIs. | |
| (lazy_load_pendings): Likewise. | |
| 2024-07-18 Patrick Palka <ppalka@redhat.com> | |
| PR c++/112288 | |
| * pt.cc (tsubst_friend_function): When adjusting existing | |
| specializations after defining a previously declared template | |
| friend, consider the most general template and correct | |
| DECL_TI_ARGS adjustment. | |
| 2024-07-18 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114104 | |
| * cvt.cc (convert_to_void): Call warn_if_unused_value for | |
| TRUTH_NOT_EXPR and ADDR_EXPR as well. | |
| 2024-07-18 Patrick Palka <ppalka@redhat.com> | |
| * decl.cc (make_typename_type): Restrict name lookup failure | |
| punting to dependentish_scope_p instead of dependent_type_p. | |
| * error.cc (qualified_name_lookup_error): Improve diagnostic | |
| when the scope is the current instantiation. | |
| * parser.cc (cp_parser_diagnose_invalid_type_name): Likewise. | |
| (cp_parser_conversion_function_id): Don't call push_scope on | |
| a template scope unless we're in a declaration context. | |
| (cp_parser_lookup_name): Restrict name lookup failure | |
| punting to dependentish_scope_p instead of depedent_type_p. | |
| * semantics.cc (finish_id_expression_1): Likewise. | |
| * typeck.cc (finish_class_member_access_expr): Likewise. | |
| 2024-07-17 Marek Polacek <polacek@redhat.com> | |
| PR c++/115900 | |
| * constexpr.cc (cxx_eval_call_expression): Set new_obj to NULL_TREE | |
| if cxx_fold_indirect_ref set empty_base to true. | |
| 2024-07-17 Patrick Palka <ppalka@redhat.com> | |
| PR c++/111890 | |
| * pt.cc (maybe_new_partial_specialization): Propagate TYPE_CONTEXT | |
| to the newly created partial specialization. | |
| 2024-07-17 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/99242 | |
| * name-lookup.cc (append_imported_binding_slot): Propagate dups | |
| flags. | |
| 2024-07-16 Nina Ranns <dinka.ranns@gmail.com> | |
| PR c++/110159 | |
| * cp-tree.h (init_terminate_fn): Declaration of a new function. | |
| * decl.cc (cxx_init_decl_processing): If contracts are enabled, | |
| call init_terminate_fn. | |
| * except.cc (init_exception_processing): Function refactored to | |
| call init_terminate_fn. | |
| (init_terminate_fn): Added new function that initializes | |
| terminate_fn if it hasn't already been initialised. | |
| 2024-07-16 Iain Sandoe <iain@sandoe.co.uk> | |
| PR c++/115434 | |
| PR c++/110871 | |
| PR c++/110872 | |
| * constexpr.cc (cxx_eval_constant_expression): Handle EH_ELSE_EXPR. | |
| * contracts.cc (finish_contract_attribute): Remove excess line. | |
| (build_contract_condition_function): Post condition handlers are | |
| void now. | |
| (emit_postconditions_cleanup): Remove. | |
| (emit_postconditions): New. | |
| (add_pre_condition_fn_call): New. | |
| (add_post_condition_fn_call): New. | |
| (apply_preconditions): New. | |
| (apply_postconditions): New. | |
| (maybe_apply_function_contracts): New. | |
| (apply_postcondition_to_return): Remove. | |
| * contracts.h (apply_postcondition_to_return): Remove. | |
| (maybe_apply_function_contracts): Add. | |
| * coroutines.cc (coro_build_actor_or_destroy_function): Do not | |
| copy contracts to coroutine helpers. | |
| * decl.cc (finish_function): Handle wrapping a possibly | |
| transformed function body in contract checks. | |
| * typeck.cc (check_return_expr): Remove handling of post | |
| conditions on return expressions. | |
| 2024-07-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115897 | |
| * pt.cc (complex_alias_template_p): Return true for an alias | |
| template with attributes. | |
| (get_underlying_template): Don't look through an alias template | |
| with attributes. | |
| 2024-07-13 David Malcolm <dmalcolm@redhat.com> | |
| * call.cc: Include "tree-pretty-print-markup.h". | |
| (implicit_conversion_error): Use highlight_colors::percent_h for | |
| the labelled range. | |
| (op_error_string): Split out into... | |
| (concat_op_error_string): ...this. | |
| (binop_error_string): New. | |
| (op_error): Use %e, binop_error_string, highlight_colors::lhs, | |
| and highlight_colors::rhs. | |
| (maybe_inform_about_fndecl_for_bogus_argument_init): Add | |
| "highlight_color" param; use it for the richloc. | |
| (convert_like_internal): Use highlight_colors::percent_h for the | |
| labelled_range, and highlight_colors::percent_i for the call to | |
| maybe_inform_about_fndecl_for_bogus_argument_init. | |
| (build_over_call): Pass cp_comp_parm_types for new "comp_types" | |
| param of check_function_arguments. | |
| (complain_about_bad_argument): Use highlight_colors::percent_h for | |
| the labelled_range, and highlight_colors::percent_i for the call | |
| to maybe_inform_about_fndecl_for_bogus_argument_init. | |
| * cp-tree.h (maybe_inform_about_fndecl_for_bogus_argument_init): | |
| Add optional highlight_color param. | |
| (cp_comp_parm_types): New decl. | |
| (highlight_colors::const percent_h): New decl. | |
| (highlight_colors::const percent_i): New decl. | |
| * error.cc: Include "tree-pretty-print-markup.h". | |
| (highlight_colors::const percent_h): New defn. | |
| (highlight_colors::const percent_i): New defn. | |
| (type_to_string): Add param "highlight_color" and use it. | |
| (print_nonequal_arg): Likewise. | |
| (print_template_differences): Add params "highlight_color_a" and | |
| "highlight_color_b". | |
| (type_to_string_with_compare): Add params "this_highlight_color" | |
| and "peer_highlight_color". | |
| (print_template_tree_comparison): Add params "highlight_color_a" | |
| and "highlight_color_b". | |
| (cxx_format_postprocessor::handle): | |
| Use highlight_colors::percent_h and highlight_colors::percent_i. | |
| (pp_markup::element_quoted_type::print_type): New. | |
| (range_label_for_type_mismatch::get_text): Pass nullptr for new | |
| params of type_to_string_with_compare. | |
| * typeck.cc (cp_comp_parm_types): New. | |
| (cp_build_function_call_vec): Pass it to check_function_arguments. | |
| (convert_for_assignment): Use highlight_colors::percent_h for the | |
| labelled_range. | |
| 2024-07-12 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * decl.cc (xref_tag): Move assertion into condition. | |
| * name-lookup.cc (check_module_override): Check for conflicting | |
| types and using-decls. | |
| 2024-07-12 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114683 | |
| * cp-tree.h (class ovl_iterator): Move definitions of purview_p | |
| and exporting_p to name-lookup.cc. | |
| * module.cc (depset::hash::add_binding_entity): Strip | |
| using-decls. Remove workarounds. Handle CONST_DECLs with | |
| different purview/exported from their enum. | |
| (enum ct_bind_flags): Remove unnecessary cbf_wrapped flag. | |
| (module_state::write_cluster): Likewise. | |
| (module_state::read_cluster): Build USING_DECL for non-function | |
| usings. | |
| (binding_cmp): Handle CONST_DECLs with different purview and/or | |
| exported from their enum. | |
| (set_instantiating_module): Support CONST_DECLs. | |
| * name-lookup.cc (get_fixed_binding_slot): Strip USING_DECLs. | |
| (name_lookup::process_binding): Strip USING_DECLs. | |
| (name_lookup::process_module_binding): Remove workaround. | |
| (update_binding): Strip USING_DECLs, remove incorrect check for | |
| non-extern variables. | |
| (ovl_iterator::purview_p): Support USING_DECLs. | |
| (ovl_iterator::exporting_p): Support USING_DECLs. | |
| (walk_module_binding): Handle stat hack type. | |
| (do_nonmember_using_decl): Strip USING_DECLs when comparing; | |
| build USING_DECLs for non-function usings in different scope | |
| rather than binding directly. | |
| (get_namespace_binding): Strip USING_DECLs. | |
| (lookup_name): Strip USING_DECLs. | |
| (lookup_elaborated_type): Strip USING_DECLs. | |
| * decl.cc (poplevel): Still support -Wunused for using-decls. | |
| (lookup_and_check_tag): Remove unnecessary strip_using_decl. | |
| * parser.cc (cp_parser_template_name): Likewise. | |
| (cp_parser_nonclass_name): Likewise. | |
| (cp_parser_class_name): Likewise. | |
| 2024-07-11 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/99241 | |
| * decl.cc (duplicate_decls): Merge module entity information. | |
| 2024-07-10 Marek Polacek <polacek@redhat.com> | |
| * constraint.cc (deduce_concept_introduction, get_deduced_wildcard, | |
| get_introduction_prototype, introduce_type_template_parameter, | |
| introduce_template_template_parameter, | |
| introduce_nontype_template_parameter, | |
| build_introduced_template_parameter, introduce_template_parameter, | |
| introduce_template_parameter_pack, introduce_template_parameter, | |
| introduce_template_parameters, process_introduction_parms, | |
| check_introduction_list, finish_template_introduction): Remove. | |
| (finish_shorthand_constraint): Remove a Concepts TS comment. | |
| * cp-tree.h (check_auto_in_tmpl_args, finish_template_introduction): | |
| Remove. | |
| * decl.cc (function_requirements_equivalent_p): Remove pre-C++20 code. | |
| (grokfndecl): Don't check flag_concepts_ts. | |
| (grokvardecl): Don't check that concept have type bool. | |
| * parser.cc (cp_parser_decl_specifier_seq): Don't check | |
| flag_concepts_ts. | |
| (cp_parser_introduction_list): Remove. | |
| (cp_parser_template_id): Remove dead code. | |
| (cp_parser_simple_type_specifier): Don't check flag_concepts_ts. | |
| (cp_parser_placeholder_type_specifier): Require require auto or | |
| decltype(auto) even pre-C++20. Don't check flag_concepts_ts. | |
| (cp_parser_type_id_1): Don't check flag_concepts_ts. | |
| (cp_parser_template_type_arg): Likewise. | |
| (cp_parser_requires_clause_opt): Remove flag_concepts_ts code. | |
| (cp_parser_compound_requirement): Don't check flag_concepts_ts. | |
| (cp_parser_template_introduction): Remove. | |
| (cp_parser_template_declaration_after_export): Don't call | |
| cp_parser_template_introduction. | |
| * pt.cc (template_heads_equivalent_p): Remove pre-C++20 code. | |
| (find_parameter_pack_data): Remove type_pack_expansion_p. | |
| (find_parameter_packs_r): Remove flag_concepts_ts code. Remove | |
| type_pack_expansion_p code. | |
| (uses_parameter_packs): Remove type_pack_expansion_p code. | |
| (make_pack_expansion): Likewise. | |
| (check_for_bare_parameter_packs): Likewise. | |
| (fixed_parameter_pack_p): Likewise. | |
| (tsubst_qualified_id): Remove dead code. | |
| (extract_autos_r): Remove. | |
| (extract_autos): Remove. | |
| (do_auto_deduction): Remove flag_concepts_ts code. | |
| (type_uses_auto): Likewise. | |
| (check_auto_in_tmpl_args): Remove. | |
| 2024-07-10 Marek Polacek <polacek@redhat.com> | |
| PR c++/115645 | |
| * init.cc (build_new): Don't do any deduction for arrays with | |
| bounds if it's value-initialized. | |
| 2024-07-10 Nina Ranns <dinka.ranns@gmail.com> | |
| PR c++/113968 | |
| * contracts.cc (grok_contract): Check for error_mark_node early | |
| exit. | |
| 2024-07-09 Jakub Jelinek <jakub@redhat.com> | |
| * constexpr.cc (cxx_eval_constant_expression): CWG2819 - Allow | |
| cv void * null pointer value conversion to object types in constant | |
| expressions. | |
| 2024-07-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (trees_out::get_merge_kind): Use | |
| LAMBDA_TYPE_EXTRA_SCOPE instead of LAMBDA_EXPR_EXTRA_SCOPE. | |
| (trees_out::key_mergeable): Likewise. | |
| 2024-07-04 Tamar Christina <tamar.christina@arm.com> | |
| PR c++/115623 | |
| * semantics.cc (finish_for_cond): Add check for C++ cond. | |
| 2024-07-04 Jason Merrill <jason@redhat.com> | |
| * error.cc (dump_decl) [OVERLOAD]: Recurse on single case. | |
| 2024-07-04 Jason Merrill <jason@redhat.com> | |
| * pt.cc (ctad_template_p): Return false for trait names. | |
| 2024-07-02 Jakub Jelinek <jakub@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| PR c++/115754 | |
| * constexpr.cc (cxx_eval_constant_expression) <case CONVERT_EXPR>: | |
| For conversions to void, pass vc_discard to the recursive call | |
| and otherwise for tcode other than VIEW_CONVERT_EXPR pass vc_prvalue. | |
| 2024-07-02 Jakub Jelinek <jakub@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| PR c++/115747 | |
| * init.cc: Implement C++26 P3144R2 - Deleting a Pointer to an | |
| Incomplete Type Should be Ill-formed. | |
| (build_vec_delete_1): Emit permerror_at and return error_mark_node | |
| for delete [] on incomplete type. | |
| (build_delete): Similarly for delete. | |
| 2024-07-02 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/115745 | |
| * cp-tree.h: Implement C++26 P0963R3 - Structured binding declaration | |
| as a condition. | |
| (DECL_DECOMP_BASE): Adjust comment. | |
| (DECL_DECOMP_IS_BASE): Define. | |
| * parser.cc (cp_parser_selection_statement): Adjust | |
| cp_parser_condition caller. | |
| (cp_parser_condition): Add KEYWORD argument. Parse | |
| C++26 structured bindings in conditions. | |
| (cp_parser_c_for, cp_parser_iteration_statement): Adjust | |
| cp_parser_condition callers. | |
| (cp_parser_simple_declaration): Adjust | |
| cp_parser_decomposition_declaration caller. | |
| (cp_parser_decomposition_declaration): Add KEYWORD argument. | |
| If it is not RID_MAX, diagnose for C++23 and older rather than C++14 | |
| and older. Set DECL_DECOMP_BASE to integer_zero_node for structured | |
| bindings used in if/while/for conditions or integer_one_node for | |
| those used in switch conditions. | |
| * decl.cc (poplevel, check_array_initializer): Use DECL_DECOMP_IS_BASE | |
| instead of !DECL_DECOMP_BASE. | |
| (cp_finish_decomp): Diagnose array initializer for structured bindings | |
| used in conditions. If using std::tuple_{size,element}, emit | |
| conversion to bool or integer/enumeration of e into a TARGET_EXPR | |
| before emitting get method calls. | |
| * decl2.cc (mark_used): Use DECL_DECOMP_IS_BASE instead of | |
| !DECL_DECOMP_BASE. | |
| * module.cc (trees_in::tree_node): Likewise. | |
| * typeck.cc (maybe_warn_about_returning_address_of_local): Likewise. | |
| * semantics.cc (maybe_convert_cond): For structured bindings with | |
| TARGET_EXPR DECL_DECOMP_BASE use that as condition. | |
| (finish_switch_cond): Likewise. | |
| 2024-07-02 Lewis Hyatt <lhyatt@gmail.com> | |
| * Make-lang.in: Remove redundant slash. | |
| 2024-07-02 Simon Martin <simon@nasilyan.com> | |
| PR c++/111160 | |
| * tree.cc (stabilize_expr): Stabilized expressions can have | |
| TREE_SIDE_EFFECTS if they're volatile. | |
| 2024-07-01 Marek Polacek <polacek@redhat.com> | |
| PR c++/115469 | |
| * decl.cc (automatic_var_with_nontrivial_dtor_p): New. | |
| (poplevel_named_label_1): Use it. | |
| (check_goto_1): Likewise. | |
| 2024-07-01 Marek Polacek <polacek@redhat.com> | |
| PR c++/115430 | |
| * typeck.cc (cp_build_compound_expr): Call resolve_nondeduced_context | |
| on RHS. | |
| 2024-07-01 Marek Polacek <polacek@redhat.com> | |
| DR 2627 | |
| PR c++/94058 | |
| PR c++/104392 | |
| * typeck2.cc (check_narrowing): Don't warn if the conversion isn't | |
| narrowing as per DR 2627. | |
| 2024-06-28 Patrick Palka <ppalka@redhat.com> | |
| PR c++/106760 | |
| * call.cc (add_candidates): Relax test for adding a candidate | |
| to 'bad_cands' to also accept an uninstantiated template candidate | |
| that has no missing conversions. | |
| 2024-06-26 David Malcolm <dmalcolm@redhat.com> | |
| * parser.cc (cp_parser_error_1): Pass *global_dc to | |
| gcc_rich_location::add_location_if_nearby. | |
| (cp_parser_decl_specifier_seq): Likewise. | |
| (cp_parser_set_storage_class): Likewise. | |
| (cp_parser_set_storage_class): Likewise. | |
| 2024-06-26 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115504 | |
| * semantics.cc (finish_decltype_type): Don't strip the reference | |
| type (if any) of a capture proxy's captured variable. | |
| 2024-06-25 Marek Polacek <polacek@redhat.com> | |
| PR c++/115476 | |
| * semantics.cc (finish_trait_expr) | |
| <case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS>: Move below to call | |
| check_trait_type with kind==2. | |
| 2024-06-25 Marek Polacek <polacek@redhat.com> | |
| PR c++/115425 | |
| * pt.cc (tsubst_pack_expansion): Return error_mark_node if | |
| make_pack_expansion doesn't work out. | |
| 2024-06-25 Marek Polacek <polacek@redhat.com> | |
| PR c++/115501 | |
| * rtti.cc (build_dynamic_cast_1): Return if dcast_fn is erroneous. | |
| 2024-06-25 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115198 | |
| * pt.cc (alias_ctad_tweaks): Update DECL_NAME of the transformed | |
| guides. | |
| 2024-06-25 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115358 | |
| * decl2.cc (mark_used): Call maybe_instantiate_decl for an array | |
| variable with unknown bound. | |
| * semantics.cc (finish_decltype_type): Remove now redundant | |
| handling of array variables with unknown bound. | |
| * typeck.cc (cxx_sizeof_expr): Likewise. | |
| 2024-06-25 Sandra Loosemore <sloosemore@baylibre.com> | |
| PR c/115587 | |
| * parser.cc (cp_parser_omp_loop_nest): Move initializations to | |
| point of declaration. | |
| 2024-06-17 Jakub Jelinek <jakub@redhat.com> | |
| PR target/111343 | |
| PR c++/115511 | |
| * typeck.cc (cp_compare_floating_point_conversion_ranks): If an | |
| extended floating point type mv1 has same set of values as more | |
| than one standard floating point type and mv2 is float, return 2. | |
| 2024-06-13 Jason Merrill <jason@redhat.com> | |
| PR c++/114683 | |
| * name-lookup.cc (do_nonmember_using_decl): Allow exporting | |
| a newly inserted decl. | |
| 2024-06-13 Jason Merrill <jason@redhat.com> | |
| PR c++/115194 | |
| * name-lookup.cc (name_lookup::process_module_binding): Strip an | |
| OVERLOAD from a non-function. | |
| 2024-06-13 Jason Merrill <jason@redhat.com> | |
| * module.cc (depset::hash::add_binding_entity): Adjust comment. | |
| 2024-06-13 Patrick Palka <ppalka@redhat.com> | |
| PR c++/99678 | |
| * parser.cc (cp_parser_constraint_primary_expression): Diagnose | |
| a bare unresolved unqualified-id. | |
| 2024-06-13 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115239 | |
| * call.cc (tourney): Don't consider a non-strictly viable | |
| candidate as the champ if there was ambiguity between two | |
| strictly viable candidates. | |
| 2024-06-13 Andi Kleen <ak@linux.intel.com> | |
| * parser.cc (cp_parser_asm_string_expression): Use correct error | |
| message. | |
| 2024-06-13 Andi Kleen <ak@linux.intel.com> | |
| * parser.cc (cp_parser_asm_string_expression): Parse close | |
| parent when constexpr extraction fails. | |
| 2024-06-13 Andi Kleen <ak@linux.intel.com> | |
| * parser.cc (cp_parser_asm_string_expression): Remove support | |
| for const char * for asm constexpr. | |
| 2024-06-13 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115283 | |
| * decl2.cc (min_vis_expr_r) <case TEMPLATE_DECL>: Ignore | |
| concepts. | |
| 2024-06-12 Jason Merrill <jason@redhat.com> | |
| * tree.cc (lookup_maybe_add): Use ovl_make when setting OVL_USING_P. | |
| 2024-06-12 Jason Merrill <jason@redhat.com> | |
| * module.cc (depset::hash::add_binding_entity): Set | |
| DECL_MODULE_PURVIEW_P instead of asserting. | |
| 2024-06-12 Andi Kleen <ak@linux.intel.com> | |
| * cp-tree.h (extract): Add new overload to return tree. | |
| * parser.cc (cp_parser_asm_string_expression): Use tree extract. | |
| * semantics.cc (cexpr_str::extract): Add new overload to return | |
| tree. | |
| 2024-06-12 David Malcolm <dmalcolm@redhat.com> | |
| * error.cc (append_formatted_chunk): Move part of body into | |
| chunk_info::append_formatted_chunk. | |
| 2024-06-12 David Malcolm <dmalcolm@redhat.com> | |
| * cxx-pretty-print.cc: Update throughout for fields of | |
| pretty_printer becoming private. | |
| * error.cc: Likewise. | |
| 2024-06-11 Andi Kleen <ak@linux.intel.com> | |
| * parser.cc (cp_parser_asm_string_expression): New function | |
| to handle constexpr strings for asm. | |
| (cp_parser_asm_definition): Use cp_parser_asm_string_expression. | |
| (cp_parser_yield_expression): Dito. | |
| (cp_parser_asm_specification_opt): Dito. | |
| (cp_parser_asm_operand_list): Dito. | |
| (cp_parser_asm_clobber_list): Dito. | |
| 2024-06-11 Andi Kleen <ak@linux.intel.com> | |
| * cp-tree.h (class cexpr_str): Add. | |
| * semantics.cc (finish_static_assert): Convert to use cexpr_str. | |
| (cexpr_str::type_check): Extract constexpr string code to here. | |
| (cexpr_str::extract): ... and here. | |
| 2024-06-08 Simon Martin <simon@nasilyan.com> | |
| PR c++/108438 | |
| * parser.cc (cp_parser_postfix_expression): Use | |
| cp_parser_require_end_of_template_parameter_list to skip to the closing | |
| '>' upon error parsing the target type of *_cast<*> expressions. | |
| 2024-06-07 Simon Martin <simon@nasilyan.com> | |
| PR c++/107575 | |
| * decl.cc (duplicate_decls): Check for error_mark_node | |
| DECL_LOCAL_DECL_ALIAS. | |
| 2024-06-07 Jason Merrill <jason@redhat.com> | |
| * module.cc (maybe_translate_include): Allow before the main file. | |
| 2024-06-07 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115378 | |
| * lambda.cc (lambda_capture_field_type): Set | |
| TEMPLATE_TYPE_PARAMETER_PACK on the auto type of an init-capture | |
| pack expansion. | |
| * pt.cc (find_parameter_packs_r) <case TEMPLATE_TYPE_PARM>: | |
| Restrict TEMPLATE_TYPE_PARAMETER_PACK promotion with | |
| flag_concepts_ts. | |
| 2024-06-05 Jakub Jelinek <jakub@redhat.com> | |
| Frederik Harwath <frederik@codesourcery.com> | |
| Sandra Loosemore <sandra@codesourcery.com> | |
| * cp-tree.h (dependent_omp_for_p): Add another tree argument. | |
| * parser.cc (check_omp_intervening_code): Reject imperfectly nested | |
| tile. | |
| (cp_parser_statement_seq_opt): If want_nested_loop, use | |
| cp_parser_next_tokens_can_be_canon_loop instead of just checking | |
| for RID_FOR keyword. | |
| (cp_parser_omp_clause_name): Handle full and partial clause names. | |
| (cp_parser_omp_clause_full, cp_parser_omp_clause_partial): New | |
| functions. | |
| (cp_parser_omp_all_clauses): Formatting fix. Handle | |
| PRAGMA_OMP_CLAUSE_PARTIAL and PRAGMA_OMP_CLAUSE_FULL. | |
| (cp_parser_next_tokens_can_be_canon_loop): New function. | |
| (cp_parser_omp_loop_nest): Parse C++11 attributes. Handle tile/unroll | |
| constructs. Use cp_parser_next_tokens_can_be_canon_loop instead | |
| of just checking for RID_FOR keyword. Only add_stmt | |
| cp_parser_omp_loop_nest result if it is non-NULL. | |
| (cp_parser_omp_for_loop): Rename tiling variable to oacc_tiling. For | |
| OMP_CLAUSE_SIZES set collapse to list length of OMP_CLAUSE_SIZES_LIST. | |
| Use cp_parser_next_tokens_can_be_canon_loop instead of just | |
| checking for RID_FOR keyword. Remove spurious semicolon. Don't call | |
| c_omp_check_loop_binding_exprs if stmt is NULL. Skip and/or handle | |
| generated loops. Remove spurious ()s around & operands. | |
| (cp_parser_omp_tile_sizes, cp_parser_omp_tile): New functions. | |
| (OMP_UNROLL_CLAUSE_MASK): Define. | |
| (cp_parser_omp_unroll): New function. | |
| (cp_parser_omp_construct): Handle PRAGMA_OMP_TILE and | |
| PRAGMA_OMP_UNROLL. | |
| (cp_parser_pragma): Likewise. | |
| * semantics.cc (finish_omp_clauses): Don't call | |
| fold_build_cleanup_point_expr for cases which obviously won't need it, | |
| like checked INTEGER_CSTs. Handle OMP_CLAUSE_{FULL,PARTIAL,SIZES} | |
| and diagnose full vs. partial conflict. Adjust wording of some of the | |
| conflicting clause diagnostic messages to include word clause. | |
| (finish_omp_for): Use decl equal to global_namespace as a marker for | |
| generated loop. Pass also body to dependent_omp_for_p. Skip | |
| generated loops. | |
| (finish_omp_for_block): Skip generated loops. | |
| * pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_{FULL,PARTIAL,SIZES}. | |
| (tsubst_stmt): Handle OMP_TILE and OMP_UNROLL. Handle or skip | |
| generated loops. | |
| (dependent_omp_for_p): Add body argument. If declv vector element | |
| is NULL, find generated loop. | |
| * cp-gimplify.cc (cp_gimplify_expr): Handle OMP_TILE and OMP_UNROLL. | |
| (cp_fold_r): Likewise. | |
| (cp_genericize_r): Likewise. Skip generated loops. | |
| 2024-06-04 Simon Martin <simon@nasilyan.com> | |
| * pt.cc (tsubst_expr): Add missing space after seen_error. | |
| (dependent_type_p): Likewise. | |
| 2024-06-04 Simon Martin <simon@nasilyan.com> | |
| PR c++/111106 | |
| * pt.cc (dependent_type_p): Don't fail assert during error recovery. | |
| 2024-06-03 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/115012 | |
| * parser.cc (cp_parser_direct_declarator): Handle | |
| abstract declarator starting with ... followed by opening paren. | |
| 2024-06-02 Simon Martin <simon@nasilyan.com> | |
| PR c++/109958 | |
| * typeck.cc (build_class_member_access_expr): Handle single OVERLOADs. | |
| (cp_build_addr_expr_1): Likewise. | |
| 2024-06-01 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114867 | |
| * cp-tree.h (OVL_PURVIEW_P): New. | |
| (ovl_iterator::purview_p): New. | |
| * module.cc (depset::hash::add_binding_entity): Only ignore | |
| entities not within module purview. Set OVL_PURVIEW_P on new | |
| OVERLOADs for emitted declarations. | |
| (module_state::read_cluster): Imported using-decls are always | |
| in purview, mark as OVL_PURVIEW_P. | |
| * name-lookup.h (enum WMB_Flags): New WMB_Purview flag. | |
| * name-lookup.cc (walk_module_binding): Set WMB_Purview as | |
| needed. | |
| (do_nonmember_using_decl): Don't remove from existing OVERLOADs. | |
| Also reveal non-exported decls. Also reveal 'extern "C"' decls. | |
| Add workaround to reveal non-function decls. | |
| * tree.cc (ovl_insert): Adjust to also set OVL_PURVIEW_P when | |
| needed. | |
| 2024-05-29 Jason Merrill <jason@redhat.com> | |
| PR c++/109753 | |
| * decl.cc (start_preparsed_function): Call decl_attributes. | |
| 2024-05-29 Jason Merrill <jason@redhat.com> | |
| * lang-specs.h: Add module interface extensions. | |
| 2024-05-29 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115223 | |
| * tree.cc (build_cp_fntype_variant): Propagate structural | |
| equality of the exception-less variant. | |
| 2024-05-28 Marek Polacek <polacek@redhat.com> | |
| PR c++/109396 | |
| * cp-tree.h (maybe_warn_self_move): Declare. | |
| * init.cc (perform_member_init): Call maybe_warn_self_move. | |
| * typeck.cc (maybe_warn_self_move): No longer static. Change the | |
| return type to bool. Also warn when called from | |
| a member-initializer-list. Drop the inform call. | |
| 2024-05-28 Marek Polacek <polacek@redhat.com> | |
| PR c++/114707 | |
| * call.cc (convert_for_arg_passing): Call set_target_expr_eliding. | |
| * typeck2.cc (replace_placeholders_for_class_temp_r): Don't use pset. | |
| (digest_nsdmi_init): Call cp_walk_tree_without_duplicates instead of | |
| cp_walk_tree. | |
| 2024-05-28 David Malcolm <dmalcolm@redhat.com> | |
| PR bootstrap/115167 | |
| PR bootstrap/115167 | |
| * call.cc: Replace include of "gcc-rich-location.h" with | |
| "c-family/c-type-mismatch.h". | |
| * error.cc: Likewise. | |
| * typeck.cc: Likewise. | |
| 2024-05-25 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/102345 | |
| * module.cc (module_may_redeclare): Update error message. | |
| 2024-05-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/115200 | |
| * parser.cc (cp_parser_error_1): Special-case unexpected module | |
| directives for better diagnostics. | |
| (cp_parser_module_declaration): Check that the module | |
| declaration is at global scope. | |
| (cp_parser_import_declaration): Sync error message with that in | |
| cp_parser_error_1. | |
| 2024-05-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * cp-tree.h (module_has_cmi_p): Also include header units. | |
| (module_maybe_has_cmi_p): Update comment. | |
| * module.cc (set_defining_module): Only need to track | |
| declarations for later exporting if the module may have a CMI. | |
| (set_defining_module_for_partial_spec): Likewise. | |
| * name-lookup.cc (pushdecl): Likewise. | |
| 2024-05-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * tree.cc (no_linkage_check): Anonymous types can't be accessed | |
| in a different TU. | |
| 2024-05-24 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114947 | |
| * cp-tree.h (set_defining_module_for_partial_spec): Declare. | |
| * module.cc (trees_in::decl_value): Track partial specs coming | |
| from partitions. | |
| (set_defining_module): Don't track partial specialisations here | |
| anymore. | |
| (set_defining_module_for_partial_spec): New function. | |
| * pt.cc (process_partial_specialization): Call it. | |
| 2024-05-23 Jason Merrill <jason@redhat.com> | |
| PR c++/115187 | |
| * init.cc (build_delete): Use get_target_expr instead of save_expr. | |
| * tree.cc (stabilize_expr): Update comment. | |
| 2024-05-22 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115159 | |
| * tree.cc (build_cp_fntype_variant): Always use structural | |
| equality for types with a complex exception specification. | |
| (fixup_deferred_exception_variants): Use structural equality | |
| for adjusted variants. | |
| * typeck.cc (comp_except_specs): Require == instead of | |
| cp_tree_equal for ce_exact noexcept-spec comparison. | |
| 2024-05-22 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * decl.cc (grokfndecl): Check for main functions with language | |
| linkage or module attachment. | |
| (grokvardecl): Check for extern 'C' entities named main. | |
| 2024-05-21 Jonathan Wakely <jwakely@redhat.com> | |
| PR libstdc++/107800 | |
| * cxxapi-data.csv <to_address>: Change dialect to cxx20. | |
| * std-name-hint.gperf: Regenerate. | |
| * std-name-hint.h: Regenerate. | |
| 2024-05-21 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115139 | |
| * pt.cc (tsubst_expr) <case CONST_DECL>: Exit early if args | |
| is empty. | |
| 2024-05-17 Patrick Palka <ppalka@redhat.com> | |
| PR c++/115114 | |
| * pt.cc (maybe_aggr_guide): Consider bases in the paren init case. | |
| 2024-05-15 Marek Polacek <polacek@redhat.com> | |
| PR c++/114854 | |
| * call.cc (convert_like_internal) <case ck_user>: Don't set | |
| TARGET_EXPR_DIRECT_INIT_P. | |
| 2024-05-15 Marek Polacek <polacek@redhat.com> | |
| DR 1693 | |
| PR c++/113760 | |
| DR 569 | |
| * parser.cc (extra_semi_kind): New. | |
| (maybe_warn_extra_semi): New. | |
| (cp_parser_declaration): Call maybe_warn_extra_semi. | |
| (cp_parser_member_declaration): Likewise. | |
| 2024-05-15 Jakub Jelinek <jakub@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| PR lto/113208 | |
| * cp-tree.h (maybe_optimize_cdtor): Remove. | |
| * decl2.cc (tentative_decl_linkage): Call maybe_make_one_only | |
| for implicit instantiations of maybe in charge ctors/dtors | |
| declared inline. | |
| (import_export_decl): Don't call maybe_optimize_cdtor. | |
| (c_parse_final_cleanups): Formatting fixes. | |
| * optimize.cc (can_alias_cdtor): Adjust condition, for | |
| HAVE_COMDAT_GROUP && DECL_ONE_ONLY && DECL_WEAK return true even | |
| if not DECL_INTERFACE_KNOWN. | |
| (maybe_clone_body): Don't clear DECL_SAVED_TREE, instead set it | |
| to void_node. | |
| (maybe_clone_body): Remove. | |
| * decl.cc (cxx_comdat_group): For DECL_CLONED_FUNCTION_P | |
| functions if SUPPORTS_ONE_ONLY return DECL_COMDAT_GROUP if already | |
| set. | |
| 2024-05-15 Jakub Jelinek <jakub@redhat.com> | |
| PR c/115103 | |
| * semantics.cc (finish_omp_clauses): Diagnose grainsize | |
| used together with num_tasks. | |
| 2024-05-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114994 | |
| * tree.cc (lvalue_kind) <case MODOP_EXPR>: For a class | |
| assignment, consider the result type. | |
| 2024-05-14 Simon Martin <simon-l.martin@laposte.net> | |
| PR c++/105760 | |
| * pt.cc (build_deduction_guide): Check for error_mark_node | |
| result from tsubst_arg_types. | |
| 2024-05-14 Jason Merrill <jason@redhat.com> | |
| * decl.cc (wrap_cleanups_r): Clarify comment. | |
| * init.cc (build_vec_init): Update comment. | |
| 2024-05-13 Patrick Palka <ppalka@redhat.com> | |
| * constraint.cc (norm_info::norm_info): Take a bool instead of | |
| tsubst_flags_t. | |
| (norm_info::generate_diagnostics): Turn this predicate function | |
| into a bool data member. | |
| (normalize_logical_operation): Adjust after norm_info changes. | |
| (normalize_concept_check): Likewise. | |
| (normalize_atom): Likewise. | |
| (get_normalized_constraints_from_info): Likewise. | |
| (normalize_concept_definition): Likewise. | |
| (normalize_constraint_expression): Likewise. | |
| (normalize_placeholder_type_constraints): Likewise. | |
| (satisfy_nondeclaration_constraints): Likewise. | |
| * cp-tree.h (enum tsubst_flags): Remove tf_norm. | |
| 2024-05-13 Ken Matsui <kmatsui@gcc.gnu.org> | |
| PR c++/115061 | |
| * semantics.cc (finish_trait_expr): Use rank instead of | |
| __array_rank. | |
| 2024-05-13 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114974 | |
| PR c++/114901 | |
| PR c++/114903 | |
| * pt.cc (maybe_aggr_guide): Fix obtaining TYPE_FIELDS in | |
| the paren init case. Hoist out partial substitution logic | |
| to apply to the paren init case as well. | |
| (alias_ctad_tweaks): Substitute outer template arguments into | |
| a guide's constraints. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __is_nothrow_invocable. | |
| * constraint.cc (diagnose_trait_expr): Handle | |
| CPTK_IS_NOTHROW_INVOCABLE. | |
| * semantics.cc (trait_expr_value): Likewise. | |
| (finish_trait_expr): Likewise. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __is_invocable. | |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_INVOCABLE. | |
| * semantics.cc (trait_expr_value): Likewise. | |
| (finish_trait_expr): Likewise. | |
| * cp-tree.h (build_invoke): New function. | |
| * method.cc (build_invoke): New function. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __array_rank. | |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_RANK. | |
| * semantics.cc (trait_expr_value): Likewise. | |
| (finish_trait_expr): Likewise. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __decay. | |
| * semantics.cc (finish_trait_type): Handle CPTK_DECAY. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __add_rvalue_reference. | |
| * semantics.cc (finish_trait_type): Handle | |
| CPTK_ADD_RVALUE_REFERENCE. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __add_lvalue_reference. | |
| * semantics.cc (finish_trait_type): Handle | |
| CPTK_ADD_LVALUE_REFERENCE. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __remove_all_extents. | |
| * semantics.cc (finish_trait_type): Handle | |
| CPTK_REMOVE_ALL_EXTENTS. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __remove_extent. | |
| * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_EXTENT. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __add_pointer. | |
| * semantics.cc (finish_trait_type): Handle CPTK_ADD_POINTER. | |
| (object_type_p): New function. | |
| (referenceable_type_p): Likewise. | |
| (trait_expr_value): Use object_type_p. | |
| 2024-05-11 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __is_unbounded_array. | |
| * constraint.cc (diagnose_trait_expr): Handle | |
| CPTK_IS_UNBOUNDED_ARRAY. | |
| * semantics.cc (trait_expr_value): Likewise. | |
| (finish_trait_expr): Likewise. | |
| 2024-05-10 Jakub Jelinek <jakub@redhat.com> | |
| PR target/114968 | |
| * cp-tree.h (atexit_fn_ptr_type_node, cleanup_type): Adjust macro | |
| comments. | |
| (get_cxa_atexit_fn_ptr_type): Declare. | |
| * decl.cc (get_atexit_fn_ptr_type): Adjust function comment, only | |
| build type for atexit argument. | |
| (get_cxa_atexit_fn_ptr_type): New function. | |
| (get_atexit_node): Call get_cxa_atexit_fn_ptr_type rather than | |
| get_atexit_fn_ptr_type when using __cxa_atexit. | |
| (get_thread_atexit_node): Call get_cxa_atexit_fn_ptr_type | |
| rather than get_atexit_fn_ptr_type. | |
| (start_cleanup_fn): Add ob_parm argument, call | |
| get_cxa_atexit_fn_ptr_type or get_atexit_fn_ptr_type depending | |
| on it and create PARM_DECL also based on that argument. | |
| (register_dtor_fn): Adjust start_cleanup_fn caller, use | |
| get_cxa_atexit_fn_ptr_type rather than get_atexit_fn_ptr_type | |
| for use_dtor casts. | |
| * except.cc (build_throw): Use get_cxa_atexit_fn_ptr_type (). | |
| 2024-05-09 Marek Polacek <polacek@redhat.com> | |
| PR c++/114983 | |
| * pt.cc (tsubst_expr) <case SIZEOF_EXPR>: Use copy_warning. | |
| * semantics.cc (finish_parenthesized_expr): Also suppress | |
| -Wsizeof-array-div. | |
| 2024-05-09 Marek Polacek <polacek@redhat.com> | |
| PR c++/85889 | |
| * lambda.cc (add_capture): Add a pedwarn for capturing structured | |
| bindings. | |
| 2024-05-08 Marek Polacek <polacek@redhat.com> | |
| PR c++/113582 | |
| * parser.cc (cp_parser_label_for_labeled_statement): suppress_warning | |
| if it's not enabled at input_location. | |
| * pt.cc (tsubst_stmt): Call copy_warning. | |
| 2024-05-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114856 | |
| * call.cc (make_temporary_var_for_ref_to_temp): Set context for | |
| temporaries with linkage. | |
| * init.cc (create_temporary_var): Revert to only set context | |
| when in a function decl. | |
| 2024-05-07 Andrew Pinski <quic_apinski@quicinc.com> | |
| PR c++/89224 | |
| * constexpr.cc (cxx_eval_array_reference): Compare main variants | |
| for the vector/array types instead of the types directly. | |
| 2024-05-07 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114459 | |
| * parser.cc (cp_parser_member_declaration): Implement C++26 | |
| P2893R3 - Variadic friends. Parse friend type declarations | |
| with ... or with more than one friend type specifier. | |
| * friend.cc (make_friend_class): Allow TYPE_PACK_EXPANSION. | |
| * pt.cc (instantiate_class_template): Handle PACK_EXPANSION_P | |
| in friend classes. | |
| 2024-05-07 Marek Polacek <polacek@redhat.com> | |
| * decl.cc (duplicate_decls): Don't check VAR_P before | |
| DECL_DECOMPOSITION_P. | |
| * init.cc (build_aggr_init): Likewise. | |
| * parser.cc (cp_parser_range_for): Likewise. | |
| (do_range_for_auto_deduction): Likewise. | |
| (cp_convert_range_for): Likewise. | |
| (cp_convert_omp_range_for): Likewise. | |
| (cp_finish_omp_range_for): Likewise. | |
| * pt.cc (extract_locals_r): Likewise. | |
| (tsubst_omp_for_iterator): Likewise. | |
| (tsubst_decomp_names): Likewise. | |
| (tsubst_stmt): Likewise. | |
| * typeck.cc (maybe_warn_about_returning_address_of_local): Likewise. | |
| 2024-05-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | |
| * Make-lang.in (cc1plus$(exeext)): Remove $(NETLIBS). | |
| 2024-05-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114954 | |
| * cp-tree.h (IS_FAKE_BASE_TYPE): Also apply to unions. | |
| 2024-05-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114275 | |
| * cp-tree.h (remove_defining_module): Declare. | |
| * decl.cc (duplicate_decls): Call remove_defining_module on | |
| to-be-freed newdecl. | |
| * module.cc (imported_temploid_friends): Mark as GTY root... | |
| (init_modules): ...and allocate from ggc. | |
| (trees_in::decl_value): Only track for declarations that won't | |
| be discarded. | |
| (remove_defining_module): New function. | |
| 2024-05-06 Qing Zhao <qing.zhao@oracle.com> | |
| PR c/53548 | |
| * decl.cc (layout_var_decl): Handle the cases when the DECL is | |
| union with a flexible array member initializer. | |
| 2024-05-06 Qing Zhao <qing.zhao@oracle.com> | |
| PR c/53548 | |
| * class.cc (diagnose_flexarrays): Change error to pdewarn for the case | |
| flexible array members alone in structures. | |
| * decl.cc (grokdeclarator): Change error to pdewarn for the case | |
| flexible array members in unions. | |
| 2024-05-03 Jason Merrill <jason@redhat.com> | |
| PR c++/114935 | |
| * cp-gimplify.cc (cp_genericize_init): Add flags parm. | |
| (cp_genericize_init_expr): Pass nullptr. | |
| (cp_genericize_target_expr): Handle cleanup flags. | |
| * typeck2.cc (build_disable_temp_cleanup): Factor out of... | |
| (split_nonconstant_init): ...here. | |
| * cp-tree.h (build_disable_temp_cleanup): Declare. | |
| 2024-05-03 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __is_pointer. | |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_POINTER. | |
| * semantics.cc (trait_expr_value): Likewise. | |
| (finish_trait_expr): Likewise. | |
| 2024-05-03 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __is_volatile. | |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_VOLATILE. | |
| * semantics.cc (trait_expr_value): Likewise. | |
| (finish_trait_expr): Likewise. | |
| 2024-05-03 Ken Matsui <kmatsui@gcc.gnu.org> | |
| * cp-trait.def: Define __is_const. | |
| * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_CONST. | |
| * semantics.cc (trait_expr_value): Likewise. | |
| (finish_trait_expr): Likewise. | |
| 2024-05-03 Patrick Palka <ppalka@redhat.com> | |
| * coroutines.cc (instantiate_coro_traits): Adjust call to | |
| lookup_template_class. | |
| (instantiate_coro_handle_for_promise_type): Likewise. | |
| * cp-tree.h (adjust_type_for_entering_scope): Declare. | |
| (lookup_template_class): Adjust declaration. | |
| * decl.cc (make_typename_type): Adjust call to | |
| lookup_template_class. Likewise. | |
| (get_tuple_size): Likewise. | |
| (get_tuple_element_type): Likewise. | |
| * pt.cc (adjust_type_for_entering_scope): Define. | |
| (tsubst_entering_scope): Define. | |
| (lookup_template_class): Remove entering_scope parameter. | |
| Replace tsubst_aggr_type call with tsubst_entering_scope. | |
| (tsubst_aggr_type): Remove. | |
| (tsubst_aggr_type_1): Inline into tsubst. | |
| (tsubst_function_decl): Replace tsubst_aggr_type call | |
| with tsubst_entering_scope. | |
| (tsubst_template_decl): Likewise. | |
| (tsubst_decl): Likewise. | |
| (tsubst) <case RECORD_TYPE, UNION_TYPE, ENUMERAL_TYPE>: | |
| Inlined from tsubst_aggr_type_1. | |
| <case BOUND_TEMPLATE_TEMPLATE_PARM>: Adjust calls to | |
| lookup_template_class. | |
| <case TYPENAME_TYPE>: Replace tsubst_aggr_type call with | |
| tsubst_entering_scope. | |
| <case UNBOUND_CLASS_TEMPLATE>: Likewise. | |
| Increment processing_template_decl when substituting the | |
| context. | |
| (tsubst_expr) <case FIELD_DECL>: Replace tsubst_aggr_type | |
| call with tsubst_entering_scope. | |
| <case TEMPLATE_DECL>: Likewise. | |
| (instantiate_template): Likewise. | |
| (resolve_typename_type): Adjust lookup_template_class call | |
| and call adjust_type_for_entering_scope afterward. | |
| (listify): Adjust lookup_template_class call. | |
| (alias_ctad_tweaks): Likewise. | |
| * semantics.cc (finish_template_type): Adjust lookup_template_class | |
| call and maybe call adjust_type_for_entering_scope afterward. | |
| 2024-05-02 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114917 | |
| * parser.cc (cp_parser_declaration_seq_opt): Clear | |
| parser->in_unbraced_* flags when parsing toplevel declarations. | |
| 2024-05-02 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114458 | |
| * parser.cc (cp_parser_pure_specifier): Implement C++26 P2573R2 | |
| - = delete("should have a reason");. Parse deleted-function-body. | |
| * decl.cc (duplicate_decls): Copy DECL_INITIAL from DECL_DELETED_FN | |
| olddecl to newdecl if it is a STRING_CST. | |
| (cp_finish_decl): Handle deleted init with a reason. | |
| * decl2.cc: Include "escaped_string.h". | |
| (grokfield): Handle deleted init with a reason. | |
| (mark_used): Emit DECL_DELETED_FN reason in the message if any. | |
| * cp-tree.h (DECL_DELETED_FN): Document representation of | |
| = delete("reason") on a DECL. | |
| 2024-05-02 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114630 | |
| * module.cc (depset::hash::add_partial_entities): Mark GM | |
| specializations as unreached. | |
| (depset::hash::find_dependencies): Also reach entities in the | |
| DECL_TEMPLATE_SPECIALIZATIONS list. | |
| 2024-05-02 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/105224 | |
| * class.cc (finish_struct_1): Also push classes attached to a | |
| module into the 'keyed_classes' list. | |
| * decl.cc (record_key_method_defined): Don't push classes | |
| attached to a named module into the 'keyed_classes' list. | |
| * module.cc (trees_in::read_class_def): Likewise. | |
| * decl2.cc (import_export_class): Uniquely emit vtables for | |
| non-template classes attached to a named module. | |
| (vtables_uniquely_emitted): New function. | |
| (import_export_decl): Update comments. Update with knowledge | |
| about new kinds of uniquely emitted vtables. | |
| 2024-05-01 Jason Merrill <jason@redhat.com> | |
| * cp-tree.h (base_ctor_identifier): Adjust comment. | |
| * call.cc (in_charge_arg_for_name): Abort on deleting dtor. | |
| * decl2.cc (maybe_retrofit_in_chrg): Don't add it for | |
| destructors without vbases, either. | |
| * constexpr.cc (cxx_eval_call_expression): Remove workaround. | |
| 2024-05-01 Jason Merrill <jason@redhat.com> | |
| PR c++/113706 | |
| * decl.cc (decls_match): Handle memchr return type being | |
| const-qualified. | |
| 2024-05-01 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * name-lookup.cc (walk_module_binding): Use the | |
| partition-specific hidden flag instead of the top-level | |
| decl_hidden. | |
| 2024-05-01 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114868 | |
| * module.cc (depset::hash::add_binding_entity): Propagate | |
| OVL_USING_P for using-declarations. | |
| 2024-05-01 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/107688 | |
| * name-lookup.cc (push_namespace): Error when exporting | |
| namespace with internal linkage. | |
| * parser.h (struct cp_parser): Add new flag | |
| 'in_unbraced_export_declaration_p'. | |
| * parser.cc (cp_debug_parser): Print the new flag. | |
| (cp_parser_new): Initialise the new flag. | |
| (cp_parser_module_export): Set the new flag. | |
| (cp_parser_class_specifier): Clear and restore the new flag. | |
| (cp_parser_import_declaration): Imports can now appear directly | |
| in a linkage specification. | |
| (cp_parser_declaration): Categorise declarations as "name" or | |
| "special"; error on the later in contexts where the former is | |
| required. | |
| (cp_parser_class_head): Error when exporting a partial | |
| specialisation. | |
| 2024-04-30 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114456 | |
| * parser.cc (cp_parser_decomposition_declaration): Implement C++26 | |
| P0609R3 - Attributes for Structured Bindings. Parse attributed | |
| identifier lists for structured binding declarations, pass the | |
| attributes to start_decl. | |
| 2024-04-30 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/105320 | |
| PR c++/114275 | |
| * cp-tree.h (propagate_defining_module): Declare. | |
| (lookup_imported_hidden_friend): Declare. | |
| * decl.cc (duplicate_decls): Also check if hidden decls can be | |
| redeclared in this module. | |
| * module.cc (imported_temploid_friends): New. | |
| (init_modules): Initialize it. | |
| (trees_out::decl_value): Write it; don't consider imported | |
| temploid friends as attached to a module. | |
| (trees_in::decl_value): Read it. | |
| (get_originating_module_decl): Follow the owning decl for an | |
| imported temploid friend. | |
| (propagate_defining_module): New. | |
| * name-lookup.cc (get_mergeable_namespace_binding): New. | |
| (lookup_imported_hidden_friend): New. | |
| * pt.cc (tsubst_friend_function): Propagate defining module for | |
| new friend functions. | |
| (tsubst_friend_class): Lookup imported hidden friends. Check | |
| for valid module attachment of existing names. Propagate | |
| defining module for new classes. | |
| 2024-04-30 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * cp-tree.h (module_may_redeclare): Add default parameter. | |
| * decl.cc (duplicate_decls): Don't emit errors for failed | |
| module_may_redeclare. | |
| (xref_tag): Likewise. | |
| (start_enum): Likewise. | |
| * semantics.cc (begin_class_definition): Likewise. | |
| * module.cc (module_may_redeclare): Clean up logic. Emit error | |
| messages on failure. | |
| 2024-04-30 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114889 | |
| * module.cc (trees_in::read_class_def): Look through | |
| TEMPLATE_DECL when adding to CLASSTYPE_BEFRIENDING_CLASSES. | |
| 2024-04-30 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114888 | |
| * typeck.cc (cp_build_binary_op) <case *_DIV_*>: Add missing | |
| dependence check for the second sizeof operand. | |
| 2024-04-26 Patrick Palka <ppalka@redhat.com> | |
| * error.cc (print_instantiation_partial_context_line): Clear the | |
| pretty printer prefix around the call to diagnostic_show_locus. | |
| 2024-04-25 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/111284 | |
| * constexpr.cc (cxx_bind_parameters_in_call): For PARM_DECLs with | |
| TREE_ADDRESSABLE types use vc_glvalue rather than vc_prvalue for | |
| cxx_eval_constant_expression and if it doesn't have the same | |
| type as it should, cast the reference type to reference to type | |
| before convert_from_reference and instead of adjust_temp_type | |
| take address of the arg, cast to reference to type and then | |
| convert_from_reference. | |
| (cxx_eval_constant_expression) <case PARM_DECL>: For lval case | |
| on parameters with TREE_ADDRESSABLE types lookup result in | |
| ctx->globals if possible. Otherwise if lookup in ctx->globals | |
| was successful for parameter with TREE_ADDRESSABLE type, | |
| recurse with vc_prvalue on the returned value. | |
| 2024-04-25 Jakub Jelinek <jakub@redhat.com> | |
| PR lto/113208 | |
| * cp-tree.h (maybe_optimize_cdtor): Declare. | |
| * decl2.cc (import_export_decl): Call it for cloned cdtors. | |
| * optimize.cc (maybe_optimize_cdtor): New function. | |
| 2024-04-24 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114709 | |
| * constexpr.cc (cxx_fold_indirect_ref): Restrict object/offset | |
| canonicalization to RECORD_TYPE member accesses. | |
| 2024-04-23 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * parser.cc (cp_parser_parameter_declaration): Check if | |
| decl_specifiers.type is null. | |
| 2024-04-23 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114795 | |
| * module.cc (trees_in::is_matching_decl): Propagate deduced | |
| function return type. | |
| 2024-04-23 Jakub Jelinek <jakub@redhat.com> | |
| * parser.cc (cp_parser_using_declaration): Spelling fix: favour | |
| -> favor. | |
| 2024-04-23 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114784 | |
| * method.cc (implicitly_declare_fn): Call clone_attrs | |
| on DECL_ATTRIBUTES on STRIP_TEMPLATE (inherited_ctor) rather than | |
| inherited_ctor. Also copy DECL_DISREGARD_INLINE_LIMITS flag from it. | |
| 2024-04-23 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114078 | |
| * decl.cc (grokdeclarator): Check allocation functions for xobj | |
| parameters. | |
| 2024-04-16 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114706 | |
| * constexpr.cc (check_bit_cast_type): Handle ARRAY_TYPE. | |
| 2024-04-15 Nathaniel Shead <nathanieloshead@gmail.com> | |
| Patrick Palka <ppalka@redhat.com> | |
| PR c++/114600 | |
| * module.cc (depset::hash::add_binding_entity): Require both | |
| WMB_Using and WMB_Export for GMF entities. | |
| 2024-04-14 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/106820 | |
| * module.cc (trees_in::decl_value): Assemble alias when needed. | |
| 2024-04-13 Patrick Palka <ppalka@redhat.com> | |
| * module.cc (struct bytes_in::bits_in): Define defaulted | |
| move ctor. | |
| (struct bytes_out::bits_out): Likewise. | |
| 2024-04-13 Patrick Palka <ppalka@redhat.com> | |
| * module.cc: Update comment about classes defined within. | |
| (class data): Enclose in an anonymous namespace. | |
| (data::calc_crc): Moved from bytes::calc_crc. | |
| (class bytes): Remove. Move bit_flush to namespace scope. | |
| (class bytes_in): Enclose in an anonymous namespace. Inherit | |
| directly from data and adjust accordingly. Move b and bflush | |
| members to bits_in. | |
| (class bytes_out): As above. Remove is_set static data member. | |
| (bit_flush): Moved from class bytes. | |
| (struct bytes_in::bits_in): Define. | |
| (struct bytes_out::bits_out): Define. | |
| (bytes_in::stream_bits): Define. | |
| (bytes_out::stream_bits): Define. | |
| (bytes_out::bflush): Moved to bits_out/in. | |
| (bytes_in::bflush): Likewise | |
| (bytes_in::bfill): Removed. | |
| (bytes_out::b): Moved to bits_out/in. | |
| (bytes_in::b): Likewise. | |
| (class trees_in): Enclose in an anonymous namespace. | |
| (class trees_out): Enclose in an anonymous namespace. | |
| (trees_out::core_bools): Add bits_out/in parameter and use it. | |
| Unconditionally stream a bit for public_flag. Add early exits | |
| as appropriate. | |
| (trees_out::core_bools): Likewise. | |
| (trees_out::lang_decl_bools): Add bits_out/in parameter and use | |
| it. Flush the current bit buffer at the start. Unconditionally | |
| stream a bit for module_keyed_decls_p. | |
| (trees_in::lang_decl_bools): Likewise. | |
| (trees_out::lang_type_bools): Add bits_out/in parameter and use | |
| it. Flush the current bit buffer at the start. | |
| (trees_in::lang_type_bools): Likewise. | |
| (trees_out::tree_node_bools): Construct a bits_out object and | |
| use/pass it. | |
| (trees_in::tree_node_bools): Likewise. | |
| (trees_out::decl_value): Likewise. | |
| (trees_in::decl_value): Likewise. | |
| (module_state::write_define): Likewise. | |
| (module_state::read_define): Likewise. | |
| 2024-04-12 Marek Polacek <polacek@redhat.com> | |
| PR c++/109966 | |
| * typeck2.cc (potential_prvalue_result_of): Remove. | |
| (replace_placeholders_for_class_temp_r): Check TARGET_EXPR_ELIDING_P. | |
| Use a pset. Don't replace_placeholders in TARGET_EXPRs that initialize | |
| a function argument. | |
| 2024-04-12 Patrick Palka <ppalka@redhat.com> | |
| PR c++/99426 | |
| * module.cc (merge_kind::MK_local_type): New enumerator. | |
| (merge_kind_name): Update. | |
| (trees_out::chained_decls): Move BLOCK-specific handling | |
| of DECL_LOCAL_DECL_P decls to ... | |
| (trees_out::core_vals) <case BLOCK>: ... here. Stream | |
| BLOCK_VARS manually. | |
| (trees_in::core_vals) <case BLOCK>: Stream BLOCK_VARS | |
| manually. Handle deduplicated local types.. | |
| (trees_out::key_local_type): Define. | |
| (trees_in::key_local_type): Define. | |
| (trees_out::get_merge_kind) <case FUNCTION_DECL>: Return | |
| MK_local_type for a local type. | |
| (trees_out::key_mergeable) <case FUNCTION_DECL>: Use | |
| key_local_type. | |
| (trees_in::key_mergeable) <case FUNCTION_DECL>: Likewise. | |
| (trees_in::is_matching_decl): Be flexible with type mismatches | |
| for local entities. | |
| (trees_in::register_duplicate): Also register the | |
| DECL_TEMPLATE_RESULT of a TEMPLATE_DECL as a duplicate. | |
| (depset_cmp): Return 0 for equal IDENTIFIER_HASH_VALUEs. | |
| 2024-04-12 Jason Merrill <jason@redhat.com> | |
| Patrick Palka <ppalka@redhat.com> | |
| PR c++/113141 | |
| * call.cc (reference_binding): For an invalid cast, warn and don't | |
| recalculate. | |
| 2024-04-12 Jason Merrill <jason@redhat.com> | |
| Patrick Palka <ppalka@redhat.com> | |
| DR 1996 | |
| PR c++/113141 | |
| * call.cc (reference_binding): Check direct binding from | |
| a single-element list. | |
| 2024-04-12 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114691 | |
| * semantics.cc (simplify_loop_decl_cond): Use cp_build_unary_op with | |
| TRUTH_NOT_EXPR on ANNOTATE_EXPR argument (if any) rather than | |
| ANNOTATE_EXPR itself. | |
| 2024-04-12 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114393 | |
| * pt.cc (tsubst_lambda_expr): Also defer all dependent | |
| substitution. | |
| 2024-04-12 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114426 | |
| * constexpr.cc (is_valid_constexpr_fn): Return false/diagnose with | |
| complain destructors in classes with virtual bases. | |
| 2024-04-12 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114393 | |
| PR c++/107457 | |
| PR c++/93595 | |
| * cp-tree.h (LAMBDA_EXPR_EXTRA_ARGS): Define. | |
| (tree_lambda_expr::extra_args): New field. | |
| * module.cc (trees_out::core_vals) <case LAMBDA_EXPR>: Stream | |
| LAMBDA_EXPR_EXTRA_ARGS. | |
| (trees_in::core_vals) <case LAMBDA_EXPR>: Likewise. | |
| * pt.cc (has_extra_args_mechanism_p): Return true for LAMBDA_EXPR. | |
| (tree_extra_args): Handle LAMBDA_EXPR. | |
| (tsubst_lambda_expr): Use LAMBDA_EXPR_EXTRA_ARGS to defer templated | |
| substitution into a lambda-expr if we lost the template context. | |
| Add sanity check for error_mark_node result from begin_lambda_type. | |
| 2024-04-11 Patrick Palka <ppalka@redhat.com> | |
| PR c++/114303 | |
| * constraint.cc (tsubst_requires_expr): Clear | |
| REQUIRES_EXPR_EXTRA_ARGS before calling build_extra_args. | |
| * pt.cc (tree_extra_args): Define. | |
| (extract_locals_r): Assert *_EXTRA_ARGS is empty. | |
| (tsubst_stmt) <case IF_STMT>: Clear IF_SCOPE on the new | |
| IF_STMT. Call build_extra_args on the new IF_STMT instead | |
| of t which might already have IF_STMT_EXTRA_ARGS. | |
| 2024-04-11 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114409 | |
| * pt.cc (tsubst_expr) <case ANNOTATE_EXPR>: Move to ... | |
| (tsubst_stmt) <case ANNOTATE_EXPR>: ... here. Use tsubst_expr | |
| instead of RECUR for the last 2 arguments. | |
| 2024-04-10 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114462 | |
| * semantics.cc: Implement C++26 P2809R3 - Trivial infinite | |
| loops are not Undefined Behavior. | |
| (maybe_warn_for_constant_evaluated): Add trivial_infinite argument | |
| and emit special diagnostics for that case. | |
| (finish_if_stmt_cond): Adjust caller. | |
| (finish_loop_cond): New function. | |
| (finish_while_stmt): Use it. | |
| (finish_do_stmt): Likewise. | |
| (finish_for_stmt): Likewise. | |
| 2024-04-10 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/104040 | |
| * semantics.cc (expand_or_defer_fn_1): Keep DECL_SAVED_TREE for | |
| all vague linkage cdtors with modules. | |
| 2024-04-10 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/99377 | |
| * module.cc (trees_in::install_entity): Overwrite entity map | |
| index if installing from a partition. | |
| 2024-04-09 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114580 | |
| * semantics.cc (finish_if_stmt_cond): Call | |
| maybe_warn_for_constant_evaluated with IF_STMT_CONSTEXPR_P (if_stmt) | |
| as the second argument, rather than true/false depending on if | |
| it is if constexpr with non-dependent constant expression with | |
| bool type. | |
| 2024-04-09 Jakub Jelinek <jakub@redhat.com> | |
| * constexpr.cc (build_new_constexpr_heap_type): Fix duplicated words | |
| in comment; is is -> is. | |
| * cp-tree.def (CO_RETURN_EXPR): Fix duplicated words in comment; | |
| for for -> for. | |
| * parser.cc (fixup_blocks_walker): Fix duplicated words in comment; | |
| is is -> is. | |
| * semantics.cc (fixup_template_type): Fix duplicated words in comment; | |
| for for -> for. | |
| (finish_omp_for): Fix duplicated words in comment; the the -> the. | |
| * pt.cc (more_specialized_fn): Fix duplicated words in comment; | |
| think think -> think. | |
| (type_targs_deducible_from): Fix duplicated words in comment; the the | |
| -> the. | |
| 2024-04-05 Marek Polacek <polacek@redhat.com> | |
| PR c++/111132 | |
| * constexpr.cc (get_function_named_in_call): Use | |
| cp_get_fndecl_from_callee. | |
| * cvt.cc (cp_get_fndecl_from_callee): If there's a | |
| DECL_LOCAL_DECL_ALIAS, use it. | |
| 2024-04-05 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/114572 | |
| * cp-gimplify.cc (cxx_omp_clause_apply_fn): Call build_cplus_new | |
| on build_call_a result if it has class type. | |
| 2024-04-04 centurion <centurion009@proton.me> | |
| PR c++/114377 | |
| * pt.cc (find_template_parameter_info::found): Use TREE_TYPE for | |
| TEMPLATE_DECL instead of DECL_INITIAL. | |
| 2024-04-02 Marek Polacek <polacek@redhat.com> | |
| PR c++/114479 | |
| * semantics.cc (trait_expr_value) <case CPTK_IS_ARRAY>: Return false | |
| for zero-sized arrays. | |
| 2024-04-02 Marek Polacek <polacek@redhat.com> | |
| PR c++/103825 | |
| * typeck.cc (is_bitfield_expr_with_lowered_type): Handle | |
| CLEANUP_POINT_EXPR. | |
| 2024-04-02 Jason Merrill <jason@redhat.com> | |
| PR c++/114561 | |
| PR c++/114562 | |
| * call.cc (convert_like_internal): Avoid adding qualification | |
| conversion in direct reference binding. | |
| 2024-04-01 Jason Merrill <jason@redhat.com> | |
| * typeck.cc (maybe_warn_about_returning_address_of_local): | |
| Permerror in C++26. | |
| 2024-03-28 Jason Merrill <jason@redhat.com> | |
| PR c++/100667 | |
| * semantics.cc (same_type_ref_bind_p): New. | |
| (finish_trait_expr): Use it. | |
| 2024-03-26 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/112724 | |
| * error.cc (dump_expr): Handle EXCESS_PRECISION_EXPR like NOP_EXPR. | |
| 2024-03-25 Marek Polacek <polacek@redhat.com> | |
| PR c++/114349 | |
| * name-lookup.cc (maybe_push_to_top_level): For a non-lambda, | |
| don't push to top level if decl_function_context is non-null. | |
| * pt.cc (maybe_instantiate_noexcept): Use maybe_push_to_top_level. | |
| 2024-03-25 Marek Polacek <polacek@redhat.com> | |
| PR c++/114439 | |
| * init.cc (can_init_array_with_p): Return true for a VEC_INIT_EXPR | |
| wrapped in a TARGET_EXPR. | |
| 2024-03-22 Marek Polacek <polacek@redhat.com> | |
| PR c++/59465 | |
| * init.cc (can_init_array_with_p): New. | |
| (perform_member_init): Check it. | |
| 2024-03-21 Marek Polacek <polacek@redhat.com> | |
| PR c++/110323 | |
| * decl2.cc (min_vis_expr_r) <case VAR_DECL>: Do nothing for | |
| decl_constant_var_p VAR_DECLs. | |
| 2024-03-20 Jakub Jelinek <jakub@redhat.com> | |
| * coroutines.cc (expand_one_await_expression): Use | |
| integer_zero_node instead of build_int_cst (integer_type_node, 0) | |
| and integer_one_node instead of build_int_cst (integer_type_node, 1). | |
| 2024-03-19 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * cp-tree.h (module_maybe_has_cmi_p): New function. | |
| * decl.cc (grokfndecl): Mark block-scope functions as public if | |
| they could be visible in other TUs. | |
| * decl2.cc (no_linkage_error): Don't error for declarations that | |
| could be defined in other TUs since C++20. Suppress duplicate | |
| errors from 'check_global_declaration'. | |
| * tree.cc (no_linkage_check): In relaxed mode, don't consider | |
| types in a module CMI to have no linkage. | |
| 2024-03-16 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/112631 | |
| * cp-tree.h (named_module_attach_p): New function. | |
| * decl.cc (start_decl): Check for attachment not purview. | |
| (grokmethod): Likewise. | |
| 2024-03-14 Chung-Lin Tang <cltang@baylibre.com> | |
| * parser.cc (cp_parser_oacc_data_clause): Add parsing support for | |
| 'readonly' modifier, set OMP_CLAUSE_MAP_READONLY if readonly modifier | |
| found, update comments. | |
| (cp_parser_oacc_cache): Add parsing support for 'readonly' modifier, | |
| set OMP_CLAUSE__CACHE__READONLY if readonly modifier found, update | |
| comments. | |
| 2024-03-12 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/98645 | |
| PR c++/98688 | |
| PR c++/111224 | |
| * module.cc (enum tree_tag): Add new tag for builtin types. | |
| (trees_out::start): POLY_INT_CSTs can be emitted. | |
| (trees_in::start): Likewise. | |
| (trees_out::core_vals): Stream POLY_INT_CSTs. | |
| (trees_in::core_vals): Likewise. | |
| (trees_out::type_node): Handle vectors with multiple coeffs. | |
| (trees_in::tree_node): Likewise. | |
| (init_modules): Register target-specific builtin types. Bump | |
| initial capacity slightly. | |
| 2024-03-08 Jakub Jelinek <jakub@redhat.com> | |
| * pt.cc (tsubst_expr): Handle MEM_REF. | |
| 2024-03-08 Jakub Jelinek <jakub@redhat.com> | |
| PR debug/113918 | |
| * cp-objcp-common.cc (cp_type_dwarf_attribute): Return 1 | |
| for DW_AT_export_symbols on anonymous structs or unions. | |
| 2024-03-08 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/113802 | |
| * parser.cc (cp_parser_parameter_declaration): Move the xobj_param_p | |
| pack diagnostics after ellipsis handling and if an error is reported, | |
| pretend this specifier didn't appear. Formatting fix. | |
| 2024-03-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114229 | |
| * module.cc (trees_out::core_bools): Redetermine | |
| DECL_INTERFACE_KNOWN on stream-in for vtables and tinfo. | |
| * decl2.cc (import_export_decl): Add fixme for ABI changes with | |
| module vtables and tinfo. | |
| 2024-03-07 Patrick Palka <ppalka@redhat.com> | |
| PR c++/103994 | |
| * cp-tree.h (add_mergeable_specialization): Remove second | |
| parameter. | |
| * module.cc (depset::disc_bits::DB_ALIAS_TMPL_INST_BIT): Remove. | |
| (depset::disc_bits::DB_ALIAS_SPEC_BIT): Remove. | |
| (depset::is_alias_tmpl_inst): Remove. | |
| (depset::is_alias): Remove. | |
| (merge_kind::MK_tmpl_alias_mask): Remove. | |
| (merge_kind::MK_alias_spec): Remove. | |
| (merge_kind_name): Remove entries for alias specializations. | |
| (trees_out::core_vals) <case TEMPLATE_DECL>: Adjust after | |
| removing is_alias_tmpl_inst. | |
| (trees_in::decl_value): Adjust add_mergeable_specialization | |
| calls. | |
| (trees_out::get_merge_kind) <case depset::EK_SPECIALIZATION>: | |
| Use MK_decl_spec for alias template specializations. | |
| (trees_out::key_mergeable): Simplify after MK_tmpl_alias_mask | |
| removal. | |
| (depset::hash::make_dependency): Adjust after removing | |
| DB_ALIAS_TMPL_INST_BIT. | |
| (specialization_add): Don't allow alias templates when !decl_p. | |
| (depset::hash::add_specializations): Remove now-dead code | |
| accomodating alias template specializations in the type table. | |
| * pt.cc (lookup_template_class): Dispatch early to | |
| instantiate_alias_template for alias templates. Simplify | |
| accordingly. | |
| (add_mergeable_specialization): Remove alias_p parameter and | |
| simplify accordingly. | |
| 2024-03-07 Patrick Palka <ppalka@redhat.com> | |
| PR c++/110730 | |
| PR c++/105512 | |
| * module.cc (module_state::write_namespaces): Stream the | |
| abi_tag attribute of an inline namespace. | |
| (module_state::read_namespaces): Likewise. | |
| 2024-03-07 Marek Polacek <polacek@redhat.com> | |
| PR c++/110031 | |
| * pt.cc (lookup_and_finish_template_variable): Pass complain to | |
| mark_used. | |
| 2024-03-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/98356 | |
| * typeck2.cc (cxx_incomplete_type_diagnostic): Don't assume | |
| 'member' will be a FUNCTION_DECL (or something like it). | |
| 2024-03-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/98881 | |
| * module.cc (trees_out::tpl_parms_fini): Stream out DECL_CONTEXT | |
| for template template parameters. | |
| (trees_in::tpl_parms_fini): Read it. | |
| 2024-03-06 Marek Polacek <polacek@redhat.com> | |
| PR c++/114114 | |
| * pt.cc (maybe_instantiate_noexcept): Save/restore | |
| cp_unevaluated_operand, c_inhibit_evaluation_warnings, and | |
| cp_noexcept_operand around the tsubst_expr call. | |
| 2024-03-06 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/113629 | |
| * pt.cc (type_unification_real): Only use DEDUCE_CONV for the | |
| return type of a conversion function. | |
| 2024-03-06 Patrick Palka <ppalka@redhat.com> | |
| * module.cc (trees_out::get_merge_kind) <case depset::EK_DECL>: | |
| Accomodate class-scope DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P | |
| TEMPLATE_DECL. Consolidate IDENTIFIER_ANON_P cases. | |
| 2024-03-05 Patrick Palka <ppalka@redhat.com> | |
| * parser.cc (cp_parser_translation_unit): Relax GMF contents | |
| error into a pedwarn. | |
| 2024-03-04 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * name-lookup.cc (walk_module_binding): Remove completed FIXME. | |
| (do_nonmember_using_decl): Mark redeclared entities as exported | |
| when needed. Check for re-exporting internal linkage types. | |
| 2024-03-01 Patrick Palka <ppalka@redhat.com> | |
| PR c++/104919 | |
| PR c++/106009 | |
| * module.cc (depset::hash::sneakoscope): Remove. | |
| (trees_out::decl_node): Always add a dependency on a local type. | |
| (depset::hash::find_dependencies): Remove sneakoscope stuff. | |
| 2024-03-01 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114170 | |
| * module.cc (has_definition): Fall back to DECL_INITIALIZED_P | |
| when DECL_INITIAL is not set on a template. | |
| (module_state::write_inits): Only increment count when | |
| initializers are actually written. | |
| 2024-03-01 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/114005 | |
| * init.cc (create_temporary_var): Use current_scope instead of | |
| current_function_decl. | |
| 2024-03-01 Patrick Palka <ppalka@redhat.com> | |
| * decl.cc (maybe_register_incomplete_var): Restrict second | |
| branch to static data members from a not-yet-complete class. | |
| 2024-03-01 Marek Polacek <polacek@redhat.com> | |
| PR c++/110358 | |
| PR c++/109642 | |
| * call.cc (no_dangling_p): New. | |
| (reference_like_class_p): Use it. | |
| (do_warn_dangling_reference): Use it. Don't warn when the function | |
| or its enclosing class has attribute gnu::no_dangling. | |
| * tree.cc (cxx_gnu_attributes): Add gnu::no_dangling. | |
| (handle_no_dangling_attribute): New. | |
| 2024-03-01 Patrick Palka <ppalka@redhat.com> | |
| PR c++/110025 | |
| PR c++/114138 | |
| * cp-tree.h (make_cast_auto): Declare. | |
| * parser.cc (cp_parser_functional_cast): If the type is an auto, | |
| replace it with a level-less one via make_cast_auto. | |
| * pt.cc (find_parameter_packs_r): Don't treat level-less auto | |
| as a type parameter pack. | |
| (tsubst) <case TEMPLATE_TYPE_PARM>: Generalize CTAD placeholder | |
| auto handling to all level-less autos. | |
| (make_cast_auto): Define. | |
| (do_auto_deduction): Handle replacement of a level-less auto. | |
| 2024-03-01 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/92687 | |
| * decl.cc (lookup_decomp_type): Return NULL_TREE if decomp_type_table | |
| doesn't have entry for V. | |
| * semantics.cc (finish_decltype_type): If ptds.saved, assert | |
| DECL_HAS_VALUE_EXPR_P is true and decide on tuple vs. non-tuple based | |
| on if lookup_decomp_type is NULL or not. | |
| 2024-02-29 Marek Polacek <polacek@redhat.com> | |
| PR c++/113987 | |
| * call.cc (conv_binds_to_reference_parm_p): New. | |
| * cp-tree.h (conv_binds_to_reference_parm_p): Declare. | |
| * init.cc (find_uninit_fields_r): Call it. | |
| 2024-02-29 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/111710 | |
| * cp-tree.h (DECL_MODULE_KEYED_DECLS_P): Remove tree checking. | |
| (struct lang_decl_base): Update comments and fix whitespace. | |
| * module.cc (trees_out::lang_decl_bools): Always write | |
| module_keyed_decls_p flag... | |
| (trees_in::lang_decl_bools): ...and always read it. | |
| (trees_out::decl_value): Handle all kinds of keyed decls. | |
| (trees_in::decl_value): Likewise. | |
| (trees_in::tree_value): Deduplicate LAMBDA_EXPRs. | |
| (maybe_key_decl): Also support lambdas attached to fields, | |
| parameters, and types. Key lambdas attached to fields to their | |
| class. | |
| (trees_out::get_merge_kind): Likewise. | |
| (trees_out::key_mergeable): Likewise. | |
| (trees_in::key_mergeable): Support keyed decls in a TYPE_DECL | |
| container. | |
| * parser.cc (cp_parser_class_head): Start a lambda scope when | |
| parsing base classes. | |
| 2024-02-28 Jakub Jelinek <jakub@redhat.com> | |
| Patrick Palka <ppalka@redhat.com> | |
| PR c++/113976 | |
| * decl.cc (grokdeclarator): Don't call cp_apply_type_quals_to_decl | |
| on DECL_TEMPLATE_INSTANTIATED VAR_DECLs. | |
| 2024-02-28 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/113970 | |
| PR c++/114013 | |
| * decl.cc (make_rtl_for_nonlocal_decl): Don't defer inline | |
| variables. | |
| 2024-02-23 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/113083 | |
| * cp-gimplify.cc (cp_fold): For targetm.cxx.cdtor_returns_this () | |
| wrap r into a COMPOUND_EXPR and return folded CALL_EXPR_ARG (x, 0). | |
| 2024-02-19 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113966 | |
| * constraint.cc (tsubst_compound_requirement): Don't check | |
| the noexcept condition or the return-type-requirement when | |
| partially substituting. | |
| 2024-02-17 Marek Polacek <polacek@redhat.com> | |
| PR c++/113158 | |
| * search.cc (maybe_check_overriding_exception_spec): Defer checking | |
| when a noexcept couldn't be instantiated & evaluated to false/true. | |
| 2024-02-16 Marek Polacek <polacek@redhat.com> | |
| DR 1351 | |
| * search.cc (maybe_check_overriding_exception_spec): Don't error about | |
| a looser exception specification if the overrider is deleted. | |
| 2024-02-16 Marek Polacek <polacek@redhat.com> | |
| PR c++/113789 | |
| PR c++/113853 | |
| * typeck.cc (treat_lvalue_as_rvalue_p): Update code to better | |
| reflect [expr.prim.id.unqual]#4.2. | |
| 2024-02-16 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/113929 | |
| * parser.cc (cp_parser_parameter_declaration): Diagnose this specifier | |
| on template parameter declaration. | |
| 2024-02-16 Patrick Palka <ppalka@redhat.com> | |
| * module.cc (trees_out::core_bools): Stream TREE_UNAVAILABLE. | |
| (trees_in::core_bools): Likewise. | |
| (trees_out::core_vals): Stream LAMBDA_EXPR_REGEN_INFO. | |
| (trees_in::core_vals): Likewise. | |
| 2024-02-14 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/113708 | |
| * decl.cc (make_rtl_for_nonlocal_decl): Defer inline variables. | |
| * decl2.cc (import_export_decl): Support inline variables. | |
| 2024-02-14 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113908 | |
| PR c++/113332 | |
| * method.cc (synthesized_method_walk): Use maybe_push_to_top_level. | |
| 2024-02-14 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/99573 | |
| * decl.cc (start_enum): Reorder check for redeclaring in module. | |
| Add missing auto_diagnostic_groups. | |
| 2024-02-13 Marek Polacek <polacek@redhat.com> | |
| DR 1693 | |
| PR c++/113760 | |
| * parser.cc (cp_parser_member_declaration): Only pedwarn about an extra | |
| semicolon in C++98. | |
| 2024-02-13 Tobias Burnus <tburnus@baylibre.com> | |
| PR middle-end/113904 | |
| * parser.cc (cp_parser_omp_context_selector): Handle splitting of | |
| OMP_TRAIT_PROPERTY_EXPR into OMP_TRAIT_PROPERTY_{DEV_NUM,BOOL}_EXPR. | |
| 2024-02-13 Patrick Palka <ppalka@redhat.com> | |
| * Make-lang.in (CFLAGS-cp/module.o): Add $(ZLIBINC). | |
| * module.cc: Include <zlib.h>. | |
| (bytes::calc_crc): Use crc32 from zlib. | |
| (bytes_out::set_crc): Use crc32_combine from zlib. | |
| 2024-02-13 Patrick Palka <ppalka@redhat.com> | |
| * module.cc (depset::hash::add_specializations): Use | |
| STRIP_TEMPLATE consistently. | |
| (get_originating_module_decl): Handle class-scope CONST_DECL. | |
| 2024-02-13 Patrick Palka <ppalka@redhat.com> | |
| * lambda.cc (lambda_function): Call get_class_binding_direct | |
| instead of lookup_member to sidestep lazy loading. | |
| * name-lookup.cc (check_local_shadow): Punt if we're in a | |
| function context that's not actual parsing. | |
| 2024-02-13 Jason Merrill <jason@redhat.com> | |
| PR c++/113612 | |
| * pt.cc (process_partial_specialization): Return early | |
| on redeclaration. | |
| 2024-02-13 Marek Polacek <polacek@redhat.com> | |
| PR c++/112436 | |
| * except.cc (expand_start_catch_block): Pass tf_warning_or_error to | |
| is_admissible_throw_operand_or_catch_parameter. | |
| (build_throw): Pass complain to | |
| is_admissible_throw_operand_or_catch_parameter. | |
| (complete_ptr_ref_or_void_ptr_p): Add a tsubst_flags_t parameter. Use | |
| it. Return bool. Call complete_type_or_maybe_complain instead of | |
| complete_type_or_else. | |
| (is_admissible_throw_operand_or_catch_parameter): Add a tsubst_flags_t | |
| parameter. Use it. Guard error calls. | |
| 2024-02-13 Alex Coplan <alex.coplan@arm.com> | |
| PR c++/113658 | |
| * cp-objcp-common.cc (cp_feature_table): Remove entry for | |
| cxx_constexpr_string_builtins. | |
| 2024-02-12 Marek Polacek <polacek@redhat.com> | |
| PR c++/113545 | |
| * constexpr.cc (cxx_eval_switch_expr): If the condition doesn't reduce | |
| to an INTEGER_CST, consider it non-constant. | |
| 2024-02-10 Marek Polacek <polacek@redhat.com> | |
| DR 2237 | |
| PR c++/107126 | |
| PR c++/97202 | |
| * parser.cc (cp_parser_unqualified_id): Downgrade the DR2237 error to | |
| a pedwarn. | |
| (cp_parser_constructor_declarator_p): Likewise. | |
| 2024-02-10 Jakub Jelinek <jakub@redhat.com> | |
| * tree.cc (debug_binfo): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld" | |
| and casts to long. | |
| * pt.cc (print_template_statistics): Use HOST_SIZE_T_PRINT_DEC | |
| and casts to fmt_size_t instead of "%ld" and casts to long. | |
| * class.cc (dump_class_hierarchy_1): Use HOST_WIDE_INT_PRINT_UNSIGNED | |
| instead of "%lu" and casts to unsigned long. For TYPE_ALIGN, use | |
| %u instead of %lu and drop casts to unsigned long. | |
| * parser.cc (cp_lexer_peek_nth_token): Use HOST_SIZE_T_PRINT_DEC | |
| and casts to fmt_size_t instead of "%ld" and casts to long. | |
| 2024-02-09 Marek Polacek <polacek@redhat.com> | |
| PR c++/113834 | |
| * semantics.cc (finish_type_pack_element): Perform range checking | |
| before tree_to_shwi. | |
| 2024-02-09 Marek Polacek <polacek@redhat.com> | |
| PR c++/98388 | |
| * coroutines.cc (coro_rewrite_function_body): Pass tf_warning_or_error | |
| to build_throw. | |
| (morph_fn_to_coro): Likewise. | |
| * cp-tree.h (build_throw): Adjust. | |
| * except.cc (expand_end_catch_block): Pass tf_warning_or_error to | |
| build_throw. | |
| (build_throw): Add a tsubst_flags_t parameter. Use it. Remove | |
| redundant variable. Guard an inform call. | |
| * parser.cc (cp_parser_throw_expression): Pass tf_warning_or_error | |
| to build_throw. | |
| * pt.cc (tsubst_expr) <case THROW_EXPR>: Pass complain to build_throw. | |
| 2024-02-09 Patrick Palka <ppalka@redhat.com> | |
| PR c++/112580 | |
| * module.cc (trees_in::read_class_def): When streaming in | |
| an anonymous union field of an as-base class, don't overwrite | |
| ANON_AGGR_TYPE_FIELD. | |
| 2024-02-08 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113649 | |
| * pt.cc (do_class_deduction): Add outer_targs parameter. | |
| Substitute outer arguments into the CTAD template. | |
| (do_auto_deduction): Pass outer_targs to do_class_deduction. | |
| 2024-02-08 Jason Merrill <jason@redhat.com> | |
| * pt.cc (create_template_parm_object): Pass TARGET_EXPR to | |
| cxx_constant_value. | |
| 2024-02-06 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/113788 | |
| * parser.cc (CP_PARSER_FLAGS_PARAMETER): New enumerator. | |
| (cp_parser_decl_specifier_seq): Parse RID_THIS only if | |
| CP_PARSER_FLAGS_PARAMETER is set in flags. | |
| (cp_parser_parameter_declaration): Or in CP_PARSER_FLAGS_PARAMETER | |
| when calling cp_parser_decl_specifier_seq. | |
| 2024-02-06 Marek Polacek <polacek@redhat.com> | |
| * method.cc (early_check_defaulted_comparison): Add | |
| auto_diagnostic_group. | |
| 2024-02-06 Jason Merrill <jason@redhat.com> | |
| PR c++/107291 | |
| * method.cc (early_check_defaulted_comparison): Fail if not friend. | |
| 2024-02-05 Jason Merrill <jason@redhat.com> | |
| PR c++/111286 | |
| * tree.cc (rvalue): Don't drop cv-quals from an array. | |
| 2024-02-03 Patrick Palka <ppalka@redhat.com> | |
| PR c++/110006 | |
| PR c++/112769 | |
| * constraint.cc (subst_info::quiet): Accomodate non-diagnostic | |
| tsubst flags. | |
| (tsubst_valid_expression_requirement): Likewise. | |
| (tsubst_simple_requirement): Return a substituted _REQ node when | |
| processing_template_decl. | |
| (tsubst_type_requirement_1): Accomodate non-diagnostic tsubst | |
| flags. | |
| (tsubst_type_requirement): Return a substituted _REQ node when | |
| processing_template_decl. | |
| (tsubst_compound_requirement): Likewise. Accomodate non-diagnostic | |
| tsubst flags. | |
| (tsubst_nested_requirement): Likewise. | |
| (tsubst_requires_expr): Don't defer partial substitution when | |
| processing_constraint_expression_p is true, in which case return | |
| a substituted REQUIRES_EXPR. | |
| * pt.cc (tsubst_expr) <case REQUIRES_EXPR>: Accomodate | |
| non-diagnostic tsubst flags. | |
| 2024-02-02 Jason Merrill <jason@redhat.com> | |
| PR c++/110084 | |
| * pt.cc (tsubst_function_decl): Only check a function defaulted | |
| outside the class if the class is complete. | |
| 2024-02-02 Jason Merrill <jason@redhat.com> | |
| PR c++/112439 | |
| * constexpr.cc (cxx_eval_store_expression): Check empty_base | |
| before marking a CONSTRUCTOR readonly. | |
| 2024-02-02 Jason Merrill <jason@redhat.com> | |
| PR c++/113638 | |
| * cp-tree.h: Adjust comment. | |
| * pt.cc (instantiate_template): Set VAR_HAD_UNKNOWN_BOUND for | |
| variable template. | |
| 2024-02-01 Marek Polacek <polacek@redhat.com> | |
| * call.cc (reference_like_class_p): Consider even non-templates for | |
| std::span-like classes. | |
| 2024-02-01 Patrick Palka <ppalka@redhat.com> | |
| PR c++/112737 | |
| * pt.cc (iterative_hash_template_arg) <case TEMPLATE_DECL>: | |
| Adjust hashing to match cp_tree_equal. | |
| (ctp_hasher::hash): Also hash CLASS_PLACEHOLDER_TEMPLATE. | |
| * tree.cc (cp_tree_equal) <case TEMPLATE_DECL>: Return true | |
| for ttp TEMPLATE_DECLs if their TEMPLATE_TEMPLATE_PARMs are | |
| equivalent. | |
| * typeck.cc (structural_comptypes) <case TEMPLATE_TYPE_PARM>: | |
| Use cp_tree_equal to compare CLASS_PLACEHOLDER_TEMPLATE. | |
| 2024-02-01 Marek Polacek <polacek@redhat.com> | |
| PR c++/112437 | |
| * typeck.cc (treat_lvalue_as_rvalue_p): Bail out on sk_namespace in | |
| the move on throw of parms loop. | |
| 2024-01-30 Marek Polacek <polacek@redhat.com> | |
| PR c++/110358 | |
| PR c++/109640 | |
| * call.cc (reference_like_class_p): Don't warn for std::span-like | |
| classes. | |
| 2024-01-30 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113640 | |
| * call.cc (keep_unused_object_arg): Punt for an xobj member | |
| function. | |
| 2024-01-30 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113644 | |
| * pt.cc (unify) <case INTEGER_CST>: Handle NULL_TREE type. | |
| 2024-01-30 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/107594 | |
| * module.cc (get_module): Bail on empty name. | |
| 2024-01-29 Jason Merrill <jason@redhat.com> | |
| PR c++/113544 | |
| * pt.cc (instantiate_class_template): Don't partially instantiate. | |
| (tsubst_stmt): Likewise. | |
| 2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/113580 | |
| * module.cc (struct post_process_data): Create. | |
| (trees_in::post_decls): Use. | |
| (trees_in::post_process): Return entire vector at once. | |
| Change overload to take post_process_data instead of tree. | |
| (trees_out::write_function_def): Write needed flags from | |
| DECL_STRUCT_FUNCTION. | |
| (trees_in::read_function_def): Read them and pass to | |
| post_process. | |
| (module_state::read_cluster): Write flags into cfun. | |
| 2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/112899 | |
| * cp-tree.h (note_variable_template_instantiation): Rename to... | |
| (note_vague_linkage_variable): ...this. | |
| * decl2.cc (note_variable_template_instantiation): Rename to... | |
| (note_vague_linkage_variable): ...this. | |
| * pt.cc (instantiate_decl): Rename usage of above function. | |
| * module.cc (trees_in::read_var_def): Remember pending statics | |
| that we stream in. | |
| 2024-01-25 Jakub Jelinek <jakub@redhat.com> | |
| PR c++/113599 | |
| * typeck2.cc (build_m_component_ref): Use convert instead of | |
| cp_convert for pointer conversion. | |
| 2024-01-25 Jason Merrill <jason@redhat.com> | |
| PR c++/113598 | |
| * init.cc (build_vec_init): Don't use {} for PMF. | |
| 2024-01-25 Jason Merrill <jason@redhat.com> | |
| PR c++/109227 | |
| * coroutines.cc (build_co_await): Use cxx_maybe_build_cleanup. | |
| (build_actor_fn, process_conditional, maybe_promote_temps) | |
| (morph_fn_to_coro): Likewise. | |
| (expand_one_await_expression): Use build_cleanup. | |
| 2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/113405 | |
| * module.cc (set_defining_module): Track partial specialisations | |
| for all declarations. | |
| 2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/100707 | |
| * name-lookup.cc (add_imported_namespace): Don't mark namespaces | |
| as imported. | |
| 2024-01-24 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113529 | |
| * call.cc (add_operator_candidates): Propagate error_mark_node | |
| result after recursing to find rewritten candidates. | |
| 2024-01-23 Marek Polacek <polacek@redhat.com> | |
| PR c++/113256 | |
| PR c++/111607 | |
| PR c++/109640 | |
| * call.cc (do_warn_dangling_reference): Don't warn if the temporary | |
| is of lambda type. | |
| 2024-01-23 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/112820 | |
| PR c++/102607 | |
| * module.cc (trees_out::lang_type_bools): Write interface_only | |
| and interface_unknown. | |
| (trees_in::lang_type_bools): Read the above flags. | |
| (trees_in::decl_value): Reset CLASSTYPE_INTERFACE_* except for | |
| extern templates. | |
| (trees_in::read_class_def): Remove buggy extern template | |
| handling. | |
| 2024-01-19 Jason Merrill <jason@redhat.com> | |
| PR c++/113498 | |
| * pt.cc (decl_template_info): New fn. | |
| (get_template_info): Use it. | |
| 2024-01-19 Jason Merrill <jason@redhat.com> | |
| PR c++/112632 | |
| PR c++/112594 | |
| PR c++/111357 | |
| PR c++/104594 | |
| PR c++/67898 | |
| * cp-tree.h (IMPLICIT_CONV_EXPR_FORCED): New. | |
| * pt.cc (expand_integer_pack): Remove 111357 workaround. | |
| (maybe_convert_nontype_argument): Add force parm. | |
| (convert_template_argument): Handle alias template args | |
| specially. | |
| (tsubst_expr): Don't ignore IMPLICIT_CONV_EXPR_NONTYPE_ARG. | |
| * error.cc (dump_expr) [CASE_CONVERT]: Handle null optype. | |
| 2024-01-18 Marek Polacek <polacek@redhat.com> | |
| PR c++/113389 | |
| * decl.cc (grokdeclarator) <case cdk_function>: Set TREE_PURPOSE to | |
| NULL_TREE when emitting an error. | |
| 2024-01-17 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/112588 | |
| * module.cc (trees_in::read_function_def): Don't overwrite | |
| arguments. | |
| 2024-01-17 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113242 | |
| PR c++/99493 | |
| * pt.cc (invalid_tparm_referent_p) <case ADDR_EXPR>: Suppress | |
| DECL_ARTIFICIAL rejection test for class NTTP objects. | |
| 2024-01-16 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/113292 | |
| * decl2.cc (get_tls_wrapper_fn): Set DECL_CONTEXT. | |
| (c_parse_final_cleanups): Suppress warning for no definition of | |
| TLS wrapper functions in header modules. | |
| * module.cc (trees_out::lang_decl_vals): Write wrapped variable | |
| for TLS wrapper functions. | |
| (trees_in::lang_decl_vals): Read it. | |
| (trees_out::decl_value): Write TLS model for thread-local vars. | |
| (trees_in::decl_value): Read it for new decls. Remember to emit | |
| definitions of TLS wrapper functions later. | |
| 2024-01-16 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * name-lookup.h (enum scope_kind): Add 'sk_count'. | |
| * name-lookup.cc (cp_binding_level_descriptor): Add missing | |
| scope kinds. Add assertion that the list is up to date. Fix | |
| handling of explicit_spec_p. | |
| 2024-01-16 Marek Polacek <polacek@redhat.com> | |
| * decl.cc (grokdeclarator) <case cdk_function>: Tweak diagnostic | |
| messages. | |
| 2024-01-16 Marek Polacek <polacek@redhat.com> | |
| PR c++/113340 | |
| * decl.cc (grokdeclarator) <case cdk_function>: Clear | |
| is_xobj_member_function in case of an error. | |
| 2024-01-16 waffl3x <waffl3x@protonmail.com> | |
| PR c++/113307 | |
| * parser.cc (cp_parser_parameter_declaration): Reject packs | |
| on xobj params. | |
| 2024-01-15 Marek Polacek <polacek@redhat.com> | |
| PR c++/110065 | |
| * parser.cc (cp_parser_template_type_arg): Add auto checking. | |
| 2024-01-15 Patrick Palka <ppalka@redhat.com> | |
| * parser.cc (cp_parser_check_access_in_redeclaration): Don't | |
| check access for a partial or explicit specialization. | |
| * pt.cc (maybe_new_partial_specialization): Don't set TREE_PRIVATE | |
| or TREE_PROTECTED on the newly created partial specialization. | |
| 2024-01-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/104634 | |
| * pt.cc (maybe_new_partial_specialization): Propagate TREE_PUBLIC | |
| to the newly created partial specialization. | |
| 2024-01-15 Patrick Palka <ppalka@redhat.com> | |
| PR c++/109899 | |
| * init.cc (build_vec_delete_1): Assume expr_noexcept_p returns | |
| false in a template context. | |
| 2024-01-13 Jakub Jelinek <jakub@redhat.com> | |
| * mangle.cc (write_nested_name): Mangle explicit object | |
| member functions with H as per | |
| https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal. | |
| 2024-01-12 Jason Merrill <jason@redhat.com> | |
| PR c++/113038 | |
| * name-lookup.cc (lookup_elaborated_type): Look for bindings | |
| in the global namespace in the ABI namespace. | |
| 2024-01-12 Jason Merrill <jason@redhat.com> | |
| * call.cc (reversed_match): New. | |
| (enum class pmatch): New enum. | |
| (cand_parms_match): Add match_kind parm. | |
| (object_parms_correspond): Add fn parms. | |
| (joust): Adjust. | |
| * class.cc (xobj_iobj_parameters_correspond): Rename to... | |
| (iobj_parm_corresponds_to): ...this. Take the other | |
| type instead of a second function. | |
| (object_parms_correspond): Adjust. | |
| * cp-tree.h (iobj_parm_corresponds_to): Declare. | |
| 2024-01-11 Jason Merrill <jason@redhat.com> | |
| PR c++/113191 | |
| * class.cc (xobj_iobj_parameters_correspond): Add context parm. | |
| (object_parms_correspond): Factor out of... | |
| (add_method): ...here. | |
| * method.cc (defaulted_late_check): Use it. | |
| * call.cc (class_of_implicit_object): New. | |
| (object_parms_correspond): Overload taking two candidates. | |
| (cand_parms_match): Use it. | |
| (joust): Check reversed before comparing constraints. | |
| * cp-tree.h (object_parms_correspond): Declare. | |
| 2024-01-10 Tamar Christina <tamar.christina@arm.com> | |
| * parser.cc (cp_parser_pragma): Initialize to false. | |
| 2024-01-09 Jason Merrill <jason@redhat.com> | |
| * semantics.cc (is_object_parameter): New. | |
| * cp-tree.h (is_object_parameter): Declare. | |
| * call.cc (maybe_warn_class_memaccess): Use it. | |
| * search.cc (field_access_p): Use it. | |
| (class_of_object_parm): New. | |
| (field_accessor_p): Adjust for explicit object parms. | |
| 2024-01-09 Jason Merrill <jason@redhat.com> | |
| * call.cc (build_over_call): Refactor handle_arg lambda. | |
| * class.cc (xobj_iobj_parameters_correspond): Fix FIXME. | |
| * method.cc (defaulted_late_check): Adjust comments. | |
| 2024-01-09 waffl3x <waffl3x@protonmail.com> | |
| PR c++/102609 | |
| PR c++/102609 | |
| C++23 P0847R7 (deducing this) - CWG2586. | |
| * decl.cc (copy_fn_p): Accept xobj copy assignment functions. | |
| (move_signature_fn_p): Accept xobj move assignment functions. | |
| * method.cc (do_build_copy_assign): Handle defaulted xobj member | |
| functions. | |
| (defaulted_late_check): Comment. | |
| (defaultable_fn_check): Comment. | |
| 2024-01-09 waffl3x <waffl3x@protonmail.com> | |
| PR c++/102609 | |
| PR c++/102609 | |
| C++23 P0847R7 (deducing this) - xobj lambdas. | |
| * lambda.cc (build_capture_proxy): Don't fold direct object types. | |
| * parser.cc (cp_parser_lambda_declarator_opt): Handle xobj lambdas, | |
| diagnostics. Comments also updated. | |
| * pt.cc (tsubst_function_decl): Handle xobj lambdas. Check object | |
| type of xobj lambda call operator, diagnose incorrect types. | |
| (tsubst_lambda_expr): Update comment. | |
| * semantics.cc (finish_decltype_type): Also consider by-value object | |
| parameter qualifications. | |
| 2024-01-09 waffl3x <waffl3x@protonmail.com> | |
| PR c++/102609 | |
| PR c++/102609 | |
| C++23 P0847R7 (deducing this) - diagnostics. | |
| * class.cc (resolve_address_of_overloaded_function): Diagnostics. | |
| * cp-tree.h (TFF_XOBJ_FUNC): Define. | |
| * decl.cc (grokfndecl): Diagnostics. | |
| (grokdeclarator): Diagnostics. | |
| * error.cc (dump_aggr_type): Pass TFF_XOBJ_FUNC. | |
| (dump_lambda_function): Formatting for xobj lambda. | |
| (dump_function_decl): Pass TFF_XOBJ_FUNC. | |
| (dump_parameters): Formatting for xobj member functions. | |
| (function_category): Formatting for xobj member functions. | |
| * parser.cc (cp_parser_decl_specifier_seq): Diagnostics. | |
| (cp_parser_parameter_declaration): Diagnostics. | |
| * search.cc (look_for_overrides_here): Make xobj member functions | |
| override. | |
| (look_for_overrides_r): Reject an overriding xobj member function | |
| and diagnose it. | |
| * semantics.cc (finish_this_expr): Diagnostics. | |
| * typeck.cc (cp_build_addr_expr_1): Diagnostics. | |
| 2024-01-09 waffl3x <waffl3x@protonmail.com> | |
| PR c++/102609 | |
| PR c++/102609 | |
| C++23 P0847R7 (deducing this) - initial functionality. | |
| * class.cc (xobj_iobj_parameters_correspond): New function, checks | |
| for corresponding object parameters between xobj and iobj member | |
| functions. | |
| (add_method): Handle object parameters of xobj member functions, use | |
| xobj_iobj_parameters_correspond. | |
| * call.cc (build_over_call): Refactor, handle xobj member functions. | |
| (cand_parms_match): Handle object parameters of xobj and iobj member | |
| functions, use xobj_iobj_parameters_correspond. | |
| * cp-tree.h (enum cp_decl_spec): Add ds_this, add comments. | |
| * decl.cc (grokfndecl): Add xobj_func_p parameter. For xobj member | |
| functions, Set xobj_flag, don't set static_function flag. | |
| (grokdeclarator): Handle xobj member functions, tell grokfndecl. | |
| (grok_op_properties): Don't error for xobj operators. | |
| * parser.cc (cp_parser_decl_specifier_seq): Handle this specifier. | |
| (cp_parser_parameter_declaration): Set default argument to | |
| "this_identifier" for xobj parameters. | |
| (set_and_check_decl_spec_loc): Add "this", add comments. | |
| * tree.cc (build_min_non_dep_op_overload): Handle xobj operators. | |
| * typeck.cc (cp_build_addr_expr_1): Handle address-of xobj member | |
| functions. | |
| 2024-01-09 waffl3x <waffl3x@protonmail.com> | |
| Jason Merrill <jason@redhat.com> | |
| PR c++/102609 | |
| * cp-tree.h (struct lang_decl_fn): New data member. | |
| (DECL_NONSTATIC_MEMBER_FUNCTION_P): Poison. | |
| (DECL_IOBJ_MEMBER_FUNCTION_P): Define. | |
| (DECL_FUNCTION_XOBJ_FLAG): Define. | |
| (DECL_XOBJ_MEMBER_FUNCTION_P): Define. | |
| (DECL_OBJECT_MEMBER_FUNCTION_P): Define. | |
| (DECL_FUNCTION_MEMBER_P): Don't use | |
| DECL_NONSTATIC_MEMBER_FUNCTION_P. | |
| (DECL_CONST_MEMFUNC_P): Likewise. | |
| (DECL_VOLATILE_MEMFUNC_P): Likewise. | |
| (DECL_NONSTATIC_MEMBER_P): Likewise. | |
| * module.cc (trees_out::lang_decl_bools): Handle xobj_flag. | |
| (trees_in::lang_decl_bools): Handle xobj_flag. | |
| * call.cc (build_this_conversion) | |
| (add_function_candidate) | |
| (add_template_candidate_real) | |
| (add_candidates) | |
| (maybe_warn_class_memaccess) | |
| (cand_parms_match) | |
| (joust) | |
| (do_warn_dangling_reference) | |
| * class.cc (finalize_literal_type_property) | |
| (finish_struct) | |
| (resolve_address_of_overloaded_function) | |
| * constexpr.cc (is_valid_constexpr_fn) | |
| (cxx_bind_parameters_in_call) | |
| * contracts.cc (build_contract_condition_function) | |
| * cp-objcp-common.cc (cp_decl_dwarf_attribute) | |
| * cxx-pretty-print.cc (cxx_pretty_printer::postfix_expression) | |
| (cxx_pretty_printer::declaration_specifiers) | |
| (cxx_pretty_printer::direct_declarator) | |
| * decl.cc (cp_finish_decl) | |
| (grok_special_member_properties) | |
| (start_preparsed_function) | |
| (record_key_method_defined) | |
| * decl2.cc (cp_handle_deprecated_or_unavailable) | |
| * init.cc (find_uninit_fields_r) | |
| (build_offset_ref) | |
| * lambda.cc (lambda_expr_this_capture) | |
| (maybe_generic_this_capture) | |
| (nonlambda_method_basetype) | |
| * mangle.cc (write_nested_name) | |
| * method.cc (early_check_defaulted_comparison) | |
| (skip_artificial_parms_for) | |
| (num_artificial_parms_for) | |
| * pt.cc (is_specialization_of_friend) | |
| (determine_specialization) | |
| (copy_default_args_to_explicit_spec) | |
| (check_explicit_specialization) | |
| (tsubst_contract_attribute) | |
| (check_non_deducible_conversions) | |
| (more_specialized_fn) | |
| (maybe_instantiate_noexcept) | |
| (register_parameter_specializations) | |
| (value_dependent_expression_p) | |
| * search.cc (shared_member_p) | |
| (lookup_member) | |
| (field_access_p) | |
| * semantics.cc (finish_omp_declare_simd_methods) | |
| * tree.cc (lvalue_kind) | |
| * typeck.cc (invalid_nonstatic_memfn_p): Don't use | |
| DECL_NONSTATIC_MEMBER_FUNCTION_P. | |
| 2024-01-09 Julian Brown <julian@codesourcery.com> | |
| * constexpr.cc (potential_consant_expression_1): Handle | |
| OMP_ARRAY_SECTION. | |
| * cp-tree.h (grok_omp_array_section, build_omp_array_section): Add | |
| prototypes. | |
| * decl2.cc (grok_omp_array_section): New function. | |
| * error.cc (dump_expr): Handle OMP_ARRAY_SECTION. | |
| * parser.cc (cp_parser_new): Initialize parser->omp_array_section_p. | |
| (cp_parser_statement_expr): Disallow array sections. | |
| (cp_parser_postfix_open_square_expression): Support OMP_ARRAY_SECTION | |
| parsing. | |
| (cp_parser_parenthesized_expression_list, cp_parser_lambda_expression, | |
| cp_parser_braced_list): Disallow array sections. | |
| (cp_parser_omp_var_list_no_open): Remove ALLOW_DEREF parameter, add | |
| MAP_LVALUE in its place. Support generalised lvalue parsing for | |
| OpenMP map, to and from clauses. Use OMP_ARRAY_SECTION | |
| code instead of TREE_LIST to represent OpenMP array sections. | |
| (cp_parser_omp_var_list): Remove ALLOW_DEREF parameter, add MAP_LVALUE. | |
| Pass to cp_parser_omp_var_list_no_open. | |
| (cp_parser_oacc_data_clause): Update call to cp_parser_omp_var_list. | |
| (cp_parser_omp_clause_map): Add sk_omp scope around | |
| cp_parser_omp_var_list_no_open call. | |
| * parser.h (cp_parser): Add omp_array_section_p field. | |
| * pt.cc (tsubst, tsubst_copy, tsubst_omp_clause_decl, | |
| tsubst_copy_and_build): Add OMP_ARRAY_SECTION support. | |
| * semantics.cc (handle_omp_array_sections_1, handle_omp_array_sections, | |
| cp_oacc_check_attachments, finish_omp_clauses): Use OMP_ARRAY_SECTION | |
| instead of TREE_LIST where appropriate. Handle more types of map | |
| expression. | |
| * typeck.cc (build_omp_array_section): New function. | |
| 2024-01-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| * module.cc (trees_out::write_var_def): Only write initializers | |
| in header modules. | |
| 2024-01-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/109679 | |
| * module.cc (depset::hash::add_binding_entity): Don't skip names | |
| in the GMF if they've been exported with a using declaration. | |
| 2024-01-07 Nathaniel Shead <nathanieloshead@gmail.com> | |
| PR c++/110808 | |
| * parser.cc (cp_parser_module_name): Rewrite to handle | |
| module-names and module-partitions independently. | |
| (cp_parser_module_partition): New function. | |
| (cp_parser_module_declaration): Parse module partitions | |
| explicitly. Don't change state if parsing module decl failed. | |
| (cp_parser_import_declaration): Handle different kinds of | |
| import-declarations locally. | |
| 2024-01-03 Patrick Palka <ppalka@redhat.com> | |
| PR c++/113064 | |
| * call.cc (reference_binding): Still try a conversion via a | |
| temporary if a direct conversion was bad. | |
| 2024-01-03 Kwok Cheung Yeung <kcy@codesourcery.com> | |
| * parser.cc (cp_parser_omp_clause_name): Move handling of indirect | |
| clause to correspond to alphabetical order. | |
| Copyright (C) 2024 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. |