| 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. |