mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
2372 lines
79 KiB
Plaintext
2372 lines
79 KiB
Plaintext
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.
|