mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
Rotate ChangeLog files for ChangeLogs with yearly cadence. Also remove empty lines before Form Feed line.
5734 lines
198 KiB
Plaintext
5734 lines
198 KiB
Plaintext
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.
|