| 2025-12-29 Egas Ribeiro <egas.g.ribeiro@gmail.com> |
| |
| PR c++/123080 |
| * parser.cc (cp_parser_skip_to_end_of_statement): Don't abort |
| implicit templates during tentative parsing. |
| (cp_parser_lambda_declarator_opt): Add cleanup for |
| fully_implicit_function_template_p before parsing |
| trailing_requires_clause. |
| |
| 2025-12-29 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119097 |
| PR c++/120005 |
| * constexpr.cc (potential_constant_expression_1): Fall back to |
| location from parent expression if needed. |
| * cp-gimplify.cc (enum fold_flags): Add ff_only_non_odr. |
| (cp_fold_data::cp_fold_data): Assert invariant for flags. |
| (cp_fold_omp_clause_refs_r): New function. |
| (cp_fold_r): Specially handle OMP_CLAUSE_DECL. |
| (cp_fold_function_non_odr_use): New function. |
| (cp_fold_non_odr_use_1): New function. |
| (cp_fold_maybe_rvalue): Fold non-ODR uses when requested. |
| (cp_fold_non_odr_use): New function. |
| (fold_caches): Increase number of caches. |
| (get_fold_cache): Use a new cache for non-ODR use walks. |
| (cp_fold): Skip most folding for non-ODR use walks; always |
| fold constant-initialized references; remove dead code to |
| fold __builtin_source_location. |
| * cp-tree.h (cp_fold_function_non_odr_use): Declare. |
| (cp_fold_non_odr_use): Declare. |
| * decl.cc (finish_function): Fold non-ODR uses before saving |
| constexpr fundef. Invoke PLUGIN_PRE_GENERICIZE before this |
| folding. |
| * ptree.cc (cxx_print_xnode): Handle TU_LOCAL_ENTITY. |
| * tree.cc (bot_manip): Propagate TREE_CONSTANT. |
| * typeck2.cc (digest_nsdmi_init): Fold non-ODR uses in NSDMIs. |
| |
| 2025-12-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122819 |
| * decl.cc (start_preparsed_function): Use |
| DECL_TEMPLOID_INSTANTIATION instead of |
| DECL_TEMPLATE_INSTANTIATION to check vague linkage. |
| * decl2.cc (vague_linkage_p): Likewise. |
| (c_parse_final_cleanups): Simplify condition. |
| * pt.cc (non_templated_friend_p): Namespace-scope friend |
| function declarations without a primary template are still |
| non-templated. |
| * semantics.cc (expand_or_defer_fn_1): Also check for temploid |
| friend functions. |
| |
| 2025-12-23 Egas Ribeiro <egas.g.ribeiro@gmail.com> |
| |
| PR c++/122550 |
| * decl.cc (member_like_constrained_friend_p): Check that the |
| friend's enclosing class is an implicit instantiation. |
| |
| 2025-12-23 Egas Ribeiro <egas.g.ribeiro@gmail.com> |
| |
| PR c++/122958 |
| * pt.cc (maybe_new_partial_specialization): Compare template |
| parameter lists when checking for existing specializations and |
| remove flag_concepts check. |
| |
| 2025-12-23 Egas Ribeiro <egas.g.ribeiro@gmail.com> |
| |
| PR c++/117518 |
| * parser.cc (cp_parser_lambda_expression): Clear |
| processing_template_parmlist when parsing lambda body. |
| |
| 2025-12-23 Dhruv Chawla <dhruvc@nvidia.com> |
| |
| * Make-lang.in: Bump GCOV version to 3. |
| |
| 2025-12-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122994 |
| * module.cc (depset::disc_bits): New flag |
| DB_IGNORED_EXPOSURE_BIT. |
| (depset::is_ignored_exposure_context): New getter. |
| (depset::hash::ignore_tu_local): Rename to... |
| (depset::hash::ignore_exposure): ...this, and make private. |
| (depset::hash::hash): Rename ignore_tu_local. |
| (depset::hash::ignore_exposure_if): New function. |
| (trees_out::decl_value): Don't build deps for keyed entities. |
| (trees_in::decl_value): Handle missing keys. |
| (trees_out::write_function_def): Use ignore_exposure_if. |
| (trees_out::write_var_def): Likewise. |
| (trees_out::write_class_def): Likewise. |
| (depset::hash::make_dependency): Set DB_IGNORED_EXPOSURE_BIT if |
| appropriate, or clear it otherwise. |
| (depset::hash::add_dependency): Rename ignore_tu_local. |
| (depset::hash::find_dependencies): Set ignore_exposure if in |
| such a context. |
| |
| 2025-12-22 Yuao Ma <c8ef@outlook.com> |
| |
| PR c++/123261 |
| * semantics.cc (expand_or_defer_fn_1): Use maybe_constexpr_fn. |
| |
| 2025-12-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122712 |
| * module.cc (depset::hash::dep_adl_info): New type. |
| (depset::hash::dep_adl_entity_list): New work list. |
| (depset::hash::hash): Create it. |
| (depset::hash::~hash): Release it. |
| (trees_out::tree_value): Cache possibly dependent |
| calls during tree walk. |
| (depset::hash::add_dependent_adl_entities): New function. |
| (depset::hash::find_dependencies): Process cached entities. |
| * name-lookup.cc (name_lookup::tentative): New member. |
| (name_lookup::name_lookup): Initialize it. |
| (name_lookup::preserve_state): Propagate tentative from previous |
| lookup. |
| (name_lookup::adl_namespace_fns): Don't search imported bindings |
| during tentative lookup. |
| (name_lookup::adl_class): Don't attempt to complete class types |
| during tentative lookup. |
| (name_lookup::search_adl): Skip type-dependent args and avoid |
| unnecessary work during tentative lookup. |
| (lookup_arg_dependent): Add tentative parameter. |
| * name-lookup.h (lookup_arg_dependent): Likewise. |
| |
| 2025-12-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122690 |
| * tree.cc (implicit_lifetime_type_p): Don't test is_trivially_xible, |
| instead try to lazily declare dtor and default, copy and move ctors |
| if needed and check for their triviality and whether they are |
| deleted. |
| |
| 2025-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/91388 |
| * semantics.cc (finish_static_assert): Suppress -Wreturn-type warnings |
| in functions with failed assertions. |
| |
| 2025-12-19 Jason Merrill <jason@redhat.com> |
| Egas Ribeiro <egas.g.ribeiro@tecnico.ulisboa.pt> |
| |
| PR c++/117034 |
| * parser.cc (maybe_start_implicit_template): Split out from... |
| (synthesize_implicit_template_parm): ...here. |
| (cp_parser_template_id): Call it. |
| |
| 2025-12-19 Egas Ribeiro <egas.g.ribeiro@tecnico.ulisboa.pt> |
| |
| * decl2.cc (mark_single_function): Return false for error_mark_node. |
| (mark_used): Likewise. |
| |
| 2025-12-19 Egas Ribeiro <egas.g.ribeiro@tecnico.ulisboa.pt> |
| |
| PR c++/123044 |
| * typeck2.cc (build_functional_cast_1): Call convert_from_reference |
| on template CAST_EXPR to match C-style cast behavior. |
| |
| 2025-12-19 Egas Ribeiro <egas.g.ribeiro@gmail.com> |
| |
| PR c++/122509 |
| * parser.cc (cp_parser_lookup_name): Use protect=2 instead of |
| protect=0 when calling lookup_member. |
| |
| 2025-12-19 Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_clause_uses_allocators): Accept |
| multiple clause-argument-specifications separated by ';'. |
| |
| 2025-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122772 |
| * tree.cc (cp_stabilize_bitfield_reference): New function. |
| (cp_stabilize_reference): Use it for stabilization of |
| clk_bitfield or clk_packed lvalues. |
| |
| 2025-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR debug/122968 |
| * decl.cc (cp_finish_decomp): For structured bindings at namespace |
| scope which have DECL_HAS_VALUE_EXPR_P set, call early_global_decl |
| debug hook and put all such structured bindings into |
| "structured bindings" attribute arguments on the underlying decl. |
| |
| 2025-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122834 |
| * typeck.cc (cp_compare_floating_point_conversion_ranks): Return |
| 3 if fmt2->b is 10 except for _Float16 vs. _Decimal128, in that |
| case return -2. |
| |
| 2025-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/123030 |
| * init.cc (build_vec_init): Call build_vec_delete_1 for -fexceptions |
| even if just type_build_dtor_call, not only when |
| TYPE_HAS_NONTRIVIAL_DESTRUCTOR. But register cleanups only |
| for TYPE_HAS_NONTRIVIAL_DESTRUCTOR. |
| |
| 2025-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_build_range_for_decls): If expansion_stmt_p, |
| where we are setting DECL_DECLARED_CONSTEXPR_P on begin/end, use |
| const qualified iter_type. |
| * pt.cc (finish_expansion_stmt): Use build_target_expr_with_type |
| with cv_unqualified to create it instead of get_target_expr to |
| make it non-const qualified. When creating VAR_DECLs with |
| DECL_DECLARED_CONSTEXPR_P, make sure they have const qualified |
| type unless they are references. |
| |
| 2025-12-19 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122922 |
| * module.cc (trees_in::post_types): New member. |
| (trees_in::trees_in): Initialize it. |
| (trees_in::~trees_in): Clean it up. |
| (trees_in::post_process_type): New functions. |
| (trees_in::tree_node): Save incomplete ARRAY_TYPEs for later |
| post-processing. |
| (module_state::read_cluster): Attempt to complete any |
| ARRAY_TYPEs we saved earlier. |
| |
| 2025-12-19 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122995 |
| * name-lookup.cc (maybe_record_mergeable_decl): Don't build a |
| STAT_HACK for namespaces. |
| |
| 2025-12-18 Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_assumption_clauses): Add |
| no_openmp_constructs clause. |
| |
| 2025-12-18 Patrick Palka <ppalka@redhat.com> |
| |
| * decl.cc (tag_name) <case none_type>: Return "typename" as if |
| typename_type. |
| |
| 2025-12-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/123186 |
| * parser.cc (cp_parser_template_id): Use TYPE_IDENTIFIER instead of |
| TYPE_NAME in second build_typename_type argument. |
| |
| 2025-12-18 Egas Ribeiro <egas.g.ribeiro@gmail.com> |
| Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/122070 |
| * pt.cc (type_targs_deducible_from): Fall back to |
| TYPE_TEMPLATE_INFO when TYPE_TEMPLATE_INFO_MAYBE_ALIAS is NULL. |
| |
| 2025-12-18 Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (OMP_TARGET_CLAUSE_MASK): Add |
| device_type clause. |
| |
| 2025-12-17 benwu25 <soggysocks206@gmail.com> |
| |
| * parser.cc (cp_parser_init_declarator): Adjust comment. |
| |
| 2025-12-17 benwu25 <soggysocks206@gmail.com> |
| |
| PR c++/121443 |
| * parser.cc (cp_parser_lambda_expression): Clear |
| in_declarator_p. |
| |
| 2025-12-17 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/123075 |
| * constraint.cc (evaluate_concept_check): Push to an unrelated |
| scope, but keep the same access context. |
| * pt.cc (tsubst_lambda_expr): Don't record lambda scopes for |
| lambdas attached to a concept. |
| |
| 2025-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| * parser.cc (cp_parser_template_id): Rebuild instead of modifying |
| a TYPENAME_TYPE corresponding to a dependently-scoped template. |
| |
| 2025-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (TYPENAME_TYPE_TAG_BIT_0): New. |
| (TYPENAME_TYPE_TAG_BIT_1): New. |
| (TYPENAME_TYPE_TAG_BIT_2): New. |
| (TYPENAME_IS_ENUM_P): Use get_typename_tag. |
| (TYPENAME_IS_CLASS_P): Rename to ... |
| (TYPENAME_IS_CLASS_OR_STRUCT_P): ... this, and use |
| get_typename_tag. |
| (TYPENAME_IS_UNION_P): Use get_typename_tag. |
| (TYPENAME_IS_RESOLVING_P): Use TREE_LANG_FLAG_3 |
| instead of _2. |
| (get_typename_tag): New. |
| (set_typename_tag): New. |
| (tag_name): Declare. |
| * decl.cc (typename_info): Replace bool fields with a single |
| tag_types field. |
| (typename_hasher::equal): Adjust. |
| (build_typename_type): Adjust. |
| (tag_name): Handle none_type and scope_type. |
| * error.cc (dump_type) <case TYPENAME_TYPE>: Use tag_name. |
| * module.cc (trees_out::type_node) <case TYPENAME_TYPE>: Use |
| get_typename_tag. |
| * pt.cc (tsubst) <case TYPENAME_TYPE>: Likewise. |
| |
| 2025-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (CLASSTYPE_LAMBDA_EXPR): Check CLASS_TYPE_P before |
| inspecting TYPE_POLYMORPHIC_P. |
| (TYPE_POLYMORPHIC_P): Restrict to RECORD_TYPE or UNION_TYPE. |
| Document its use of TREE_LANG_FLAG_2. |
| * parser.cc (noexcept_override_late_checks): Only |
| check TYPE_POLYMORPHIC_P on CLASS_TYPE_P types. |
| * rtti.cc (build_headof): Likewise. |
| (get_tinfo_ptr_dynamic): Likewise. |
| (build_typeid): Likewise. |
| |
| 2025-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/122752 |
| * pt.cc (tsubst) <case TYPENAME_TYPE>: Allow TYPENAME_TYPE |
| resolving to another wildcard type. |
| |
| 2025-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/122668 |
| PR c++/114764 |
| * parser.cc (cp_parser_class_specifier): Adjust after |
| changing the element type of unparsed_noexcepts. Pass |
| the class type to noexcept_override_late_checks. |
| (cp_parser_member_declaration): Set |
| CP_PARSER_FLAGS_DELAY_NOEXCEPT also for templated friends. |
| (noexcept_override_late_checks): Add class_type parameter. |
| (cp_parser_single_declaration): Set |
| CP_PARSER_FLAGS_DELAY_NOEXCEPT also for template friends |
| at class template scope. |
| (cp_parser_save_default_args): Push current_class_type |
| to unparsed_noexcepts. |
| * parser.h (cp_unparsed_functions_entry::noexcepts): |
| Change element type to cp_default_arg_entry. |
| * pt.cc (dependentish_scope_p): Revert r16-5425 change. |
| |
| 2025-12-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/123128 |
| * parser.cc (cp_parser_omp_clause_linear): Initialize next to NULL |
| rather than UNKNOWN_LOCATION. |
| |
| 2025-12-13 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_omp_clause_reduction): Provide fixit hints |
| for -Wdeprecated-openmp diagnostics. |
| (cp_parser_omp_clause_linear): Likewise. |
| (cp_parser_omp_clause_depend): Likewise. |
| (cp_parser_omp_clause_map): Likewise. Reset num_commas after the |
| diagnostics. |
| (cp_parser_omp_clause_proc_bind): Provide fixit hints for |
| -Wdeprecated-openmp diagnostics. |
| (cp_parser_omp_all_clauses): Move -Wdeprecated-openmp diagnostics |
| for to vs. enter here, add fixit hints for it. |
| (cp_parser_omp_master):Add MASTER_LOC argument. Provide fixit hints |
| for -Wdeprecated-openmp diagnostics. |
| (cp_parser_omp_parallel): Adjust cp_parser_omp_master caller. |
| (cp_parser_omp_declare_target): Don't emit -Wdeprecated-openmp |
| warning for to vs. enter here. |
| (cp_parser_omp_metadirective): Provide fixit hints for |
| -Wdeprecated-openmp diagnostics. |
| (cp_parser_omp_construct): Adjust cp_parser_omp_master caller. |
| |
| 2025-12-12 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * method.cc (constructible_expr): Emit diagnostics for abstract |
| types. |
| * typeck2.cc (abstract_virtuals_error): Use more accurate |
| wording for default case, and remove extranneous whitespace |
| in favour of a nesting level. |
| |
| 2025-12-12 Chung-Lin Tang <cltang@baylibre.com> |
| Tobias Burnus <tburnus@baylibre.com> |
| Andrew Stubbs <ams@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_clause_uses_allocators): New function. |
| (cp_parser_omp_clause_name, cp_parser_omp_all_clauses, |
| OMP_TARGET_CLAUSE_MASK): Handle uses_allocators. |
| * semantics.cc (finish_omp_clauses): Likewise. |
| * pt.cc (tsubst_omp_clauses): Likewise. |
| |
| 2025-12-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR testsuite/123098 |
| * parser.cc (cp_parser_omp_clause_reduction): Only emit |
| -Wdeprecated-openmp warning for CPP_MINUS if is_omp. |
| |
| 2025-12-11 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_omp_clause_reduction, |
| cp_parser_omp_clause_linear, cp_parser_omp_clause_depend, |
| cp_parser_omp_clause_map, cp_parser_omp_clause_proc_bind, |
| cp_parser_omp_master, cp_parser_omp_declare_target, |
| cp_parser_omp_metadirective): Formatting fixes. |
| |
| 2025-12-11 supers1ngular <supers1ngular@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_clause_reduction): Deprecate '-' |
| operator. |
| (cp_parser_omp_clause_linear): Deprecate modifiers with parens. |
| (cp_parser_omp_clause_depend): Deprecate sink and source. |
| (cp_parser_omp_clause_map): Map clause modifiers |
| comma-separated. |
| (cp_parser_omp_declare_target): Deprecate synonymous omp declare |
| target for omp begin declare target. Deprecate to clause. |
| (cp_parser_omp_metadirective): Deprecate default clause on |
| metadirectives. |
| |
| 2025-12-11 supers1ngular <supers1ngular@baylibre.com> |
| |
| * parser.cc (cp_parser_postfix_expression): Whitespace. |
| (cp_parser_builtin_c23_va_start): Ditto. |
| (cp_parser_omp_clause_proc_bind): Deprecate master affinity. |
| (cp_parser_omp_master): Deprecate master construct. |
| |
| 2025-12-10 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (maybe_translate_include): Suggest <bits/stdc++.h> |
| as an alternate for importable standard library headers. |
| (importable_headers, is_importable_header): New. |
| |
| 2025-12-09 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| Revert: |
| 2025-12-09 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122819 |
| * decl.cc (start_preparsed_function): Use |
| DECL_TEMPLOID_INSTANTIATION instead of |
| DECL_TEMPLATE_INSTANTIATION to check vague linkage. |
| * decl2.cc (vague_linkage_p): Likewise. |
| (c_parse_final_cleanups): Simplify condition. |
| * semantics.cc (expand_or_defer_fn_1): Also check for temploid |
| friend functions. |
| |
| 2025-12-09 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122819 |
| * decl.cc (start_preparsed_function): Use |
| DECL_TEMPLOID_INSTANTIATION instead of |
| DECL_TEMPLATE_INSTANTIATION to check vague linkage. |
| * decl2.cc (vague_linkage_p): Likewise. |
| (c_parse_final_cleanups): Simplify condition. |
| * semantics.cc (expand_or_defer_fn_1): Also check for temploid |
| friend functions. |
| |
| 2025-12-08 Egas Ribeiro <egas.g.ribeiro@tecnico.ulisboa.pt> |
| |
| * pt.cc (tsubst_expr): Add TARGET_EXPR case with explanatory |
| comment and gcc_unreachable. |
| |
| 2025-12-08 Egas Ribeiro <egas.g.ribeiro@tecnico.ulisboa.pt> |
| |
| PR c++/119343 |
| * pt.cc (resolve_nondeduced_context): Remove mark_used call. |
| |
| 2025-12-06 Jakub Jelinek <jakub@redhat.com> |
| |
| * decl2.cc (is_late_template_attribute): Call lookup_attribute_spec |
| on TREE_PURPOSE (attr) rather than name. Only call |
| attribute_takes_identifier_p if get_attribute_namespace (attr) is |
| gnu_identifier. |
| * pt.cc (tsubst_attribute): Only call attribute_takes_identifier_p |
| if get_attribute_namespace (t) is gnu_identifier. |
| |
| 2025-12-05 Tobias Burnus <tburnus@baylibre.com> |
| |
| * pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_DYN_GROUPPRIVATE. |
| * semantics.cc (finish_omp_clauses): Likewise. |
| * parser.cc (cp_parser_omp_clause_dyn_groupprivate): New. |
| (cp_parser_omp_clause_name, cp_parser_omp_all_clauses): |
| Handle 'dyn_groupprivate' clause. |
| (OMP_TARGET_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE; |
| sort clauses alphabetically. |
| |
| 2025-12-03 Jason Merrill <jason@redhat.com> |
| |
| * pt.cc (dependent_implict_conv_p): Rename to... |
| (dependent_implicit_conv_p): ...this. |
| |
| 2025-12-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122860 |
| * decl.cc (make_rtl_for_nonlocal_decl): Diagnose taking address |
| of a hard register decl in its initializer. |
| (cp_finish_decl): Likewise. |
| |
| 2025-12-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122836 |
| * decl.cc (check_array_designated_initializer): Change ce->index to |
| error_mark_node after emitting an error for it. |
| |
| 2025-12-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/122171 |
| PR c++/112632 |
| * pt.cc (dependent_implict_conv_p): Split out... |
| (convert_template_argument): ...from here. |
| (tsubst_expr) [IMPLICIT_CONV_EXPR]: Use it. |
| (do_auto_deduction): Call mark_single_function. |
| |
| 2025-12-02 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (module_state::write_using_directives): Correct |
| condition. |
| |
| 2025-12-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (trees_out::lang_decl_vals): Stream DECL_CHAIN for |
| decl_specialization_friend_p functions. |
| (trees_in::lang_decl_vals): Likewise. |
| |
| 2025-12-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122915 |
| * module.cc (module_state::write_using_directives): Don't emit |
| imported using-directives. |
| (module_state::read_using_directives): Rename |
| add_using_namespace to add_imported_using_namespace. |
| * name-lookup.cc (add_using_namespace): Handle imported |
| using-directives. |
| (add_imported_using_namespace): Rename to match new |
| functionality. |
| * name-lookup.h (add_using_namespace): Rename to... |
| (add_imported_using_namespace): ...this. |
| |
| 2025-12-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119864 |
| PR c++/122939 |
| * module.cc (trees_out::write_function_def): Don't crash on |
| OMP used-defined type reduction function definitions. |
| |
| 2025-12-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122905 |
| * decl.cc (enum_with_enumerator_for_linkage_p): Only return true |
| for namespace scope types. |
| |
| 2025-11-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122465 |
| * parser.cc (cp_parser_simple_declaration): Adjust function comment. |
| Set *maybe_range_for_decl to error_mark_node instead of keeping it |
| NULL_TREE in error cases or when followed by CPP_COLON. |
| |
| 2025-11-30 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119864 |
| * module.cc (trees_in::read_function_def): Don't call |
| post_process on OpenMP UDT reductions. |
| * parser.cc (cp_parser_omp_declare_reduction): Call push_decl |
| for block_scope, even when processing_template_decl. |
| |
| 2025-11-29 Eczbek <eczbek.void@gmail.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/116952 |
| * parser.cc (cp_parser_lambda_expression): Revert |
| r11-8166-ge1666ebd9ad31d change prohibiting lambda in non-type |
| parameter. |
| |
| 2025-11-29 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122758 |
| * decl.cc (pop_labels): Don't call adjust_backward_gotos if |
| processing_template_decl. |
| (decl_instrument_init_bypass_p): Always return false if |
| processing_template_decl. |
| (check_goto_1): Don't push anything to direct_goto vector |
| if processing_template_decl. |
| |
| 2025-11-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119969 |
| * cp-objcp-common.cc (cxx_get_alias_set): Remove special cases |
| for TYPE_PTRMEMFUNC_P and INDIRECT_TYPE_P for TYPE_PTRMEMFUNC_P. |
| |
| 2025-11-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/121325 |
| * pt.cc (tsubst_tree_vec): New. |
| (tsubst_pack_index): Call it. |
| |
| 2025-11-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122699 |
| * name-lookup.h (expose_existing_namespace): Declare. |
| * name-lookup.cc (expose_existing_namespace): New function. |
| (push_namespace): Call it. |
| * pt.cc (tsubst_friend_function): Likewise. |
| |
| 2025-11-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122789 |
| * module.cc (trees_out::core_vals): Treat REQUIRES_EXPR |
| specially and stream the chained decls of its first operand. |
| (trees_in::core_vals): Likewise. |
| (trees_out::tree_node): Check the PARM_DECLs we see are what we |
| expect. |
| |
| 2025-11-25 Jason Merrill <jason@redhat.com> |
| |
| * lang-specs.h: Add @c++-system-module. |
| * g++spec.cc (lang_specific_driver): Handle --compile-std-module. |
| |
| 2025-11-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/119964 |
| * cp-tree.h (maybe_delete_defaulted_fn): Remove. |
| * method.cc (maybe_delete_defaulted_fn): Make static. Refactor. If FN |
| is not explicitly defaulted on its first declaration, emit an error. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122636 |
| * module.cc (instantiating_tu_local_entity): Don't check |
| importingness of originating module decl; also check templates. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constraint.cc (diagnose_trait_expr): |
| <case CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF>: Explain failure |
| with more detail. |
| * cp-tree.h (pointer_interconvertible_base_of_p): Add explain |
| parameter. |
| * semantics.cc (pointer_interconvertible_base_of_p): Explain why |
| not. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constraint.cc (diagnose_trait_expr) |
| <case CPTK_IS_LAYOUT_COMPATIBLE>: Explain why not. |
| * cp-tree.h (layout_compatible_type_p): Add explain parameter. |
| * typeck.cc (layout_compatible_type_p): Add explanations when |
| returning false. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constraint.cc (diagnose_trait_expr) |
| <case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS>: Explain failure with |
| more detail. |
| * cp-tree.h (type_has_unique_obj_representations): Add explain |
| parameter. |
| * tree.cc (record_has_unique_obj_representations): Explain when |
| returning false. |
| (type_has_unique_obj_representations): Likewise. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * method.cc (destructible_expr): Add explanation when type is |
| neither class nor scalar. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constraint.cc (diagnose_trait_expr): Use t2's location for |
| is_base_of, is_pointer_interconvertible_base_of, and |
| is_virtual_base_of. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constraint.cc (diagnose_trait_expr): Reset input_location. |
| |
| 2025-11-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * typeck.cc (layout_compatible_type_p): Do not check TYPE_SIZE. |
| |
| 2025-11-22 Sandra Loosemore <sloosemore@baylibre.com> |
| Julian Brown <julian@codesourcery.com> |
| waffl3x <waffl3x@baylibre.com> |
| |
| * cp-tree.h (struct cp_omp_declare_variant_attr): New. |
| (struct saved_scope): Add omp_declare_variant_attribute field. |
| * decl.cc (omp_declare_variant_finalize_one): Add logic to inject |
| "this" parameter for method calls. |
| * parser.cc (cp_parser_skip_to_pragma_omp_end_declare_variant): New. |
| (cp_parser_translation_unit): Handle leftover "begin declare variant" |
| functions. |
| (omp_start_variant_function): New. |
| (omp_finish_variant_function): New. |
| (omp_maybe_record_variant_base): New. |
| (cp_parser_init_declarator): Handle variant functions. |
| (cp_parser_class_specifier): Handle deferred lookup of base functions |
| when the entire class has been seen. |
| (cp_parser_member_declaration): Handle variant functions. |
| (cp_finish_omp_declare_variant): Merge context selectors if in |
| a "begin declare variant" block. |
| (cp_parser_omp_begin): Match "omp begin declare variant". Adjust |
| error messages. |
| (cp_parser_omp_end): Match "omp end declare variant". |
| * parser.h (struct omp_begin_declare_variant_map_entry): New. |
| (struct cp_parser): Add omp_begin_declare_variant_map field. |
| * semantics.cc (finish_translation_unit): Detect unmatched |
| "omp begin declare variant". |
| |
| 2025-11-22 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122788 |
| * pt.cc (finish_expansion_stmt): Or in TREE_USED and DECL_READ_P |
| flags from range_decl to decl or from corresponding structured binding |
| to this_decl. |
| |
| 2025-11-22 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122185 |
| * cp-gimplify.cc (cp_fold) <case CALL_EXPR>: For -ffold-simple-inlines |
| restore check that both types are INDIRECT_TYPE_P, except for |
| "to_underlying" check that r has ENUMERAL_TYPE and x has |
| INTEGRAL_TYPE_P. |
| |
| 2025-11-22 Daniele Sahebi <daniele@mkryss.me> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122658 |
| * call.cc (build_over_call): Don't call build_cplus_new in |
| template declarations. |
| |
| 2025-11-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/120529 |
| * call.cc (ref_conv_binds_to_temporary): Don't ignore access control. |
| |
| 2025-11-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121445 |
| * constexpr.cc (build_data_member_initialization): Just return |
| false if member is COMPONENT_REF of COMPONENT_REF with |
| VAR_P get_base_address. |
| |
| 2025-11-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120876 |
| * pt.cc (tsubst_baselink): Move maybe_incomplete handling after |
| !baselink handling. |
| |
| 2025-11-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122540 |
| * decl.cc (start_enum): When setting ENUM_UNDERLYING_TYPE |
| to integer_type_node during error recovery, also call copy_type_enum. |
| |
| 2025-11-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/119580 |
| * pt.cc (tsubst_baselink): Return error_mark_node if |
| tsubst_template_args returned error_mark_node. |
| |
| 2025-11-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/122668 |
| PR c++/114764 |
| * pt.cc (dependentish_scope_p): Return true for the current |
| instantiation from within an immediately parsed noexcept-spec. |
| |
| 2025-11-19 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_conversion_type_id): Implement C++ DR1670 |
| - auto as conversion-type-id. Pedwarn on conversion operators |
| with placeholder return type. |
| |
| 2025-11-18 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/122677 |
| * module.cc (create_dirs): Skip past any leading slashes. |
| |
| 2025-11-16 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122625 |
| * module.cc (trees_in::read_var_def): Also track class-scope |
| primary template specialisations. |
| |
| 2025-11-15 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (trees_out::write_function_def): Check flag consistency. |
| * pt.cc (mark_decl_instantiated): Ignore TREE_ASM_WRITTEN. |
| |
| 2025-11-15 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (module_state::read_config): Add complain parm. |
| (module_state::open_slurp): Split out... |
| (module_state::do_import): ...from here. |
| (module_state::read_initial): Move begin call to open_slurp. |
| (module_state::check_importable): New. |
| (maybe_translate_include): Call it. |
| |
| 2025-11-15 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (transfer_defining_module): Dereference |
| pointer into hash_map before possible insertion. |
| |
| 2025-11-15 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.cc (do_nonmember_using_decl): Handle hidden better. |
| |
| 2025-11-15 Jason Merrill <jason@redhat.com> |
| |
| * decl.cc (grokfndecl): Set DECL_CHAIN of a friend f<>. |
| * module.cc (trees_out::get_merge_kind): Give it MK_local_friend. |
| (trees_out::decl_container): Its container is the befriender. |
| (trees_out::key_mergeable): Expand comment. |
| * cp-tree.h (decl_specialization_friend_p): New. |
| * friend.cc (do_friend): Use it. |
| * pt.cc (tsubst_friend_function): Likewise. |
| |
| 2025-11-13 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122551 |
| * cp-tree.h (transfer_defining_module): Declare. |
| * decl.cc (duplicate_decls): Call it for all decls. |
| Remove now unnecessary equivalent logic for templates. |
| * module.cc (mangle_module): Add assertion. |
| (transfer_defining_module): New function. |
| |
| 2025-11-11 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.cc (name_lookup::adl_namespace_fns): Also skip hidden |
| in the module case. |
| |
| 2025-11-11 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (module_state::read_cluster): Use set_cfun. |
| (post_load_processing): Likewise. |
| |
| 2025-11-10 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122628 |
| * module.cc (instantiating_tu_local_entity): Add missing |
| STRIP_TEMPLATEs. |
| |
| 2025-11-10 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * pt.cc (tsubst_friend_function): Mark all parent namespaces as |
| purview if needed. |
| |
| 2025-11-10 Tejas Belagod <tejas.belagod@arm.com> |
| |
| * typeck.cc (cp_build_binary_op): Likewise. |
| * call.cc (build_conditional_expr): Support vector booleans. |
| * cvt.cc (ocp_convert): Call target hook to resolve conversion |
| between standard and non-standard booleans. |
| |
| 2025-11-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119064 |
| * cp-tree.h (struct lang_type): Revert 2025-07-11 changes. |
| (CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT): Remove. |
| (CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED): Remove. |
| (CLASSTYPE_REPLACEABLE_BIT): Remove. |
| (CLASSTYPE_REPLACEABLE_COMPUTED): Remove. |
| (enum virt_specifier): Revert 2025-07-11 changes. |
| (trivially_relocatable_type_p): Remove. |
| (replaceable_type_p): Remove. |
| * cp-trait.def (IS_NOTHROW_RELOCATABLE): Remove. |
| (IS_REPLACEABLE): Remove. |
| (IS_TRIVIALLY_RELOCATABLE): Remove. |
| * parser.cc (cp_parser_class_specifier, cp_parser_class_head): |
| Revert 2025-07-11 changes. |
| * pt.cc (instantiate_class_template): Likewise. |
| * semantics.cc (trait_expr_value): Likewise. |
| (finish_trait_expr): Likewise. |
| * tree.cc (default_movable_type_p): Remove. |
| (union_with_no_declared_special_member_fns): Remove. |
| (trivially_relocatable_type_p): Remove. |
| (replaceable_type_p): Remove. |
| * constraint.cc (diagnose_trait_expr): Revert 2025-07-11 changes. |
| * module.cc (trees_out::lang_type_bools): Revert part of |
| 2025-07-26 changes related to trivial relocatability. |
| (trees_in::lang_type_bools): Likewise. |
| * lex.cc (cxx_init): Don't call cpp_warn on |
| trivially_relocatable_if_eligible and replaceable_if_eligible. |
| |
| 2025-11-10 Jakub Jelinek <jakub@redhat.com> |
| |
| * lex.cc (cxx_init): For C++26 call cpp_warn on "indeterminate". |
| |
| 2025-11-05 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121574 |
| * cp-tree.h (instantiating_tu_local_entity): Declare. |
| * module.cc (is_tu_local_entity): Extract from depset::hash. |
| (is_tu_local_value): Likewise. |
| (has_tu_local_tmpl_arg): Likewise. |
| (depset::hash::is_tu_local_entity): Remove. |
| (depset::hash::has_tu_local_tmpl_arg): Remove. |
| (depset::hash::is_tu_local_value): Remove. |
| (instantiating_tu_local_entity): New function. |
| (depset::hash::add_binding_entity): No longer go through |
| depset::hash to check is_tu_local_entity. |
| * pt.cc (complain_about_tu_local_entity): Remove. |
| (tsubst): Use instantiating_tu_local_entity. |
| (tsubst_expr): Likewise. |
| |
| 2025-11-05 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121574 |
| * module.cc (depset::disc_bits): Replace 'DB_REFS_TU_LOCAL_BIT' |
| and 'DB_EXPOSURE_BIT' with new four flags |
| 'DB_{REF,EXPOSE}_{GLOBAL,PURVIEW}_BIT'. |
| (depset::is_tu_local): Support checking either for only purview |
| TU-local entities or any entity described TU-local by standard. |
| (depset::refs_tu_local): Likewise. |
| (depset::is_exposure): Likewise. |
| (depset::hash::make_dependency): A constant initialized to a |
| TU-local variable is always considered a purview exposure. |
| (is_exposure_of_member_type): Adjust sanity checks to handle if |
| we ever relax requirements for TU-local types. |
| (depset::hash::add_dependency): Differentiate referencing |
| purview or GMF TU-local entities. |
| (depset::hash::diagnose_bad_internal_ref): New function. |
| (depset::hash::diagnose_template_names_tu_local): New function. |
| (depset::hash::finalize_dependencies): Handle new warnings that |
| might be needed for GMF TU-local entities. |
| |
| 2025-11-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122253 |
| * decl2.cc (min_vis_expr_r): Don't mark no-linkage declarations |
| as VISIBILITY_ANON. |
| |
| 2025-11-04 David Malcolm <dmalcolm@redhat.com> |
| |
| * parser.cc (enum non_integral_constant): Fix typo |
| "an decrement" -> "a decrement" in comment. |
| (cp_parser_non_integral_constant_expression): Likewise in error |
| message. |
| |
| 2025-11-03 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.cc (name_lookup::adl_class_fns): Include all |
| namespace-scope friends. |
| |
| 2025-11-03 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.cc (pushdecl): Discard built-in sooner. |
| |
| 2025-11-03 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (trees_in::decl_value): Don't add an instantiation to |
| CLASSTYPE_MEMBER_VEC. |
| |
| 2025-11-03 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (module_state::write_namespaces): Handle |
| TREE_DEPRECATED. |
| (module_state::read_namespaces): Likewise. |
| |
| 2025-11-02 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122421 |
| * module.cc (trees_in::read_var_def): Don't handle class-scope |
| variables anymore. |
| (trees_in::read_class_def): Handle them here instead. |
| |
| 2025-11-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122381 |
| * module.cc (trees_out::core_vals): Write BASELINK_OPTYPE (aka |
| TREE_CHAIN). |
| (trees_in::core_vals): Read it. |
| |
| 2025-10-30 Jakub Jelinek <jakub@redhat.com> |
| |
| * std-name-hint.gperf: Remove duplicate entries for ispanstream |
| and istringstream. |
| * std-name-hint.h: Regenerate. |
| |
| 2025-10-28 Marek Polacek <polacek@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| * decl.cc (finish_enum_value_list): Use fold_convert instead of |
| copy_node. |
| |
| 2025-10-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122422 |
| * decl.cc (maybe_deduce_size_from_array_init): Propagate type to |
| corresponding TEMPLATE_DECL. |
| |
| 2025-10-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122310 |
| * module.cc (get_keyed_decl_scope): New function. |
| (trees_out::get_merge_kind): Use it. |
| (trees_out::key_mergeable): Use it. |
| (maybe_key_decl): Key to the containing type for all members. |
| |
| 2025-10-27 Paul-Antoine Arras <parras@baylibre.com> |
| |
| PR c++/122378 |
| * parser.cc (cp_parser_label_declaration): Mangle label declaration in a |
| metadirective region. |
| |
| 2025-10-21 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h: Implement C++23 P2674R1 - A trait for implicit lifetime |
| types. |
| (implicit_lifetime_type_p): Declare. |
| * tree.cc (implicit_lifetime_type_p): New function. |
| * cp-trait.def (IS_IMPLICIT_LIFETIME): New unary trait. |
| * semantics.cc (trait_expr_value): Handle CPTK_IS_IMPLICIT_LIFETIME. |
| (finish_trait_expr): Likewise. |
| * constraint.cc (diagnose_trait_expr): Likewise. |
| |
| 2025-10-21 Paul-Antoine Arras <parras@baylibre.com> |
| |
| PR c/120180 |
| PR fortran/122306 |
| * parser.cc (cp_parser_omp_metadirective): Return early if only one |
| selector matches and it resolves to 'omp nothing'. |
| (cp_parser_omp_error): Reject 'error at(execution)' in intervening code. |
| (cp_parser_pragma): Accept a subset of non-executable OpenMP directives |
| as intervening code. |
| |
| 2025-10-21 Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_assumption_clauses): Switch to |
| 'unknown' not 'invalid' directive name for end directives. |
| |
| 2025-10-18 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/119060 |
| * cxxapi-data.csv: Add observable_checkpoint to <utility>. |
| * std-name-hint.gperf: Add observable_checkpoint to <utility>. |
| * std-name-hint.h: Regenerate. |
| |
| 2025-10-18 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122279 |
| * module.cc (depset::hash::add_namespace_entities): Seed any |
| purview using-decls. |
| (module_state::write_using_directives): Stream if the udir was |
| exported or not. |
| (module_state::read_using_directives): Add the using-directive |
| if it's either exported or part of this module. |
| |
| 2025-10-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/122192 |
| * parser.cc (cp_parser_mem_initializer_id): Pass class_type |
| instead of typename_type to cp_parser_class_name in the |
| nested-name-specifier case. |
| |
| 2025-10-13 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/122228 |
| * decl.cc (cp_make_fname_decl): When not using fname_as_decl, |
| attempt to translate name into ordinary literal encoding. |
| |
| 2025-10-13 Jakub Jelinek <jakub@redhat.com> |
| |
| * decl.cc (omp_declare_variant_finalize_one): If !nbase_args |
| and TREE_TYPE (decl) has TYPE_NO_NAMED_ARGS_STDARG_P bit set |
| and varg is NULL, temporarily set TYPE_NO_NAMED_ARGS_STDARG_P |
| on TREE_TYPE (variant). |
| |
| 2025-10-12 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122163 |
| * expr.cc (mark_use): When processing a reference, always return |
| an lvalue reference when !rvalue_p. |
| |
| 2025-10-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/122192 |
| * decl.cc (make_typename_type): Document base-specifier as |
| another type-only lookup case. |
| * parser.cc (cp_parser_class_name): Propagate tag_type to |
| make_typename_type instead of hardcoding typename_type. |
| (cp_parser_base_specifier): Pass class_type instead of |
| typename_type as tag_type to cp_parser_class_name. |
| |
| 2025-10-09 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h (cp_build_function_type): Declare. |
| * lex.cc: Implement va_start changes from P3348R4 - C++26 should |
| refer to C23 not C17 paper. |
| (init_reswords): Set D_CXX26 in mask for C++23 and older. |
| * parser.cc (cp_parser_primary_expression): Handle RID_C23_VA_START. |
| (cp_parser_builtin_c23_va_start): New function. |
| * cp-objcp-common.cc (names_builtin_p): Likewise. |
| * decl.cc (grokfndecl, check_function_type): Pass |
| TYPE_NO_NAMED_ARGS_STDARG_P as last arg to build_function_type. |
| (grokdeclarator, static_fn_type): Use cp_build_function_type instead |
| of build_function_type. |
| * typeck.cc (merge_types): Likewise. |
| (structural_comptypes): Return false for TYPE_NO_NAMED_ARGS_STDARG_P |
| differences. |
| * lambda.cc (maybe_add_lambda_conv_op): Use cp_build_function_type |
| instead of build_function_type. |
| * tree.cc (cp_build_function_type): New function. |
| (strip_typedefs): Pass TYPE_NO_NAMED_ARGS_STDARG_P as last arg to |
| build_function_type. |
| * name-lookup.cc (push_local_extern_decl_alias): Likewise. |
| * module.cc (trees_in::tree_node): Use cp_build_function_type instead |
| of build_function_type. |
| * pt.cc (copy_default_args_to_explicit_spec, |
| rebuild_function_or_method_type, build_deduction_guide): Likewise. |
| (alias_ctad_tweaks): Pass TYPE_NO_NAMED_ARGS_STDARG_P as last arg to |
| build_function_type. |
| * decl2.cc (change_return_type, cp_reconstruct_complex_type): |
| Likewise. |
| |
| 2025-10-09 Egas Ribeiro <egas.g.ribeiro@tecnico.ulisboa.pt> |
| |
| PR c++/116477 |
| * semantics.cc (finish_call_expr): Move concept_check_p diagnostic |
| before processing_template_decl check to catch errors earlier. |
| |
| 2025-10-09 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.cc: Define INCLUDE_VECTOR. |
| |
| 2025-10-08 Jason Merrill <jason@redhat.com> |
| |
| * init.cc (build_new_1): Also clobber for non-placement new. |
| Only loop clobber in constexpr. |
| * expr.cc (wrap_with_if_consteval): New. |
| * cp-tree.h (wrap_with_if_consteval): Declare. |
| |
| 2025-10-07 Jason Merrill <jason@redhat.com> |
| |
| * init.cc (build_new_1): Clobber a constant-bound array as a whole. |
| |
| 2025-10-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * module.cc (trees_out::lang_vals): Fix spelling in comment. |
| |
| 2025-10-05 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122053 |
| * name-lookup.cc (pushtag): Load any imported definition of type |
| before calling pushdecl. |
| |
| 2025-10-05 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * name-lookup.cc (check_module_override): Remove check for |
| TREE_PUBLIC when checking mergeable entities. |
| |
| 2025-10-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/114457 |
| * cp-tree.h: Implement C++26 P2795R5 - Erroneous behavior for |
| uninitialized reads. |
| (IF_STMT_VACUOUS_INIT_P): Define. |
| (check_goto): Change argument type from tree to tree *. |
| * call.cc (build_over_call): Add indeterminate attribute to |
| TARGET_EXPR slots for indeterminate parameters. |
| * constexpr.cc (cxx_eval_internal_function): Handle IFN_DEFERRED_INIT. |
| (cxx_eval_store_expression): Temporarily work around PR121965 bug. |
| * cp-gimplify.cc (genericize_if_stmt): Handle IF_STMT_VACUOUS_INIT_P. |
| (maybe_emit_clobber_object_begin): New function. |
| (cp_gimplify_expr): Call it for DECL_EXPRs and TARGET_EXPRs with |
| void type non-NULL TARGET_EXPR_INITIAL. |
| * decl.cc (struct named_label_fwd_direct_goto, |
| struct named_label_bck_direct_goto): New types. |
| (struct named_label_use_entry): Add direct_goto member. Formatting |
| fix. |
| (struct named_label_entry): Add direct_goto member. Turn bool members |
| into bool : 1. Add has_bad_decls bitfield. |
| (adjust_backward_gotos): New function. |
| (pop_labels): For flag_auto_var_init > AUTO_INIT_UNINITIALIZED |
| call adjust_backward_gotos if needed. |
| (poplevel_named_label_1): For decl_jump_unsafe also set |
| ent->has_bad_decls, and for decl_instrument_init_bypass_p decls |
| push them into ent->bad_decls vector too. |
| (duplicate_decls): Complain if indeterminate attribute on function |
| parameter isn't present on the first function declaration. |
| (decl_instrument_init_bypass_p): New function. |
| (build_deferred_init_call): Likewise. |
| (maybe_add_deferred_init_calls): Likewise. |
| (adjust_backward_goto): Likewise. |
| (check_previous_goto_1): Add direct_goto and case_label arguments. |
| For decl_instrument_init_bypass_p decls seen if |
| direct_goto || case_label move case label if needed, call |
| maybe_add_deferred_init_calls and adjust GOTO_EXPR operands remembered |
| in direct_goto. Change return type from bool to int, return 0 on |
| error, 1 for success with no need to adjust vacuous inits and 2 for |
| success with need to adjust those. |
| (check_previous_goto): Adjust check_previous_goto_1 call, vec_free |
| direct_goto vector. |
| (check_switch_goto): Add case_label argument, adjust |
| check_previous_goto_1 call. Change return type from bool to int. |
| (check_goto_1): Remove computed argument, add declp argument. Don't |
| reuse previous ent->uses if |
| ent->binding_level != current_binding_level. Push declp into |
| direct_goto vectors if needed. |
| (check_goto): Remove decl argument, add declp argument. Adjust |
| check_goto_1 calls. |
| (finish_case_label): Call check_switch_goto up to twice, first time |
| to detect errors and find out if second call will be needed, and |
| after c_add_case_label second time if needed. In the first case |
| pass NULL_TREE as new argument to it, in the second case r. |
| (start_preparsed_function): Don't emit CLOBBER_OBJECT_BEGIN here |
| for -flifetime-dse=2, instead add "clobber *this" attribute to |
| current_class_ptr. |
| * parser.cc (cp_parser_asm_label_list): Call check_goto only |
| after the TREE_LIST is created and pass address of its TREE_VALUE to |
| it instead of the label. |
| * semantics.cc (finish_goto_stmt): Call check_goto only after |
| build_stmt has been called and pass it address of its first operand |
| rather than destination. |
| * tree.cc (handle_indeterminate_attribute): New function. |
| (cxx_gnu_attributes): Add entry for indeterminate attribute. |
| |
| 2025-10-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/122127 |
| PR c++/112632 |
| * pt.cc (convert_template_argument): Don't add redundant |
| IMPLICIT_CONV_EXPR. |
| |
| 2025-10-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/117658 |
| * cp-tree.h (TU_LOCAL_ENTITY_NAME): Clarify meaning. |
| * module.cc (depset::entity_kind): New enumerator, assert that |
| we have enough bits reserved. |
| (depset::disc_bits): Assert the discriminator has enough bits. |
| (depset::entity_kind_name): Add 'tu-local' case, assert we |
| have an entry for all relevant entry_kinds. |
| (name_for_tu_local_decl): New function. |
| (trees_out::tree_node): Use it. |
| (depset::hash::make_dependency): Validate EK_TU_LOCAL. |
| (depset::hash::add_binding_entity): Generate bindings for |
| internal purview functions. |
| (enum ct_bind_flags): New enum for TU-local decls. |
| (depset::hash::find_dependencies): Handle EK_TU_LOCAL entities. |
| (binding_cmp): Likewise. |
| (sort_cluster): Likewise. |
| (module_state::write_cluster): Likewise. |
| (module_state::read_cluster): Likewise. |
| * name-lookup.cc (append_imported_binding_slot): Propagate |
| internal decl list when growing binding vector. |
| (name_lookup::adl_namespace_fns): Diagnose if naming a TU-local |
| entity from a different TU. |
| (set_module_binding): Include any internal decls in binding. |
| * name-lookup.h (struct module_tree_map_traits): New type. |
| (struct tree_binding_vec): Add member 'internal_decls'. |
| (BINDING_VECTOR_INTERNAL_DECLS): New getter. |
| (MODULE_BINDING_INTERNAL_DECLS_P): New flag. |
| (set_module_binding): Add parameter. |
| |
| 2025-10-03 Egas Ribeiro <egas.g.ribeiro@tecnico.ulisboa.pt> |
| |
| PR c++/122112 |
| * parser.cc (cp_parser_parameter_declaration_clause): Don't |
| enable auto_is_implicit_function_template_parm_p when entering |
| class scope. |
| |
| 2025-10-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * constexpr.cc (cxx_eval_constant_expression): Use revised |
| interfaces to determine if contracts are ignored and, if not, |
| whether they are evaluated. |
| * contracts.h (contract_ignored_p, contract_evaluated_p): New. |
| |
| 2025-10-01 Jan Hubicka <hubicka@ucw.cz> |
| |
| * Make-lang.in: Add c++_FDAS |
| (create_fdas_for_cc1plus): Be sure that build fails if create_gcov fails. |
| |
| 2025-09-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/112632 |
| * pt.cc (convert_template_argument): Also force IMPLICIT_CONV_EXPR |
| if the argument is value-dependent. |
| |
| 2025-09-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/122048 |
| * pt.cc (tsubst_expr): Don't use a lambda current_class_ptr. |
| |
| 2025-09-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122015 |
| PR c++/122019 |
| * module.cc (trees_in::install_entity): Remove incorrect |
| assertion. |
| |
| 2025-09-24 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122019 |
| * module.cc (trees_in::install_entity): Don't be affected by |
| global language linkage state. |
| (trees_in::is_matching_decl): Check mismatching language linkage |
| for variables too. |
| (module_may_redeclare): Report the correct module name for |
| partitions and implementation units. |
| |
| 2025-09-23 Alfie Richards <alfie.richards@arm.com> |
| |
| * class.cc (resolve_address_of_overloaded_function): Updated to use |
| dijoint_versions_decls instead of common_function_version hook. |
| * decl.cc (decls_match): Refacture to use disjoint_version_decls and |
| to pass through conflicting_version argument. |
| (maybe_version_functions): Updated to use |
| disjoint_version_decls instead of common_function_version hook. |
| (duplicate_decls): Add logic to handle conflicting unmergable decls |
| and improve diagnostics for conflicting versions. |
| * decl2.cc (check_classfn): Updated to use |
| disjoint_version_decls instead of common_function_version hook. |
| |
| 2025-09-23 Alfie Richards <alfie.richards@arm.com> |
| |
| * cxx-pretty-print.h (pp_cxx_function_target_version): New macro. |
| (pp_cxx_function_target_clones): Ditto. |
| (pp_cxx_maybe_whitespace): Ditto. |
| * error.cc (dump_function_decl): Add printing of target_clone and |
| target_version in decl diagnostics. |
| |
| 2025-09-23 Alfie Richards <alfie.richards@arm.com> |
| |
| PR target/118313 |
| * call.cc (add_candidates): Change to not resolve non-default versions |
| in target_version semantics. |
| * class.cc (resolve_address_of_overloaded_function): Ditto. |
| * cp-gimplify.cc (cp_genericize_r): Change logic to not apply for |
| target_version semantics. |
| * decl.cc (maybe_mark_function_versioned): Remove static. |
| * cp-tree.h (maybe_mark_function_versioned): New function. |
| * decl2.cc (cplus_decl_attributes ): Change to mark and therefore |
| mangle all target_version decls in target_version semantics. |
| * typeck.cc (cp_build_function_call_vec): Add error for calling |
| unresolvable non-default node in target_version semantics. |
| |
| 2025-09-23 Alfie Richards <alfie.richards@arm.com> |
| |
| * decl.cc (maybe_mark_function_versioned): Change to insert function version |
| and therefore record assembler name. |
| |
| 2025-09-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/122015 |
| * cp-tree.h (make_auto_pack): Declare. |
| * lambda.cc (lambda_capture_field_type): Use make_auto_pack to |
| ensure TYPE_CANONICAL is set correctly. |
| * pt.cc (make_auto_pack): New function. |
| |
| 2025-09-20 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121981 |
| * pt.cc (any_template_parm_r) <case TEMPLATE_TYPE_PARM>: |
| Don't walk TREE_TYPE. |
| |
| 2025-09-20 Eczbek <eczbek.void@gmail.com> |
| |
| PR c++/119048 |
| * lambda.cc (compare_lambda_sig): Only skip first parameter for |
| object members. |
| |
| 2025-09-18 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_component_reference): Clarify diagnostic. |
| |
| 2025-09-18 Jason Merrill <jason@redhat.com> |
| |
| * init.cc (build_new_1): Clobber classes. |
| |
| 2025-09-18 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (get_or_insert_ctor_field): -2 means don't insert. |
| (cxx_eval_component_reference): Handle finding void_node. |
| (cxx_eval_store_expression): Don't represent initial clobber |
| unless we need to activate a union member. |
| (cxx_eval_statement_list): Don't ask for a void prvalue. |
| (cxx_eval_loop_expr): The expr is discarded-value. |
| (cxx_eval_constant_expression): A loose clobber is non-constant. |
| Handle getting void_node instead of a real result. |
| (potential_constant_expression_1): A local temp is |
| potentially-constant. |
| * init.cc (build_new_1): Don't clobber empty types or |
| in a template. |
| (build_vec_init): Fix clobber handling. |
| |
| 2025-09-18 Jason Merrill <jason@redhat.com> |
| |
| * init.cc (build_new_1): Append alloc_node to checking COND_EXPR. |
| |
| 2025-09-17 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/121966 |
| * call.cc (print_z_candidate): Consolidate instances of |
| auto_diagnostic_nesting_level into one, above the "inherited here" |
| message so that any such message is nested within the note, |
| and any messages emitted due to the switch on rejection_reason are |
| similarly nested within the note. |
| |
| 2025-09-17 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/121966 |
| * call.cc (print_z_candidates): Copy the filtering logic on viable |
| candidates from the printing loop to the counting loop, so that |
| num_candidates matches the number of iterations of the latter |
| loop. |
| |
| 2025-09-15 Matthias Kretz <m.kretz@gsi.de> |
| |
| * mangle.cc (write_real_cst): Replace 8 spaces with Tab. |
| |
| 2025-09-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121795 |
| * pt.cc (unify) <case PACK_INDEX_TYPE>: New non-deduced context |
| case. |
| |
| 2025-09-12 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121893 |
| * name-lookup.cc (name_lookup::adl_namespace_fns): Unwrap the |
| STAT_HACK also when on_inst_path. |
| |
| 2025-09-11 H.J. Lu <hjl.tools@gmail.com> |
| |
| PR c++/121889 |
| * decl2.cc (cplus_decl_attributes): Don't upgrade TLS model if |
| TLS model isn't set yet. |
| |
| 2025-09-10 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121859 |
| * constraint.cc (maybe_diagnose_standard_trait): Check if expr |
| is non-null. |
| |
| 2025-09-10 Jakub Jelinek <jakub@redhat.com> |
| |
| * mangle.cc (write_real_cst): Mangle Intel/Motorola extended |
| 80-bit formats using 20 hex digits instead of 24 or 32. |
| |
| 2025-09-09 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/99682 |
| PR c++/121808 |
| * module.cc (class module_state): Add comment to 'parent'. |
| (module_state::check_not_purview): Rename to... |
| (module_state::check_circular_import): ...this. Only handle |
| interface dependencies, adjust diagnostic message. |
| (module_state::read_imports): Use new function. Pass location |
| of import as from_loc instead of the module location. |
| (module_state::do_import): Set module_p when importing the |
| primary interface for the current module. |
| (import_module): Split out check for imports in own unit. |
| Remove incorrect assertion. |
| (preprocess_module): Don't overwrite module-decl location with |
| later import. |
| |
| 2025-09-09 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (this_module): New function. |
| (import_entity_module): Use it. |
| (trees_out::decl_node): Likewise. |
| (get_module): Likewise. |
| (module_state::check_not_purview): Likewise. |
| (module_state::read_imports): Likewise. |
| (module_state::read_using_directives): Likewise. |
| (module_state::read_initial): Likewise. |
| (get_import_bitmap): Likewise. |
| (module_may_redeclare): Likewise. |
| (direct_import): Likewise. |
| (declare_module): Likewise. |
| (name_pending_imports): Likewise. |
| (preprocess_module): Likewise. |
| (finish_module_processing): Likewise. |
| (late_finish_module): Likewise. |
| |
| 2025-09-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121779 |
| * tree.cc (build_min_non_dep_op_overload): Handle comparison |
| operator expressions rewritten from a <=> that returns a |
| non-class type. |
| |
| 2025-09-09 Matthias Kretz <m.kretz@gsi.de> |
| |
| PR c++/121801 |
| * mangle.cc (write_real_cst): Handle 16-bit real and assert |
| that reals have 16 bits or a multiple of 32 bits. |
| |
| 2025-09-07 H.J. Lu <hjl.tools@gmail.com> |
| |
| PR c++/107393 |
| * decl.cc (grokvardecl): Set a tentative TLS model which will be |
| updated by cplus_decl_attributes later. |
| * decl2.cc (cplus_decl_attributes): Update TLS model with the |
| default TLS access model if the default TLS access model is |
| stronger. |
| * pt.cc (tsubst_decl): Set TLS model only after processing a |
| variable. |
| |
| 2025-09-06 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121702 |
| * module.cc (enum module_state_counts): New counter. |
| (depset::hash::add_namespace_entities): Seed using-directive |
| targets for later streaming. |
| (module_state::write_namespaces): Don't handle using-directives |
| here. |
| (module_state::read_namespaces): Likewise. |
| (module_state::write_using_directives): New function. |
| (module_state::read_using_directives): New function. |
| (module_state::write_counts): Log using-directives. |
| (module_state::read_counts): Likewise. |
| (module_state::write_begin): Stream using-directives. |
| (module_state::read_language): Read using-directives if |
| directly importing. |
| (module_state::direct_import): Update current TU import list |
| before calling read_language. |
| * name-lookup.cc (add_using_namespace): Fix lookup of previous |
| using-directives. |
| * parser.cc (cp_parser_import_declaration): Don't set |
| MK_EXPORTING when performing import_module. |
| |
| 2025-09-06 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121705 |
| PR c++/117658 |
| * module.cc (depset::hash::make_dependency): Make bindings for |
| GM functions. |
| (depset::hash::add_binding_entity): Adjust comment. |
| (depset::hash::add_deduction_guides): Add log. |
| * ptree.cc (cxx_print_xnode): Handle friend functions where |
| TI_TEMPLATE is an OVERLOAD or IDENTIFIER. |
| |
| 2025-09-05 Jakub Jelinek <jakub@redhat.com> |
| |
| * constexpr.cc (cxx_eval_cxa_builtin_fn): Add missing word separating |
| space into invalid_nargs diagnostics. |
| |
| 2025-09-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/117658 |
| * cp-tree.h (get_originating_module): Adjust parameter names. |
| * module.cc (path_of_instantiation): Handle C++26 expansion |
| statements. |
| * name-lookup.cc (name_lookup::adl_namespace_fns): Handle |
| exported declarations attached to the same module of an |
| associated entity with the same innermost non-inline namespace, |
| and non-exported functions on the instantiation path. |
| (name_lookup::search_adl): Build mapping of namespace to modules |
| that associated entities are attached to; remove now-unneeded |
| instantiation path handling. |
| |
| 2025-09-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121724 |
| * name-lookup.cc (push_namespace): Mark inline namespace |
| contexts as purview if needed. |
| |
| 2025-09-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/97740 |
| * pt.cc (tsubst_expr) <case COMPONENT_REF>: Don't check access |
| when the given member is already a FIELD_DECL. |
| |
| 2025-09-02 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * constexpr.cc: Include contracts.h |
| * coroutines.cc: Likewise. |
| * cp-gimplify.cc: Likewise. |
| * decl.cc: Likewise. |
| * decl2.cc: Likewise. |
| * mangle.cc: Likewise. |
| * module.cc: Likewise. |
| * pt.cc: Likewise. |
| * search.cc: Likewise. |
| * semantics.cc: Likewise. |
| * contracts.cc (validate_contract_role, setup_default_contract_role, |
| add_contract_role, get_concrete_axiom_semantic, |
| get_default_contract_role): Make static. |
| * cp-tree.h (make_postcondition_variable, grok_contract, |
| finish_contract_condition, find_contract, set_decl_contracts, |
| get_contract_semantic, set_contract_semantic): Move to contracts.h. |
| * contracts.h (get_contract_role, add_contract_role, |
| validate_contract_role, setup_default_contract_role, |
| lookup_concrete_semantic, get_default_contract_role): Remove. |
| |
| 2025-08-29 Sirui Mu <msrlancern@gmail.com> |
| |
| * typeck.cc (cp_build_array_ref): Handle 0[arr] earlier. |
| |
| 2025-08-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107953 |
| * parser.cc (cp_parser_lambda_expression): Set |
| greater_than_is_operator_p. |
| |
| 2025-08-28 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119844 |
| * typeck2.cc (cxx_incomplete_type_inform): Add explanation when |
| a similar type is complete but attached to a different module. |
| Also fix handling of partial specs and templates. |
| |
| 2025-08-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121583 |
| * semantics.cc (apply_deduced_return_type): Adjust |
| fun->returns*_struct when !uses_template_parms (fco) instead of |
| when !processing_template_decl. |
| |
| 2025-08-28 Jakub Jelinek <jakub@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/121575 |
| * pt.cc (tsubst_expr) <case PARM_DECL>: If DECL_CONTEXT (t) isn't a |
| template return t for PARM_DECLs without local specialization. |
| |
| 2025-08-26 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| PR middle-end/118839 |
| * decl.cc (omp_declare_variant_finalize_one): Error if variant |
| is the same as base. |
| |
| 2025-08-26 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * parser.cc (cp_finish_omp_declare_variant): Structure diagnostic |
| code similarly to C front end. Make check for a missing "match" |
| clause unconditional. |
| |
| 2025-08-25 Jakub Jelinek <jakub@redhat.com> |
| |
| * pt.cc (finish_expansion_stmt): Implement C++ CWG3048 |
| - Empty destructuring expansion statements. Don't error for |
| destructuring expansion stmts if sz is 0, don't call |
| fit_decomposition_lang_decl if n is 0 and pass NULL rather than |
| this_decomp to cp_finish_decl. |
| |
| 2025-08-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121601 |
| * constexpr.cc (cxx_bind_parameters_in_call): Move break |
| if *jump_target before the check for null this object pointer. |
| |
| 2025-08-23 Eczbek <eczbek.void@gmail.com> |
| |
| PR c++/116928 |
| * parser.cc (cp_parser_braced_list): Set greater_than_is_operator_p. |
| |
| 2025-08-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120499 |
| * method.cc (synthesize_method): Set the instantiating module. |
| |
| 2025-08-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/121068 |
| * constexpr.cc (cxx_eval_store_expression): Allow clobber of a const |
| object. |
| |
| 2025-08-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120757 |
| * pt.cc (tsubst_expr) [OFFSET_REF]: Don't tsubst the type. |
| |
| 2025-08-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/121553 |
| * name-lookup.cc (check_local_shadow): Check !is_normal_capture_proxy. |
| |
| 2025-08-19 Ben Wu <soggysocks206@gmail.com> |
| |
| PR c++/120618 |
| * parser.cc (cp_parser_compound_requirement): Set type to |
| NULL_TREE for invalid type-constraint. |
| |
| 2025-08-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121351 |
| * class.cc (add_method): Use outer_template_args when |
| substituting outer template arguments into constraints. |
| |
| 2025-08-19 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120195 |
| * name-lookup.cc (do_nonmember_using_decl): Also handle change |
| in exportedness of a function. |
| |
| 2025-08-18 Indu Bhagat <indu.bhagat@oracle.com> |
| |
| * typeck.cc (get_member_function_from_ptrfunc): Use |
| 'sanitize_code_type' instead of 'unsigned int'. |
| |
| 2025-08-17 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120503 |
| PR c++/120824 |
| * cp-tree.h (TYPE_UNNAMED_P): Adjust for enums with enumerators |
| for linkage purposes. |
| (enum_with_enumerator_for_linkage_p): Declare. |
| * decl.cc (name_unnamed_type): Adjust assertions to handle enums |
| with enumerators for linkage purposes. |
| (grokdeclarator): Use a typedef name for enums with enumerators |
| for linkage purposes. |
| (enum_with_enumerator_for_linkage_p): New function. |
| (finish_enum_value_list): Reset type linkage for enums with |
| enumerators for linkage purposes. |
| * mangle.cc (write_unnamed_enum_name): New function. |
| (write_unqualified_name): Handle enums with enumerators for |
| linkage purposes. |
| * tree.cc (decl_linkage): Fixup unnamed enums. |
| |
| 2025-08-15 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-trait.def (STRUCTURED_BINDING_SIZE): New unary trait. |
| * cp-tree.h (finish_structured_binding_size): Declare. |
| * semantics.cc (trait_expr_value): Handle |
| CPTK_STRUCTURED_BINDING_SIZE. |
| (finish_structured_binding_size): New function. |
| (finish_trait_expr): Handle CPTK_RANK and CPTK_TYPE_ORDER |
| in the switch instead of just doing break; for those and |
| ifs at the end to handle them. Handle CPTK_STRUCTURED_BINDING_SIZE. |
| * pt.cc (tsubst_expr): Likewise. |
| * constraint.cc (diagnose_trait_expr): Likewise. |
| * decl.cc (get_tuple_size): Use mce_true for maybe_const_value. |
| (cp_decomp_size): Diagnose incomplete types not just if |
| processing_template_decl, and use error_at instead of pedwarn. |
| If btype is NULL, just return 0 instead of diagnosing an error. |
| |
| 2025-08-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121552 |
| * decl.cc: Implement C++20 P1766R1 - Mitigating minor modules maladies. |
| (diagnose_non_c_class_typedef_for_linkage, |
| maybe_diagnose_non_c_class_typedef_for_linkage): New functions. |
| (name_unnamed_type): Call |
| maybe_diagnose_non_c_class_typedef_for_linkage. |
| |
| 2025-08-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121539 |
| * parser.cc (cp_parser_cache_defarg): Set done to true for |
| CPP_ELLIPSIS followed by CPP_CLOSE_PAREN in !nsdmi at depth 0. |
| |
| 2025-08-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR preprocessor/120778 |
| PR target/121520 |
| * lex.cc (cxx_init): Remove warn_on lambda. Use cpp_warn instead of |
| cpp_lookup and NODE_WARN bit setting or warn_on. |
| |
| 2025-08-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121524 |
| * tree.cc (build_cplus_array_type): Don't reuse variant type |
| if it has TREE_DEPRECATED or TREE_UNAVAILABLE flags set or, |
| unless elt_type has TYPE_USER_ALIGN set and TYPE_ALIGN is |
| TYPE_ALIGN of elt_type, TYPE_USER_ALIGN is not set. |
| |
| 2025-08-13 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/102610 |
| * cp-tree.h (LAMBDA_EXPR_CONST_QUAL_P): Define. |
| (maybe_add_dummy_lambda_op): Declare. |
| (remove_dummy_lambda_op): Declare. |
| (push_capture_proxies): Adjust. |
| * lambda.cc (build_capture_proxy): No longer static. New early_p |
| parameter. Use it. |
| (add_capture): Adjust the call to build_capture_proxy. |
| (resolvable_dummy_lambda): Check DECL_LAMBDA_FUNCTION_P. |
| (push_capture_proxies): New. |
| (start_lambda_function): Use it. |
| * name-lookup.cc (check_local_shadow): Give an error for |
| is_capture_proxy. |
| (cp_binding_level_descriptor): Add lambda-scope. |
| (begin_scope) <case sk_lambda>: New case. |
| * name-lookup.h (enum scope_kind): Add sk_lambda. |
| (struct cp_binding_level): Widen kind. |
| * parser.cc (cp_parser_lambda_expression): Create a new (lambda) scope |
| after the lambda-introducer. |
| (cp_parser_lambda_declarator_opt): Set LAMBDA_EXPR_CONST_QUAL_P. |
| Create a dummy operator() if needed. Inject the captures into the |
| lambda scope. Remove the dummy operator(). |
| (make_dummy_lambda_op): New. |
| (maybe_add_dummy_lambda_op): New. |
| (remove_dummy_lambda_op): New. |
| * pt.cc (tsubst_lambda_expr): Begin/end a lambda scope. Push the |
| capture proxies. Build/remove a dummy operator() if needed. Set |
| LAMBDA_EXPR_CONST_QUAL_P. |
| * semantics.cc (parsing_lambda_declarator): New. |
| (outer_var_p): Also consider captures as outer variables if in a lambda |
| declarator. |
| (process_outer_var_ref): Reset containing_function when |
| parsing_lambda_declarator. |
| (finish_decltype_type): Process decls in the lambda-declarator as well. |
| Look at LAMBDA_EXPR_CONST_QUAL_P unless we have an xobj function. |
| |
| 2025-08-13 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120776 |
| * cp-tree.def: Implement C++26 P1306R5 - Expansion statements. |
| (TEMPLATE_FOR_STMT): New tree code. |
| * cp-tree.h (struct saved_scope): Add expansion_stmt. |
| (in_expansion_stmt): Define. |
| (TEMPLATE_FOR_DECL, TEMPLATE_FOR_EXPR, TEMPLATE_FOR_BODY, |
| TEMPLATE_FOR_SCOPE, TEMPLATE_FOR_INIT_STMT): Define. |
| (struct tinst_level): Adjust comment. |
| (cp_decomp_size, finish_expansion_stmt, do_pushlevel, |
| cp_build_range_for_decls, build_range_temp, |
| cp_perform_range_for_lookup, begin_template_for_scope): Declare. |
| (finish_range_for_stmt): Remove declaration. |
| * cp-objcp-common.cc (cp_common_init_ts): Handle TEMPLATE_FOR_STMT. |
| * name-lookup.h (enum scope_kind): Add sk_template_for enumerator. |
| (struct cp_binding_level): Enlarge kind bitfield from 4 to 5 bits. |
| Adjust comment with remaining space bits. |
| * name-lookup.cc (check_local_shadow): Handle sk_template_for like |
| sk_for. |
| (cp_binding_level_descriptor): Add entry for sk_template_for. |
| (begin_scope): Handle sk_template_for. |
| * parser.h (IN_EXPANSION_STMT): Define. |
| * parser.cc (cp_debug_parser): Print IN_EXPANSION_STMT bit. |
| (cp_parser_lambda_expression): Temporarily clear in_expansion_stmt. |
| (cp_parser_statement): Handle RID_TEMPLATE followed by RID_FOR for |
| C++11. |
| (cp_parser_label_for_labeled_statement): Complain about named labels |
| inside of expansion stmt body. |
| (cp_hide_range_decl): New function. |
| (cp_parser_range_for): Use it. Adjust do_range_for_auto_deduction |
| caller. Remove second template argument from auto_vecs bindings and |
| names. |
| (build_range_temp): No longer static. |
| (do_range_for_auto_deduction): Add expansion_stmt argument. |
| (cp_build_range_for_decls): New function. |
| (cp_convert_range_for): Use it. Call cp_perform_range_for_lookup |
| rather than cp_parser_perform_range_for_lookup. |
| (cp_parser_perform_range_for_lookup): Rename to ... |
| (cp_perform_range_for_lookup): ... this. No longer static. Add |
| complain argument and handle it. |
| (cp_parser_range_for_member_function): Rename to ... |
| (cp_range_for_member_function): ... this. |
| (cp_parser_expansion_statement): New function. |
| (cp_parser_jump_statement): Handle IN_EXPANSION_STMT. |
| (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction caller. |
| Call cp_perform_range_for_lookup rather than |
| cp_parser_perform_range_for_lookup. |
| * error.cc (print_instantiation_full_context): Handle tldcl being |
| TEMPLATE_FOR_STMT. |
| (print_instantiation_partial_context_line): Likewise. |
| * constexpr.cc (potential_constant_expression_1): Handle |
| TEMPLATE_FOR_STMT. |
| * decl.cc (poplevel_named_label_1): Use obl instead of bl->level_chain. |
| (finish_case_label): Diagnose case labels inside of template for. |
| (find_decomp_class_base): Add complain argument, don't diagnose |
| anything and just return error_mark_node if tf_none, adjust recursive |
| call. |
| (cp_decomp_size): New function. |
| (cp_finish_decomp): Adjust find_decomp_class_base caller. |
| * semantics.cc (do_pushlevel): No longer static. |
| (begin_template_for_scope): New function. |
| * pt.cc (push_tinst_level_loc): Handle TEMPLATE_FOR_STMT. |
| (reopen_tinst_level): Likewise. |
| (tsubst_stmt): Handle TEMPLATE_FOR_STMT. |
| (struct expansion_stmt_bc): New type. |
| (expansion_stmt_find_bc_r, finish_expansion_stmt): New functions. |
| * decl2.cc (decl_dependent_p): Return true for current function's decl |
| if in_expansion_stmt. |
| * call.cc (extend_ref_init_temps): Don't extend_all_temps if |
| TREE_STATIC (decl). |
| * cxx-pretty-print.cc (cxx_pretty_printer::statement): Handle |
| TEMPLATE_FOR_STMT. |
| |
| 2025-08-13 Benjamin Wu <bwu25@cs.washington.edu> |
| |
| * lex.cc (init_operators): Fix typo. |
| |
| 2025-08-11 Nicolas Werner <nicolas.werner@hotmail.de> |
| |
| * mapper-client.cc (spawn_mapper_program): change argv parsing |
| |
| 2025-08-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117783 |
| * decl.cc (set_sb_pack_name): For name independent decls |
| just clear DECL_NAME instead of appending #i to it. |
| |
| 2025-08-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117783 |
| * decl.cc (cp_finish_decomp): Don't sorry on tuple static |
| structured bindings with a pack, instead temporarily reset |
| DECL_NAME of the individual vars in the pack to the name |
| of the pack for cp_finish_decl time and force mangling. |
| |
| 2025-08-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121442 |
| * parser.cc (cp_parser_decomposition_declaration): Don't copy |
| DECL_DECLARED_CONST{EXPR,INIT}_P bits from decl to decl2 if |
| decl is error_mark_node. |
| |
| 2025-08-08 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.cc (cp_adjust_diagnostic_info): Convert "context" arg from |
| ptr to const &. |
| |
| 2025-08-07 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (extract_call_expr): Remove handling of C++20 |
| rewritten comparison operators. |
| |
| 2025-08-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117783 |
| * parser.cc: Implement C++26 P1061R10 - Structured Bindings can |
| introduce a Pack. |
| (cp_parser_range_for): Also handle TREE_VEC as DECL_VALUE_EXPR |
| instead of ARRAY_REF. |
| (cp_parser_decomposition_declaration): Use sb-identifier-list instead |
| of identifier-list in comments. Parse structured bindings with |
| structured binding pack. Don't emit pedwarn about structured |
| binding attributes in structured bindings inside of a condition. |
| (cp_convert_omp_range_for): Also handle TREE_VEC as DECL_VALUE_EXPR |
| instead of ARRAY_REF. |
| * decl.cc (get_tuple_element_type): Change i argument type from |
| unsigned to unsigned HOST_WIDE_INT. |
| (get_tuple_decomp_init): Likewise. |
| (set_sb_pack_name): New function. |
| (cp_finish_decomp): Handle structured binding packs. |
| * pt.cc (tsubst_pack_expansion): Handle structured binding packs |
| and capture proxies for them. Formatting fixes. |
| (tsubst_decl): For structured binding packs don't tsubst TREE_TYPE |
| first, instead recreate the type after r is created. |
| (tsubst_omp_for_iterator): Also handle TREE_VEC as DECL_VALUE_EXPR |
| instead of ARRAY_REF. |
| (tsubst_expr): Handle sizeof... on non-dependent structure binding |
| packs. |
| (value_dependent_expression_p): Return false for sizeof... on |
| non-dependent structure binding packs. |
| (instantiation_dependent_r): Don't recurse on sizeof... on |
| non-dependent structure binding packs. |
| * constexpr.cc (potential_constant_expression_1): Also handle |
| TREE_VEC on DECL_VALUE_EXPR of structure binding packs. |
| |
| 2025-08-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR preprocessor/120778 |
| * lex.cc (cxx_init): Mark cpp nodes corresponding |
| to keywords, identifiers with special meaning and standard |
| attribute identifiers as NODE_WARN if warn_keyword_macro. |
| |
| 2025-08-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121231 |
| PR c++/119688 |
| PR c++/94511 |
| * mangle.cc (write_expression): Write out implicit non-trailing |
| zeroes of a CONSTRUCTOR when the ABI version is at least 21. |
| |
| 2025-08-06 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_indirect_ref): Improve diagnostic. |
| |
| 2025-08-06 Kwok Cheung Yeung <kcyeung@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_clause_from_to): Parse 'iterator' modifier. |
| * semantics.cc (finish_omp_clauses): Finish iterators for to/from |
| clauses. |
| |
| 2025-08-06 Kwok Cheung Yeung <kcyeung@baylibre.com> |
| Andrew Stubbs <ams@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_clause_map): Parse 'iterator' modifier. |
| * semantics.cc (finish_omp_clauses): Finish iterators. Apply |
| iterators to generated clauses. |
| |
| 2025-08-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/121068 |
| * constexpr.cc (cxx_eval_store_expression): Handle clobbers. |
| (potential_constant_expression_1): Handle clobbers more. |
| * decl.cc (build_clobber_this): Use INIT_EXPR for initial clobber. |
| * init.cc (build_new_1): Clobber on placement new. |
| (build_vec_init): Don't clean up after clobber. |
| |
| 2025-08-04 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121351 |
| PR c++/119859 |
| * class.cc (add_method): Substitute outer template arguments |
| into constraints before comparing them if the declarations are |
| from different classes. |
| |
| 2025-08-04 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/120620 |
| * constexpr.cc (cxx_dynamic_cast_fn_p): Return true only |
| for synthesized __dynamic_cast. |
| |
| 2025-08-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/108080 |
| * module.cc (trees_out::core_vals): Warn when streaming |
| target/optimize node; adjust comments. |
| (trees_in::core_vals): Don't stream a target/optimize node. |
| |
| 2025-08-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121238 |
| * module.cc (trees_in::fn_parms_fini): Merge properties for |
| definitions. |
| |
| 2025-07-31 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120800 |
| * constexpr.cc (cxx_eval_vec_init_1): Suppress access control. |
| |
| 2025-07-31 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/120775 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Use |
| extract_call_expr. |
| * cp-tree.h (CONSTEVAL_BLOCK_P, LAMBDA_EXPR_CONSTEVAL_BLOCK_P): Define. |
| (finish_static_assert): Adjust declaration. |
| (current_nonlambda_function): Likewise. |
| * lambda.cc (current_nonlambda_function): New parameter. Only keep |
| iterating if the function represents a consteval block. |
| * parser.cc (cp_parser_lambda_expression): New parameter for |
| consteval blocks. Use it. Set LAMBDA_EXPR_CONSTEVAL_BLOCK_P. |
| (cp_parser_lambda_declarator_opt): Likewise. |
| (build_empty_string): New. |
| (cp_parser_next_tokens_are_consteval_block_p): New. |
| (cp_parser_consteval_block): New. |
| (cp_parser_block_declaration): Handle consteval blocks. |
| (cp_parser_static_assert): Use build_empty_string. |
| (cp_parser_member_declaration): Handle consteval blocks. |
| * pt.cc (tsubst_stmt): Adjust a call to finish_static_assert. |
| * semantics.cc (finish_fname): Warn for consteval blocks. |
| (finish_static_assert): New parameter for consteval blocks. Set |
| CONSTEVAL_BLOCK_P. Evaluate consteval blocks specially. |
| |
| 2025-07-30 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/121291 |
| * constraint.cc (diagnose_trait_expr): Remove assumption about |
| failures returning error_mark_node. |
| * except.cc (explain_not_noexcept): Allow expr not being |
| noexcept. |
| * method.cc (build_invoke): Adjust comment. |
| (is_trivially_xible): Always note non-trivial components if expr |
| is not null or error_mark_node. |
| (is_nothrow_xible): Likewise for non-noexcept components. |
| (is_nothrow_convertible): Likewise. |
| |
| 2025-07-30 Jason Merrill <jason@redhat.com> |
| |
| * pt.cc (convert_nontype_argument_function): Check |
| cxx_constant_value on failure. |
| (invalid_tparm_referent_p): Likewise. |
| |
| 2025-07-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/121133 |
| * parser.cc (cp_parser_unary_expression): Adjust |
| cp_parser_extension_opt caller and restore warn_long_long. |
| (cp_parser_declaration): Likewise. |
| (cp_parser_block_declaration): Likewise. |
| (cp_parser_member_declaration): Likewise. |
| (cp_parser_extension_opt): Add SAVED_LONG_LONG argument, |
| save previous warn_long_long state into it and clear it |
| for __extension__. |
| |
| 2025-07-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * cp-tree.h (struct lang_type): Add comment mentioning modules. |
| * module.cc (trees_out::lang_type_bools): Stream new flags, use |
| gcc_checking_assert. |
| (trees_in::lang_type_bools): Likewise. |
| |
| 2025-07-25 David Malcolm <dmalcolm@redhat.com> |
| |
| * constexpr.cc: Update usage of "diagnostic_info" to explicitly |
| refer to "diagnostics::diagnostic_info". |
| * cp-tree.h: Likewise. |
| * error.cc: Likewise. |
| * module.cc: Likewise. |
| |
| 2025-07-25 David Malcolm <dmalcolm@redhat.com> |
| |
| * call.cc: Update for diagnostic_t becoming |
| enum class diagnostics::kind. |
| * constexpr.cc: Likewise. |
| * cp-tree.h: Likewise. |
| * decl.cc: Likewise. |
| * error.cc: Likewise. |
| * init.cc: Likewise. |
| * method.cc: Likewise. |
| * module.cc: Likewise. |
| * parser.cc: Likewise. |
| * pt.cc: Likewise. |
| * semantics.cc: Likewise. |
| * typeck.cc: Likewise. |
| * typeck2.cc: Likewise. |
| |
| 2025-07-25 David Malcolm <dmalcolm@redhat.com> |
| |
| * cp-tree.h: Update for renaming of diagnostic_option_id to |
| diagnostics::option_id. |
| * decl.cc: Likewise. |
| * error.cc: Likewise. |
| * name-lookup.cc: Likewise. |
| |
| 2025-07-25 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.cc: Update for move of diagnostic-color.h to |
| diagnostics/color.h. |
| |
| 2025-07-25 David Malcolm <dmalcolm@redhat.com> |
| |
| * cp-tree.h: Update for diagnostic_context becoming |
| diagnostics::context. |
| * error.cc: Likewise. |
| * module.cc: Likewise. |
| |
| 2025-07-25 David Malcolm <dmalcolm@redhat.com> |
| |
| * constexpr.cc: Update to add "m_" prefix to fields of |
| diagnostic_info throughout. |
| * error.cc: Likewise. |
| |
| 2025-07-25 David Malcolm <dmalcolm@redhat.com> |
| |
| * cp-tree.h: Update for move of diagnostics output formats into |
| namespace "diagnostics" as "sinks". |
| * error.cc: Likewise. |
| |
| 2025-07-25 Patrick Palka <ppalka@redhat.com> |
| |
| * call.cc (build_new_op): If the selected candidate is |
| rewritten, communicate the LOOKUP_REWRITTEN/REVERSED flags to |
| the caller via the 'overload' out-parameter, and stop clearing |
| '*overload' in that case. |
| * tree.cc (build_min_non_dep_op_overload): Handle rebuilding all |
| C++20 rewritten comparison operator expressions. |
| |
| 2025-07-25 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/121219 |
| * coroutines.cc |
| (cp_coroutine_transform::build_ramp_function): Reorder the return |
| expressions for the 'normal' and 'allocation failed' cases so that |
| NRV constraints are met. |
| |
| 2025-07-24 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/117294 |
| PR c++/113854 |
| * call.cc (implicit_conversion_error): Hide label when printing |
| a stub object. |
| (convert_like_internal): Likewise, and nest candidate |
| diagnostics. |
| * constexpr.cc (diagnose_failing_condition): Nest diagnostics, |
| attempt to provide more helpful diagnostics for traits. |
| * constraint.cc (satisfy_atom): Pass result before constant |
| evaluation to diagnose_atomic_constraint. |
| (diagnose_trait_expr): Adjust diagnostics for clarity and |
| detail. |
| (maybe_diagnose_standard_trait): New function. |
| (diagnose_atomic_constraint): Attempt to provide more helpful |
| diagnostics for more traits. |
| * cp-tree.h (explain_not_noexcept): Declare new function. |
| (is_trivially_xible): Add parameter. |
| (is_nothrow_xible): Likewise. |
| (is_xible): Likewise. |
| (is_convertible): Likewise. |
| (is_nothrow_convertible): Likewise. |
| (diagnose_trait_expr): Declare new function. |
| (maybe_diagnose_standard_trait): Declare new function. |
| * error.cc (dump_type) <case TREE_VEC>: Handle trait types. |
| * except.cc (explain_not_noexcept): New function. |
| * method.cc (build_trait_object): Add complain parameter. |
| (build_invoke): Propagate complain parameter. |
| (assignable_expr): Add explain parameter to show diagnostics. |
| (constructible_expr): Likewise. |
| (destructible_expr): Likewise. |
| (is_xible_helper): Replace trivial flag with explain flag, |
| add diagnostics. |
| (is_trivially_xible): New explain flag. |
| (is_nothrow_xible): Likewise. |
| (is_xible): Likewise. |
| (is_convertible_helper): Add complain flag. |
| (is_convertible): New explain flag. |
| (is_nothrow_convertible): Likewise. |
| * typeck.cc (cp_build_function_call_vec): Add handling for stub |
| objects. |
| (convert_arguments): Always return -1 on error. |
| * typeck2.cc (cxx_readonly_error): Add handling for stub |
| objects. |
| |
| 2025-07-24 Jason Merrill <jason@redhat.com> |
| |
| * pt.cc (tsubst_lambda_expr): Revert r9-5971 change. |
| |
| 2025-07-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/114632 |
| PR c++/101233 |
| * lambda.cc (maybe_add_lambda_conv_op): Not for xobj lambda. |
| * pt.cc (tsubst_function_decl): Add cp_evaluated. |
| (alias_ctad_tweaks): Revert PR101233 fix. |
| |
| 2025-07-24 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120412 |
| * module.cc (trees_out::core_vals): Write TU_LOCAL_ENTITY bits. |
| (trees_in::core_vals): Read it. |
| (trees_in::tree_node): Handle TU_LOCAL_ENTITY typedefs. |
| |
| 2025-07-23 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121179 |
| * call.cc (build_new_op): Don't clear *overload for a simple |
| != to == rewrite. |
| * tree.cc (build_min_non_dep_op_overload): Handle TRUTH_NOT_EXPR |
| appearing in a rewritten operator expression. |
| |
| 2025-07-23 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/121055 |
| * method.cc (build_invoke): Correct reference_wrapper handling. |
| |
| 2025-07-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/121068 |
| * constexpr.cc (cxx_eval_store_expression): Allow ARRAY_REFs |
| when activating an array member of a union. |
| |
| 2025-07-21 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> |
| |
| * semantics.cc (finish_asm_stmt): Pass null pointer to |
| parse_{input,output}_constraint(). |
| |
| 2025-07-16 Kwok Cheung Yeung <kcyeung@baylibre.com> |
| |
| * pt.cc (tsubst_omp_clause_decl): Use OMP_ITERATOR_DECL_P. |
| * semantics.cc (handle_omp_array_sections): Likewise. |
| (finish_omp_clauses): Likewise. |
| |
| 2025-07-16 Alfie Richards <alfie.richards@arm.com> |
| |
| * class.cc (add_method): Remove argument. |
| * cp-tree.h (maybe_version_functions): Ditto. |
| * decl.cc (decls_match): Ditto. |
| (maybe_version_functions): Ditto. |
| |
| 2025-07-16 Jeremy Rifkin <jeremy@rifkin.dev> |
| |
| PR c/82134 |
| * call.cc (build_call_a): Add suppress_warning |
| * cp-gimplify.cc (cp_gimplify_expr): Add suppress_warning |
| |
| 2025-07-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/44677 |
| * cp-gimplify.cc (cp_fold) [CLEANUP_POINT_EXPR]: Don't force rvalue. |
| [COMPOUND_EXPR]: Likewise. |
| * cvt.cc (convert_to_void): Call mark_exp_read later. |
| * expr.cc (mark_use): Turn off read_p for any void argument. |
| (mark_exp_read): Return early for void argument. |
| |
| 2025-07-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120577 |
| * constexpr.cc (cxx_eval_call_expression): Set |
| CONSTRUCTOR_NO_CLEARING on initial value for ctor. |
| (cxx_eval_component_reference): Make value-initialization |
| of an aggregate member explicit. |
| |
| 2025-07-15 Jakub Jelinek <jakub@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c/44677 |
| * cp-gimplify.cc (cp_fold): Clear DECL_READ_P on lhs of MODIFY_EXPR |
| after cp_fold_rvalue if it wasn't set before. |
| * decl.cc (poplevel): Use OPT_Wunused_but_set_variable_ |
| instead of OPT_Wunused_but_set_variable. |
| (finish_function): Use OPT_Wunused_but_set_parameter_ |
| instead of OPT_Wunused_but_set_parameter. |
| * expr.cc (mark_use): Clear read_p for {PRE,POST}{IN,DE}CREMENT_EXPR |
| cast to void on {VAR,PARM}_DECL for |
| -Wunused-but-set-{parameter,variable}={2,3}. |
| (mark_exp_read): Handle {PRE,POST}{IN,DE}CREMENT_EXPR and don't handle |
| it when cast to void. |
| * module.cc (trees_in::fn_parms_fini): Remove unused but set variable |
| ix. |
| * semantics.cc (finish_unary_op_expr): Return early for |
| PRE{IN,DE}CREMENT_EXPR. |
| * typeck.cc (cp_build_unary_op): Clear DECL_READ_P |
| after mark_lvalue_use for -Wunused-but-set-{parameter,variable}={2,3} |
| on PRE{IN,DE}CREMENT_EXPR argument. |
| (cp_build_modify_expr): Clear DECL_READ_P after cp_build_binary_op |
| for -Wunused-but-set-{parameter,variable}=3. |
| |
| 2025-07-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119064 |
| * cp-tree.h: Implement C++26 P2786R13 - Trivial Relocatability. |
| (struct lang_type): Add trivially_relocatable, |
| trivially_relocatable_computed, replaceable and replaceable_computed |
| bitfields. Change width of dummy from 2 to 30. |
| (CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT, |
| CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED, CLASSTYPE_REPLACEABLE_BIT, |
| CLASSTYPE_REPLACEABLE_COMPUTED): Define. |
| (enum virt_specifier): Add VIRT_SPEC_TRIVIALLY_RELOCATABLE_IF_ELIGIBLE |
| and VIRT_SPEC_REPLACEABLE_IF_ELIGIBLE enumerators. |
| (trivially_relocatable_type_p, replaceable_type_p): Declare. |
| * cp-trait.def (IS_NOTHROW_RELOCATABLE, IS_REPLACEABLE, |
| IS_TRIVIALLY_RELOCATABLE): New traits. |
| * parser.cc (cp_parser_class_property_specifier_seq_opt): Handle |
| trivially_relocatable_if_eligible, |
| __trivially_relocatable_if_eligible, replaceable_if_eligible and |
| __replaceable_if_eligible. |
| (cp_parser_class_head): Set CLASSTYPE_REPLACEABLE_BIT |
| and/or CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT if corresponding |
| conditional keywords were parsed and assert corresponding *_COMPUTED |
| macro is false. |
| * pt.cc (instantiate_class_template): Copy over also |
| CLASSTYPE_TRIVIALLY_RELOCATABLE_{BIT,COMPUTED} and |
| CLASSTYPE_REPLACEABLE_{BIT,COMPUTED} bits. |
| * semantics.cc (referenceable_type_p): Move definition earlier. |
| (trait_expr_value): Handle CPTK_IS_NOTHROW_RELOCATABLE, |
| CPTK_IS_REPLACEABLE and CPTK_IS_TRIVIALLY_RELOCATABLE. |
| (finish_trait_expr): Likewise. |
| * tree.cc (default_movable_type_p): New function. |
| (union_with_no_declared_special_member_fns): Likewise. |
| (trivially_relocatable_type_p): Likewise. |
| (replaceable_type_p): Likewise. |
| * constraint.cc (diagnose_trait_expr): Handle |
| CPTK_IS_NOTHROW_RELOCATABLE, CPTK_IS_REPLACEABLE and |
| CPTK_IS_TRIVIALLY_RELOCATABLE. |
| |
| 2025-07-10 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h (struct lang_type): Add comment before key_method. |
| Remove lambda_expr. |
| (CLASSTYPE_KEY_METHOD): Give NULL_TREE if not TYPE_POLYMORPHIC_P. |
| (SET_CLASSTYPE_KEY_METHOD): Define. |
| (CLASSTYPE_LAMBDA_EXPR): Give NULL_TREE if TYPE_POLYMORPHIC_P. |
| Use key_method member instead of lambda_expr. |
| (SET_CLASSTYPE_LAMBDA_EXPR): Define. |
| * class.cc (determine_key_method): Use SET_CLASSTYPE_KEY_METHOD |
| macro. |
| * decl.cc (xref_tag): Use SET_CLASSTYPE_LAMBDA_EXPR macro. |
| * lambda.cc (begin_lambda_type): Likewise. |
| * module.cc (trees_in::read_class_def): Use SET_CLASSTYPE_LAMBDA_EXPR |
| and SET_CLASSTYPE_KEY_METHOD macros, assert lambda is NULL if |
| TYPE_POLYMORPHIC_P and otherwise assert key_method is NULL. |
| |
| 2025-07-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120628 |
| * parser.cc (cp_parser_elaborated_type_specifier): Use |
| cp_parser_nth_token_starts_class_definition_p with extra argument 1 |
| instead of cp_parser_next_token_starts_class_definition_p. |
| (cp_parser_class_property_specifier_seq_opt): For final conditional |
| keyword in C++98 check if the token after it isn't |
| cp_parser_nth_token_starts_class_definition_p nor CPP_NAME and in |
| that case break without consuming it nor warning. |
| (cp_parser_class_head): Use |
| cp_parser_nth_token_starts_class_definition_p with extra argument 1 |
| instead of cp_parser_next_token_starts_class_definition_p. |
| (cp_parser_next_token_starts_class_definition_p): Renamed to ... |
| (cp_parser_nth_token_starts_class_definition_p): ... this. Add N |
| argument. Use cp_lexer_peek_nth_token instead of cp_lexer_peek_token. |
| |
| 2025-07-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120569 |
| * parser.cc (cp_parser_class_property_specifier_seq_opt): New |
| function. |
| (cp_parser_class_head): Use it instead of |
| cp_parser_property_specifier_seq_opt. Don't diagnose |
| VIRT_SPEC_OVERRIDE here. Formatting fix. |
| |
| 2025-07-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117785 |
| * constexpr.cc: Implement C++26 P3068R5 - constexpr exceptions. |
| (class constexpr_global_ctx): Add caught_exceptions and |
| uncaught_exceptions members. |
| (constexpr_global_ctx::constexpr_global_ctx): Initialize |
| uncaught_exceptions. |
| (returns, breaks, continues, switches): Move earlier. |
| (throws): New function. |
| (exception_what_str, diagnose_std_terminate, |
| diagnose_uncaught_exception): New functions. |
| (enum cxa_builtin): New type. |
| (cxx_cxa_builtin_fn_p, cxx_eval_cxa_builtin_fn): New functions. |
| (cxx_eval_builtin_function_call): Add jump_target argument. Call |
| cxx_eval_cxa_builtin_fn for __builtin_eh_ptr_adjust_ref. Adjust |
| cxx_eval_constant_expression calls, if it results in jmp_target, |
| set *jump_target to it and return. |
| (cxx_bind_parameters_in_call): Add jump_target argument. Pass |
| it through to cxx_eval_constant_expression. If it sets *jump_target, |
| break. |
| (fold_operand): Adjust cxx_eval_constant_expression caller. |
| (cxx_eval_assert): Likewise. If it set jmp_target, return true. |
| (cxx_eval_internal_function): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression. Return early if *jump_target |
| after recursing on args. |
| (cxx_eval_dynamic_cast_fn): Likewise. Don't set reference_p for |
| C++26 with -fexceptions. |
| (cxx_eval_thunk_call): Add jump_target argument. Pass it through |
| to cxx_eval_constant_expression. |
| (cxx_set_object_constness): Likewise. Don't set TREE_READONLY if |
| throws (jump_target). |
| (cxx_eval_call_expression): Add jump_target argument. Pass it |
| through to cxx_eval_internal_function, cxx_eval_builtin_function_call, |
| cxx_eval_thunk_call, cxx_eval_dynamic_cast_fn and |
| cxx_set_object_constness. Pass it through also |
| cxx_eval_constant_expression on arguments, cxx_bind_parameters_in_call |
| and cxx_fold_indirect_ref and for those cases return early |
| if *jump_target. Call cxx_eval_cxa_builtin_fn for cxx_cxa_builtin_fn_p |
| functions. For cxx_eval_constant_expression on body, pass address of |
| cleared jmp_target automatic variable, if it throws propagate |
| to *jump_target and make it non-cacheable. For C++26 don't diagnose |
| calls to non-constexpr functions before cxx_bind_parameters_in_call |
| could report some argument throwing an exception. |
| (cxx_eval_unary_expression): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression and return early |
| if *jump_target after the call. |
| (cxx_fold_pointer_plus_expression): Likewise. |
| (cxx_eval_binary_expression): Likewise and similarly for |
| cxx_fold_pointer_plus_expression call. |
| (cxx_eval_conditional_expression): Pass jump_target to |
| cxx_eval_constant_expression on first operand and return early |
| if *jump_target after the call. |
| (cxx_eval_vector_conditional_expression): Add jump_target argument. |
| Pass it through to cxx_eval_constant_expression for all 3 arguments |
| and return early if *jump_target after any of those calls. |
| (get_array_or_vector_nelts): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression. |
| (eval_and_check_array_index): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression calls and return early after |
| each of them if *jump_target. |
| (cxx_eval_array_reference): Likewise. |
| (cxx_eval_component_reference): Likewise. |
| (cxx_eval_bit_field_ref): Likewise. |
| (cxx_eval_bit_cast): Likewise. Assert CHECKING_P call doesn't |
| throw or return. |
| (cxx_eval_logical_expression): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression calls and return early after |
| each of them if *jump_target. |
| (cxx_eval_bare_aggregate): Likewise. |
| (cxx_eval_vec_init_1): Add jump_target argument. Pass it through |
| to cxx_eval_bare_aggregate and recursive call. Pass it through |
| to get_array_or_vector_nelts and cxx_eval_constant_expression |
| and return early after it if *jump_target. |
| (cxx_eval_vec_init): Add jump_target argument. Pass it through |
| to cxx_eval_constant_expression and cxx_eval_vec_init_1. |
| (cxx_union_active_member): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression and return early after it |
| if *jump_target. |
| (cxx_fold_indirect_ref_1): Add jump_target argument. Pass it |
| through to cxx_union_active_member and recursive calls. |
| (cxx_eval_indirect_ref): Add jump_target argument. Pass it through |
| to cxx_fold_indirect_ref_1 calls and to recursive call, in which |
| case return early after it if *jump_target. |
| (cxx_fold_indirect_ref): Add jump_target argument. Pass it through |
| to cxx_fold_indirect_ref and cxx_eval_constant_expression calls and |
| return early after those if *jump_target. |
| (cxx_eval_trinary_expression): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression calls and return early after |
| those if *jump_target. |
| (cxx_eval_store_expression): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression and eval_and_check_array_index |
| calls and return early after those if *jump_target. |
| (cxx_eval_increment_expression): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression calls and return early after |
| those if *jump_target. |
| (label_matches): Handle VAR_DECL case. |
| (cxx_eval_statement_list): Remove local_target variable and |
| !jump_target handling. Handle throws (jump_target) like returns or |
| breaks. |
| (cxx_eval_loop_expr): Remove local_target variable and !jump_target |
| handling. Pass it through to cxx_eval_constant_expression. Handle |
| throws (jump_target) like returns. |
| (cxx_eval_switch_expr): Pass jump_target through to |
| cxx_eval_constant_expression on cond, return early after it |
| if *jump_target. |
| (build_new_constexpr_heap_type): Add jump_target argument. Pass it |
| through to cxx_eval_constant_expression calls, return early after |
| those if *jump_target. |
| (merge_jump_target): New function. |
| (cxx_eval_constant_expression): Make jump_target argument no longer |
| defaulted, don't test jump_target for NULL. Pass jump_target |
| through to recursive calls, cxx_eval_call_expression, |
| cxx_eval_store_expression, cxx_eval_indirect_ref, |
| cxx_eval_unary_expression, cxx_eval_binary_expression, |
| cxx_eval_logical_expression, cxx_eval_array_reference, |
| cxx_eval_component_reference, cxx_eval_bit_field_ref, |
| cxx_eval_vector_conditional_expression, cxx_eval_bare_aggregate, |
| cxx_eval_vec_init, cxx_eval_trinary_expression, cxx_fold_indirect_ref, |
| build_new_constexpr_heap_type, cxx_eval_increment_expression, |
| cxx_eval_bit_cast and return earlyu after some of those |
| if *jump_target as needed. |
| (cxx_eval_constant_expression) <case TARGET_EXPR>: For C++26 push |
| also CLEANUP_EH_ONLY cleanups, with NULL_TREE marker after them. |
| (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't |
| override *jump_target if throws (jump_target). |
| (cxx_eval_constant_expression) <case TRY_CATCH_EXPR, case TRY_BLOCK, |
| case MUST_NOT_THROW_EXPR, case TRY_FINALLY_EXPR, case CLEANUP_STMT>: |
| Handle C++26 constant expressions. |
| (cxx_eval_constant_expression) <case CLEANUP_POINT_EXPR>: For C++26 |
| with throws (jump_target) evaluate the CLEANUP_EH_ONLY cleanups as |
| well, and if not throws (jump_target) skip those. Set *jump_target |
| if some of the cleanups threw. |
| (cxx_eval_constant_expression) <case THROW_EXPR>: Recurse on operand |
| for C++26. |
| (cxx_eval_outermost_constant_expr): Diagnose uncaught exceptions both |
| from main expression and cleanups, diagnose also |
| break/continue/returns from the main expression. Handle |
| CLEANUP_EH_ONLY cleanup markers. Don't diagnose mutable poison stuff |
| if non_constant_p. Use different diagnostics for non-deleted heap |
| allocations if they were allocated by __cxa_allocate_exception. |
| (callee_might_throw): New function. |
| (struct check_for_return_continue_data): Add could_throw field. |
| (check_for_return_continue): Handle AGGR_INIT_EXPR and CALL_EXPR and |
| set d->could_throw if they could throw. |
| (potential_constant_expression_1): For CALL_EXPR allow |
| cxx_dynamic_cast_fn_p calls. For C++26 set *jump_target to void_node |
| for calls that could throw. For C++26 if call to non-constexpr call |
| is seen, try to evaluate arguments first and if they could throw, |
| don't diagnose call to non-constexpr function nor return false. |
| Adjust check_for_return_continue_data initializers and |
| set *jump_target to void_node if data.could_throw_p. For C++26 |
| recurse on THROW_EXPR argument. Add comment explaining TRY_BLOCK |
| handling with C++26 exceptions. Handle throws like returns in some |
| cases. |
| * cp-tree.h (MUST_NOT_THROW_NOEXCEPT_P, MUST_NOT_THROW_THROW_P, |
| MUST_NOT_THROW_CATCH_P, DECL_EXCEPTION_REFCOUNT): Define. |
| (DECL_LOCAL_DECL_P): Fix comment typo, VARIABLE_DECL -> VAR_DECL. |
| (enum cp_built_in_function): Add CP_BUILT_IN_EH_PTR_ADJUST_REF, |
| (handler_match_for_exception_type): Declare. |
| * call.cc (handler_match_for_exception_type): New function. |
| * except.cc (initialize_handler_parm): Set MUST_NOT_THROW_CATCH_P |
| on newly created MUST_NOT_THROW_EXPR. |
| (begin_eh_spec_block): Set MUST_NOT_THROW_NOEXCEPT_P. |
| (wrap_cleanups_r): Set MUST_NOT_THROW_THROW_P. |
| (build_throw): Add another TARGET_EXPR whose scope spans |
| until after the __cxa_throw call and copy pointer value from ptr |
| to it and use it in __cxa_throw argument. |
| * tree.cc (builtin_valid_in_constant_expr_p): Handle |
| CP_BUILT_IN_EH_PTR_ADJUST_REF. |
| * decl.cc (cxx_init_decl_processing): Initialize |
| __builtin_eh_ptr_adjust_ref FE builtin. |
| * pt.cc (tsubst_stmt) <case MUST_NOT_THROW_EXPR>: Copy the |
| MUST_NOT_THROW_NOEXCEPT_P, MUST_NOT_THROW_THROW_P and |
| MUST_NOT_THROW_CATCH_P flags. |
| * cp-gimplify.cc (cp_gimplify_expr) <case CALL_EXPR>: Error on |
| non-folded CP_BUILT_IN_EH_PTR_ADJUST_REF calls. |
| |
| 2025-07-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/121012 |
| PR c++/120917 |
| * parser.cc (cp_parser_lambda_expression): Clear |
| parser->in_template_argument_list_p. |
| |
| 2025-07-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/121008 |
| PR c++/113563 |
| * semantics.cc (finish_this_expr): Do check current_class_ref for |
| non-lambda. |
| |
| 2025-07-09 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/119838 |
| * parser.cc (cp_parser_nested_name_specifier_opt): New global_p |
| parameter. Look for "template" when global_p is true. |
| (cp_parser_simple_type_specifier): Pass global_p to |
| cp_parser_nested_name_specifier_opt. |
| |
| 2025-07-08 Marek Polacek <polacek@redhat.com> |
| Andrew Pinski <quic_apinski@quicinc.com> |
| |
| PR c++/83469 |
| PR c++/93809 |
| * cp-tree.h (UNION_TYPE_P): Define. |
| (TYPENAME_IS_UNION_P): Define. |
| * decl.cc (struct typename_info): Add union_p field. |
| (struct typename_hasher::equal): Compare union_p field. |
| (build_typename_type): Use ti.union_p for union_type. Set |
| TYPENAME_IS_UNION_P. |
| * error.cc (dump_type) <case TYPENAME_TYPE>: Handle |
| TYPENAME_IS_UNION_P. |
| * module.cc (trees_out::type_node): Likewise. |
| * parser.cc (cp_parser_check_class_key): Allow typename key for union |
| types and allow union keyword for typename types. |
| * pt.cc (tsubst) <case TYPENAME_TYPE>: Don't conflate unions with |
| class_type. For TYPENAME_IS_CLASS_P, check NON_UNION_CLASS_TYPE_P |
| rather than CLASS_TYPE_P. Add TYPENAME_IS_UNION_P handling. |
| |
| 2025-07-08 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117784 |
| * decl.cc: Implement part of C++26 P2686R4 - constexpr structured |
| bindings. |
| (cp_finish_decl): Pedwarn for C++23 and older on constinit on |
| structured bindings except for static/thread_local where it uses |
| earlier error. |
| (grokdeclarator): Pedwarn on constexpr structured bindings for |
| C++23 and older instead of emitting error always, don't clear |
| constexpr_p in that case. |
| * parser.cc (cp_parser_decomposition_declaration): Copy over |
| DECL_DECLARED_CONSTEXPR_P and DECL_DECLARED_CONSTINIT_P flags. |
| |
| 2025-07-07 Alfie Richards <alfie.richards@arm.com> |
| |
| PR c++/119498 |
| * decl.cc (duplicate_decls): Change logic to not always exclude FMV |
| annotated functions in cases of return type non-ambiguation. |
| |
| 2025-07-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120917 |
| * parser.cc (cp_parser_simple_type_specifier): Attach |
| auto in targ in parameter to -Wabbreviated-auto-in-template-arg. |
| (cp_parser_placeholder_type_specifier): Diagnose constrained auto in |
| template arg. |
| |
| 2025-07-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84009 |
| * parser.cc (cp_parser_decomposition_declaration): Pedwarn |
| on thread_local, __thread or static in decl_specifiers for |
| for-range-declaration. |
| (cp_parser_init_declarator): Likewise, and also for extern |
| or register. |
| |
| 2025-07-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120575 |
| PR c++/116064 |
| * parser.cc (cp_parser_abort_tentative_parse): Check seen_error |
| instead of errorcount. |
| |
| 2025-07-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120716 |
| * lambda.cc (finish_lambda_function): Pass cur_stmt_list to |
| prune_lambda_captures. |
| |
| 2025-07-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120748 |
| * lambda.cc (lambda_expr_this_capture): Don't return a FIELD_DECL. |
| * parser.cc (cp_parser_primary_expression): Ignore THIS_FORBIDDEN |
| if cp_unevaluated_operand. |
| |
| 2025-07-03 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120940 |
| * typeck.cc (cp_build_array_ref): Fix a pasto. |
| |
| 2025-07-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120684 |
| PR c++/118856 |
| * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]: Clear |
| the value first if is_complex. |
| |
| 2025-07-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120471 |
| * typeck.cc (cp_build_array_ref) <case COND_EXPR>: If idx is not |
| INTEGER_CST, don't optimize the case (but cp_default_conversion on |
| array early if it has ARRAY_TYPE) or use |
| SAVE_EXPR <op0>, SAVE_EXPR <idx>, SAVE_EXPR <op0> as new op0 depending |
| on flag_strong_eval_order and whether op1 and op2 are arrays with |
| invariant address or tree invariant pointers. Formatting fixes. |
| |
| 2025-06-28 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (trees_out::walking_bit_field_unit): New flag. |
| (trees_out::trees_out): Initialize it. |
| (trees_out::core_vals): Set it. |
| (trees_out::get_merge_kind): Use it, move previous ad-hoc check |
| into assertion. |
| |
| 2025-06-28 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120644 |
| * decl.cc (cp_finish_decl): Also propagate type to partial |
| templates. |
| * module.cc (trees_out::decl_value): Add assertion that the |
| TREE_TYPE of a streamed template decl matches its inner. |
| (trees_in::is_matching_decl): Clarify function return type |
| deduction should only occur for non-TEMPLATE_DECL. |
| * pt.cc (template_for_substitution): Handle partial specs. |
| |
| 2025-06-27 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/120756 |
| * pt.cc (resolve_nondeduced_context): Pass complain to mark_used. |
| |
| 2025-06-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120777 |
| * constexpr.cc: Implement C++26 P3533R2 - constexpr virtual |
| inheritance. |
| (is_valid_constexpr_fn): Don't reject constexpr cdtors in classes |
| with virtual bases for C++26, adjust error wording. |
| (cxx_bind_parameters_in_call): Add ORIG_FUN argument, add |
| values for __in_chrg and __vtt_parm arguments when needed. |
| (cxx_eval_dynamic_cast_fn): Adjust function comment, HINT -1 |
| should be possible. For C++26 if obj is cast from POINTER_PLUS_EXPR, |
| attempt to use cxx_fold_indirect_ref to simplify it and if successful, |
| build ADDR_EXPR of that. |
| (cxx_eval_call_expression): Add orig_fun variable, set it to |
| fun before looking through clones, pass it to |
| cxx_bind_parameters_in_call. |
| (reduced_constant_expression_p): Add SZ argument, pass DECL_SIZE |
| of FIELD_DECL e.index to recursive calls and don't return false |
| if SZ is non-NULL and there are unfilled fields with bit position |
| at or above SZ. |
| (cxx_fold_indirect_ref_1): Handle reading of vtables using |
| ptrdiff_t dynamic type instead of some pointer type. Set el_sz |
| to DECL_SIZE_UNIT value rather than TYPE_SIZE_UNIT of |
| DECL_FIELD_IS_BASE fields in classes with virtual bases. |
| (cxx_fold_indirect_ref): In canonicalize_obj_off lambda look |
| through COMPONENT_REFs with DECL_FIELD_IS_BASE in classes with |
| virtual bases and adjust off correspondingly. Remove assertion that |
| off is integer_zerop, pass tree_to_uhwi (off) instead of 0 to the |
| cxx_fold_indirect_ref_1 call. |
| * cp-tree.h (publicly_virtually_derived_p): Declare. |
| (reduced_constant_expression_p): Add another tree argument defaulted |
| to NULL_TREE. |
| * method.cc (synthesized_method_walk): Don't clear *constexpr_p |
| if there are virtual bases for C++26. |
| * class.cc (build_base_path): Compute fixed_type_p and |
| virtual_access before checks for build_simple_base_path instead of |
| after that and conditional cp_build_addr_expr. Use build_simple_path |
| if !virtual_access even when v_binfo is non-NULL. |
| (layout_virtual_bases): For build_base_field calls use |
| access_public_node rather than access_private_node if |
| publicly_virtually_derived_p. |
| (build_vtbl_initializer): Revert 2018-09-18 and 2018-12-11 changes. |
| (publicly_virtually_derived_p): New function. |
| |
| 2025-06-27 Jason Merrill <jason@redhat.com> |
| |
| * class.cc (fixed_type_or_null): Handle class-type CALL_EXPR. |
| * parser.cc (cp_parser_binary_expression): Fix decltype_p handling. |
| |
| 2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/98735 |
| PR c++/118904 |
| * cp-gimplify.cc (source_location_id): Remove. |
| (fold_builtin_source_location): Use generate_internal_label. |
| * module.cc (enum tree_tag): Add 'tt_internal_id' enumerator. |
| (trees_out::tree_value): Adjust assertion, write definitions |
| of uncontexted VAR_DECLs. |
| (trees_in::tree_value): Read variable definitions. |
| (trees_out::tree_node): Write internal labels, adjust assert. |
| (trees_in::tree_node): Read internal labels. |
| |
| 2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120040 |
| * constexpr.cc (cxx_eval_constant_expression): Handle TYPE_NAME |
| now being a TYPE_DECL rather than just an IDENTIFIER_NODE. |
| * init.cc (build_new_constexpr_heap_type): Build a TYPE_DECL for |
| the returned type; mark the type as artificial. |
| * module.cc (trees_out::type_node): Add some assertions. |
| |
| 2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/98735 |
| PR c++/120040 |
| * module.cc (trees_out::tree_value): Write TYPE_DECLs. |
| (trees_in::tree_value): Read TYPE_DECLs. |
| (trees_out::tree_node): Support uncontexted TYPE_DECLs, and |
| ensure that all parts of a by-value decl are marked for |
| streaming. |
| (trees_out::get_merge_kind): Treat members of uncontexted types |
| as always unique. |
| |
| 2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * decl.cc (grokfndecl): Add explanation of how to attach to |
| global module. |
| |
| 2025-06-26 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.cc (cxx_initialize_diagnostics): Use |
| diagnostic_context::set_adjust_diagnostic_info_callback. |
| |
| 2025-06-26 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-trait.def: Implement C++26 P2830R10 - Constexpr Type Ordering. |
| (TYPE_ORDER): New. |
| * method.cc (type_order_value): Define. |
| * cp-tree.h (type_order_value): Declare. |
| * semantics.cc (trait_expr_value): Use gcc_unreachable also |
| for CPTK_TYPE_ORDER, adjust comment. |
| (finish_trait_expr): Handle CPTK_TYPE_ORDER. |
| * constraint.cc (diagnose_trait_expr): Likewise. |
| |
| 2025-06-25 Martin Jambor <mjambor@suse.cz> |
| |
| * coroutines.h (class cp_coroutine_transform): Remove member |
| orig_fn_body. |
| |
| 2025-06-24 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/120773 |
| * decl.cc (grokfndecl): Implement C++26 P3618R0 - Allow attaching |
| main to the global module. Only pedwarn for current_lang_name |
| other than lang_name_cplusplus and adjust pedwarn wording. |
| |
| 2025-06-23 Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (OACC_WAIT_CLAUSE_MASK): Ass if clause. |
| |
| 2025-06-18 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/115908 |
| PR c++/118074 |
| PR c++/95615 |
| * coroutines.cc (coro_frame_refcount_id): New. |
| (coro_init_identifiers): Initialise coro_frame_refcount_id. |
| (build_actor_fn): Set up initial_await_resume_called. Handle |
| decrementing of the frame reference count. Return directly to |
| the caller if that is non-zero. |
| (cp_coroutine_transform::wrap_original_function_body): Use a |
| conditional eh-only cleanup around the initial await expression |
| to release the body use on exception before initial await |
| resume. |
| (cp_coroutine_transform::build_ramp_function): Wrap the called |
| body in a cleanup that releases a use of the frame when we |
| return to the ramp. Implement frame, promise and argument copy |
| destruction via conditional cleanups when the frame use count |
| is zero. |
| |
| 2025-06-17 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (struct coroutine_info): Update comments. |
| (struct coro_aw_data): Remove self_handle and add in |
| information to create the handle in lowering. |
| (expand_one_await_expression): Build a temporary coroutine |
| handle. |
| (build_actor_fn): Remove reference to the frame copy of the |
| coroutine handle. |
| (cp_coroutine_transform::wrap_original_function_body): Remove |
| reference to the frame copy of the coroutine handle. |
| |
| 2025-06-17 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (analyze_expression_awaits): Elide assume |
| attributes containing await expressions, since these have |
| side effects. Emit a diagnostic that this has been done. |
| |
| 2025-06-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120678 |
| * cp-trait.def (IS_TRIVIALLY_DESTRUCTIBLE): Fix nargs. |
| |
| 2025-06-17 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (module_state::write_diagnostic_classification): New. |
| (module_state::write_begin): Call it. |
| (module_state::read_diagnostic_classification): New. |
| (module_state::read_initial): Call it. |
| (dk_string, dump_dc_change): New. |
| |
| 2025-06-17 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (finish_co_await_expr): Do not allow in an |
| unevaluated context. |
| (finish_co_yield_expr): Likewise. |
| |
| 2025-06-17 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/120273 |
| * coroutines.cc |
| (cp_coroutine_transform::wrap_original_function_body): Use |
| function start and end locations when synthesizing code. |
| (cp_coroutine_transform::cp_coroutine_transform): Set the |
| function end location. |
| |
| 2025-06-16 Jason Merrill <jason@redhat.com> |
| |
| * constraint.cc (failed_completions_map): New. |
| (note_failed_type_completion): Rename from |
| note_failed_type_completion_for_satisfaction. Add |
| -Wsfinae-incomplete handling. |
| (failed_completion_location): New. |
| * class.cc (finish_struct_1): Add -Wsfinae-incomplete warning. |
| * decl.cc (require_deduced_type): Adjust. |
| (finish_function): Add -Wsfinae-incomplete warning. |
| * typeck.cc (complete_type_or_maybe_complain): Adjust. |
| (cxx_sizeof_or_alignof_type): Call note_failed_type_completion. |
| * pt.cc (dependent_template_arg_p): No longer static. |
| * cp-tree.h: Adjust. |
| |
| 2025-06-16 yxj-github-437 <2457369732@qq.com> |
| |
| * parser.cc (cp_parser_asm_operand_list): Check for unexpanded |
| parameter packs. |
| |
| 2025-06-14 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (build_co_await): Identify diagnostics |
| for initial and final await expressions. |
| (cp_coroutine_transform::wrap_original_function_body): Do |
| not handle initial and final await expressions here ... |
| (cp_coroutine_transform::apply_transforms): ... handle them |
| here and avoid duplicate diagnostics. |
| * coroutines.h: Declare inital and final await expressions |
| in the transform class. Save the function closing brace |
| location. |
| |
| 2025-06-13 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/116775 |
| * coroutines.cc (analyze_expression_awaits): When we see |
| a builtin_constant_p call, and that contains one or more |
| await expressions, then replace the call with its result |
| and discard the unevaluated operand. |
| |
| 2025-06-13 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (build_actor_fn): Set can_throw. |
| |
| 2025-06-12 Alfie Richards <alfie.richards@arm.com> |
| |
| * decl.cc (maybe_version_functions): Change record_function_versions |
| call to add_function_version. |
| |
| 2025-06-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h (union lang_type::maybe_objc_info): New type. |
| (struct lang_type): Use union maybe_objc_info info member |
| instead of tree objc_info. |
| * lex.cc (copy_lang_type): Use sizeof (struct lang_type) |
| just for ObjC++ and otherwise offsetof (struct lang_type, info). |
| (maybe_add_lang_type_raw): Likewise. |
| (cxx_make_type): Formatting fix. |
| |
| 2025-06-09 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/120495 |
| PR c++/115605 |
| * pt.cc (lookup_template_class): Honour provided namespace contexts |
| when looking up class templates. |
| |
| 2025-06-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120555 |
| * decl2.cc (fn_being_defined, fn_template_being_defined): New. |
| (mark_used): Check fn_template_being_defined. |
| |
| 2025-06-05 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/120224 |
| * pt.cc (tsubst_function_decl): Return error_mark_node if |
| substituting into the formal parameter list failed. |
| (tsubst_decl) <case PARM_DECL>: Return error_mark_node |
| upon TREE_TYPE substitution failure, when in a SFINAE |
| context. Return error_mark_node upon DECL_CHAIN substitution |
| failure. |
| |
| 2025-06-05 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/118340 |
| * constexpr.cc (maybe_constant_value): First try looking up each |
| operand in the cv_cache and reusing the result. |
| |
| 2025-06-05 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (analyze_fn_parms): Move from free function.. |
| (cp_coroutine_transform::analyze_fn_parms):... to method. |
| (cp_coroutine_transform::apply_transforms): Adjust call to |
| analyze_fn_parms. |
| * coroutines.h: Declare analyze_fn_parms. |
| |
| 2025-06-05 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (expand_one_await_expression): Set the |
| initial_await_resume_called flag here. |
| (build_actor_fn): Populate the frame accessor for the |
| initial_await_resume_called flag. |
| (cp_coroutine_transform::wrap_original_function_body): Do |
| not modify the initial_await expression to include the |
| initial_await_resume_called flag here. |
| |
| 2025-06-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120502 |
| * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: Do constexpr evaluation |
| before genericize. |
| * constexpr.cc (cxx_eval_store_expression): Add comment. |
| |
| 2025-06-03 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.h (operator|, operator|=): Define for WMB_Flags. |
| |
| 2025-06-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107600 |
| * method.cc (destructible_expr): Fix refs and arrays of unknown |
| bound. |
| |
| 2025-06-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120506 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Always check |
| CONSTRUCTOR_NO_CLEARING. |
| |
| 2025-06-02 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (build_actor_fn): Remove an unused |
| label, guard the frame deallocation correctly, use |
| simpler APIs to build if and return statements. |
| |
| 2025-06-02 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/118903 |
| * constexpr.cc (potential_constant_expression_1): Emit |
| an error when co_await et. al. are used in constexpr |
| contexts. |
| |
| 2025-06-02 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * error.cc (dump_expr): Add co_await, co_yield and co_return. |
| |
| 2025-06-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107600 |
| * method.cc (destructible_expr): Handle non-classes. |
| (constructible_expr): Check for abstract class here... |
| (is_xible_helper): ...not here. |
| |
| 2025-06-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107600 |
| * semantics.cc (trait_expr_value) [CPTK_HAS_TRIVIAL_DESTRUCTOR]: |
| Add cp_unevaluated. |
| |
| 2025-06-02 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * cp-tree.h (maybe_convert_cond): Declare. |
| * parser.cc (cp_parser_omp_context_selector): Call |
| maybe_convert_cond and fold_build_cleanup_point_expr on the |
| expression for OMP_TRAIT_PROPERTY_BOOL_EXPR. |
| * pt.cc (tsubst_omp_context_selector): Likewise. |
| * semantics.cc (maybe_convert_cond): Remove static declaration. |
| |
| 2025-05-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/113563 |
| * lambda.cc (lambda_capture_field_type): Handle 'this' normally. |
| (build_capture_proxy): Special-case 'this' by-ref capture more. |
| (nonlambda_method_basetype): Look through xobj lambdas. |
| |
| 2025-05-30 Julian Brown <julian@codesourcery.com> |
| Tobias Burnus <tburnus@baylibre.com> |
| |
| * constexpr.cc (reduced_constant_expression_p): Add OMP_DECLARE_MAPPER |
| case. |
| (cxx_eval_constant_expression, potential_constant_expression_1): |
| Likewise. |
| * cp-gimplify.cc (cxx_omp_finish_mapper_clauses): New function. |
| * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_MAPPER_CLAUSES, |
| LANG_HOOKS_OMP_MAPPER_LOOKUP, LANG_HOOKS_OMP_EXTRACT_MAPPER_DIRECTIVE, |
| LANG_HOOKS_OMP_MAP_ARRAY_SECTION): Define langhooks. |
| * cp-tree.h (lang_decl_base): Add omp_declare_mapper_p field. Recount |
| spare bits comment. |
| (DECL_OMP_DECLARE_MAPPER_P): New macro. |
| (omp_mapper_id): Add prototype. |
| (cp_check_omp_declare_mapper): Add prototype. |
| (omp_instantiate_mappers): Add prototype. |
| (cxx_omp_finish_mapper_clauses): Add prototype. |
| (cxx_omp_mapper_lookup): Add prototype. |
| (cxx_omp_extract_mapper_directive): Add prototype. |
| (cxx_omp_map_array_section): Add prototype. |
| * decl.cc (check_initializer): Add OpenMP declare mapper support. |
| (cp_finish_decl): Set DECL_INITIAL for OpenMP declare mapper var decls |
| as appropriate. |
| * decl2.cc (mark_used): Instantiate OpenMP "declare mapper" magic var |
| decls. |
| * error.cc (dump_omp_declare_mapper): New function. |
| (dump_simple_decl): Use above. |
| * parser.cc (cp_parser_omp_clause_map): Add KIND parameter. Support |
| "mapper" modifier. |
| (cp_parser_omp_all_clauses): Add KIND argument to |
| cp_parser_omp_clause_map call. |
| (cp_parser_omp_target): Call omp_instantiate_mappers before |
| finish_omp_clauses. |
| (cp_parser_omp_declare_mapper): New function. |
| (cp_parser_omp_declare): Add "declare mapper" support. |
| * pt.cc (tsubst_decl): Adjust name of "declare mapper" magic var decls |
| once we know their type. |
| (tsubst_omp_clauses): Call omp_instantiate_mappers before |
| finish_omp_clauses, for target regions. |
| (tsubst_expr): Support OMP_DECLARE_MAPPER nodes. |
| (instantiate_decl): Instantiate initialiser (i.e definition) for OpenMP |
| declare mappers. |
| * semantics.cc (gimplify.h): Include. |
| (omp_mapper_id, omp_mapper_lookup, omp_extract_mapper_directive, |
| cxx_omp_map_array_section, cp_check_omp_declare_mapper): New functions. |
| (finish_omp_clauses): Delete GOMP_MAP_PUSH_MAPPER_NAME and |
| GOMP_MAP_POP_MAPPER_NAME artificial clauses. |
| (omp_target_walk_data): Add MAPPERS field. |
| (finish_omp_target_clauses_r): Scan for uses of struct/union/class type |
| variables. |
| (finish_omp_target_clauses): Create artificial mapper binding clauses |
| for used structs/unions/classes in offload region. |
| |
| 2025-05-29 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.cc (cxx_format_postprocessor::clone): Update to use |
| unique_ptr. |
| (cxx_dump_pretty_printer::cxx_dump_pretty_printer): Likewise. |
| (cxx_initialize_diagnostics): Likewise. |
| |
| 2025-05-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/113563 |
| * lambda.cc (build_capture_proxy): Check pointerness of the |
| member, not the proxy type. |
| (lambda_expr_this_capture): Don't assume current_class_ref. |
| (nonlambda_method_basetype): Likewise. |
| * semantics.cc (finish_non_static_data_member): Don't assume |
| TREE_TYPE (object) is set. |
| (finish_this_expr): Check current_class_type for lambda, |
| not current_class_ref. |
| |
| 2025-05-29 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/109283 |
| * coroutines.cc (find_any_await): Only save the statement |
| pointer if the caller passes a place for it. |
| (flatten_await_stmt): When checking that ternary expressions |
| have been handled, also check that they contain a co_await. |
| |
| 2025-05-29 Jason Merrill <jason@redhat.com> |
| |
| * decl.cc (start_decl): Also set invalid_constexpr |
| for maybe_constexpr_fn. |
| * parser.cc (cp_parser_jump_statement): Likewise. |
| * constexpr.cc (potential_constant_expression_1): Ignore |
| goto to an artificial label. |
| |
| 2025-05-29 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_metadirective): Do not call |
| cp_parser_skip_to_end_of_block_or_statement after an error. |
| |
| 2025-05-29 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| PR c/120180 |
| * parser.cc (cp_parser_omp_metadirective): Only consume the |
| token if it is the expected close paren. |
| |
| 2025-05-29 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (analyze_fn_parms): No longer |
| create a parameter copy guard var. |
| * coroutines.h (struct param_info): Remove the |
| entry for the parameter copy destructor guard. |
| |
| 2025-05-29 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/120453 |
| * cp-tree.h (DECL_RAMP_P): New. |
| * typeck.cc (check_return_expr): Use DECL_RAMP_P instead |
| of DECL_RAMP_FN. |
| |
| 2025-05-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/107600 |
| * cp-trait.def (IS_DESTRUCTIBLE, IS_NOTHROW_DESTRUCTIBLE) |
| (IS_TRIVIALLY_DESTRUCTIBLE): New. |
| * constraint.cc (diagnose_trait_expr): Explain them. |
| * method.cc (destructible_expr): New. |
| (is_xible_helper): Use it. |
| * semantics.cc (finish_trait_expr): Handle new traits. |
| (trait_expr_value): Likewise. Complain about asking |
| whether a deleted dtor is trivial. |
| |
| 2025-05-28 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (module_state::write_namespaces): Write |
| using-directives. |
| (module_state::read_namespaces): And read them. |
| * name-lookup.cc (add_using_namespace): Add overload. Build a |
| USING_DECL for modules. |
| (name_lookup::search_usings, name_lookup::queue_usings) |
| (using_directives_contain_std_p): Strip the USING_DECL. |
| * name-lookup.h: Declare it. |
| * parser.cc (cp_parser_import_declaration): Set MK_EXPORTING |
| for export import. |
| |
| 2025-05-27 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (cp_coroutine_transform::build_ramp_function): |
| Replace TRUTH_AND_EXPR with TRUTH_ANDIF_EXPR in three places. |
| |
| 2025-05-26 Tobias Burnus <tburnus@baylibre.com> |
| |
| PR c++/120413 |
| * semantics.cc (finish_omp_target_clauses_r): Handle |
| BIND_EXPR with empty BIND_EXPR_BLOCK. |
| |
| 2025-05-26 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h: Declare tinst_dump_id. |
| * cp-objcp-common.cc (cp_register_dumps): Set it. |
| * pt.cc (push_tinst_level_loc): Dump it. |
| (reopen_tinst_level): Here too. |
| (tinst_complete_p): New. |
| (instantiate_pending_templates): Don't reopen_tinst_level for |
| already-complete instantiations. |
| |
| 2025-05-26 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (class cxx_dump_pretty_printer): New. |
| * error.cc (cxx_dump_pretty_printer): Ctor/dtor definitions. |
| |
| 2025-05-25 Jason Merrill <jason@redhat.com> |
| |
| * error.cc (dump_template_bindings): Correct skipping of |
| redundant bindings. |
| |
| 2025-05-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120363 |
| * decl2.cc (get_tls_init_fn): Set context as global_namespace. |
| (get_tls_wrapper_fn): Likewise. |
| |
| 2025-05-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120414 |
| * module.cc (trees_in::tree_node): Allow reading a USING_DECL |
| when streaming tt_data_member. |
| |
| 2025-05-23 Jason Merrill <jason@redhat.com> |
| |
| * mangle.cc (mangle_decl_string): Don't push_tinst_level. |
| |
| 2025-05-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120935 |
| * cp-gimplify.cc (cp_fold): Check always_inline. |
| |
| 2025-05-21 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc |
| (cp_coroutine_transform::build_ramp_function): Replace ramp |
| cleanup try-catch block with eh-only cleanup statements. |
| |
| 2025-05-21 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc |
| (cp_coroutine_transform::build_ramp_function): Use |
| decltype(auto) to determine the type of the temporary |
| get_return_object. |
| |
| 2025-05-21 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/119916 |
| * coroutines.cc |
| (cp_coroutine_transform::wrap_original_function_body): Do not |
| initialise initial_await_resume_called here... |
| (cp_coroutine_transform::build_ramp_function): ... but here. |
| When the coroutine is not void, initialize a GRO object from |
| promise.get_return_object(). Use this as the argument to the |
| return expression. Use a regular cleanup for the GRO, since |
| it is ramp-local. |
| |
| 2025-05-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120349 |
| * module.cc (trees_out::core_bools): Always mark vtables as |
| DECL_EXTERNAL. |
| |
| 2025-05-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120013 |
| * module.cc (trees_in::install_entity): Handle re-registering |
| the inner TYPE_DECL of a partial specialisation. |
| |
| 2025-05-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120350 |
| * rtti.cc (get_tinfo_decl_direct): Mark TREE_ADDRESSABLE. |
| |
| 2025-05-16 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| * cp-gimplify.cc (cp_fold): Do the conversion unconditionally, even for same-type cases. |
| |
| 2025-05-16 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * typeck.cc (check_return_expr): Suppress conversions for NVRO |
| in coroutine ramp functions. |
| |
| 2025-05-16 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * decl.cc (poplevel): Set BLOCK_OUTER_CURLY_BRACE_P on the |
| body block for functions with no subblocks. |
| |
| 2025-05-16 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (importer_interface): Adjust flags. |
| (get_importer_interface): Rename flags. |
| (trees_out::core_bools): Clean up special casing. |
| (trees_out::write_function_def): Rename flag. |
| |
| 2025-05-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/120161 |
| * pt.cc (unify) <case RECORD_TYPE>: When comparing specializations |
| of a non-primary template, still perform a type comparison. |
| |
| 2025-05-15 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (trees_out::lang_decl_bools): Stream implicit_constexpr. |
| (trees_in::lang_decl_bools): Likewise. |
| (trees_in::is_matching_decl): Check it. |
| |
| 2025-05-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99599 |
| * pt.cc (conversion_may_instantiate_p): Make sure |
| classes are complete. |
| |
| 2025-05-14 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| * cp-gimplify.cc (cp_fold): Remove a remnant comment. |
| |
| 2025-05-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120125 |
| * module.cc (trees_out::write_function_def): Only set |
| DECL_NOT_REALLY_EXTERN if the importer might need to emit it. |
| * optimize.cc (maybe_thunk_body): Don't assume 'fn' has a cgraph |
| node created. |
| |
| 2025-05-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119864 |
| * decl2.cc (start_objects): Only use module initialized for |
| host. |
| (c_parse_final_cleanups): Don't always create an OMP offload |
| init function in modules. |
| |
| 2025-05-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * name-lookup.cc (lookup_imported_hidden_friend): Add back |
| lazy_load_pendings with comment. |
| |
| 2025-05-14 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| * cp-gimplify.cc (cp_fold): Add to_underlying. |
| |
| 2025-05-14 Owen Avery <powerboat9.gamer@gmail.com> |
| Jason Merrill <jason@redhat.com> |
| |
| * method.cc (synthesized_method_walk): Check whether |
| -Wvirtual-move-assign is enabled at the location of a base |
| class's move assignment operator. |
| |
| 2025-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120012 |
| * class.cc (check_non_pod_aggregate): Check is_empty_class. |
| |
| 2025-05-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120204 |
| * pt.cc (tsubst_baselink): Always error if lookup fails. |
| |
| 2025-05-09 Jason Merrill <jason@redhat.com> |
| |
| * decl2.cc (determine_visibility): Ignore args for friend templates. |
| |
| 2025-05-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99599 |
| PR c++/120185 |
| * class.cc (type_has_converting_constructor): Handle null parm. |
| * pt.cc (fn_type_unification): Skip early non-dep checking if |
| no concepts. |
| |
| 2025-05-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99599 |
| * cp-tree.h (type_has_converting_constructor): Declare. |
| * class.cc (type_has_converting_constructor): New. |
| * pt.cc (conversion_may_instantiate_p): Don't check completeness. |
| |
| 2025-05-05 Simon Martin <simon@nasilyan.com> |
| |
| * cp-tree.h (parsing_default_capturing_generic_lambda_in_template): |
| Remove obsolete prototype. |
| |
| 2025-05-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/115207 |
| * decl.cc (cp_finish_decl): Call layout_decl after CTAD. |
| |
| 2025-05-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/120012 |
| * cp-tree.h (struct lang_type): Add non_aggregate_pod. |
| (CLASSTYPE_NON_AGGREGATE_POD): New. |
| * class.cc (check_bases_and_members): Set it. |
| (check_non_pod_aggregate): Diagnose it. |
| |
| 2025-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117827 |
| * init.cc (build_vec_init): Push to *cleanup_flags clearing of rval |
| instead of setting of iterator to maxindex. |
| |
| 2025-05-01 Patrick Palka <ppalka@redhat.com> |
| |
| * constexpr.cc (explain_invalid_constexpr_fn): In the |
| DECL_CONSTRUCTOR_P branch pass the non-genericized body to |
| require_potential_constant_expression. |
| |
| 2025-05-01 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119034 |
| PR c++/68942 |
| * pt.cc (tsubst_expr) <case CALL_EXPR>: Revert PR68942 fix. |
| * semantics.cc (finish_call_expr): Ensure the callee of an |
| ADL-enabled call is wrapped in an OVERLOAD. |
| |
| 2025-05-01 Jason Merrill <jason@redhat.com> |
| |
| * Make-lang.in: Don't pass the full path to gperf. |
| * std-name-hint.h: Regenerate. |
| |
| 2025-05-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119162 |
| * constexpr.cc (find_deleted_heap_var): Remove. |
| (cxx_eval_call_expression): Don't call it. Don't set TREE_STATIC on |
| heap vars. |
| (cxx_eval_outermost_constant_expr): Don't mess with varpool. |
| |
| 2025-04-30 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/120023 |
| * module.cc (depset::hash::find_dependencies): Also call |
| add_deduction_guides when walking one. |
| |
| 2025-04-30 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119938 |
| * pt.cc (get_template_parm_object): When !check_init, add assert |
| that expr really is constant and mark decl as such. |
| |
| 2025-04-30 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119551 |
| PR c++/119996 |
| * module.cc (depset::hash::make_dependency): Also mark inline |
| variables referencing TU-local values as exposures here. |
| (depset::hash::finalize_dependencies): Add error message for |
| inline variables. |
| |
| 2025-04-30 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119981 |
| PR c++/119378 |
| * pt.cc (tsubst) <case UNBOUND_CLASS_TEMPLATE>: Substitute |
| into template parameter list first. When substituting the |
| context, only set processing_template_decl if there's more |
| than one level of introduced template parameters. |
| |
| 2025-04-28 David Malcolm <dmalcolm@redhat.com> |
| |
| * parser.cc: Include "analyzer/analyzer-language.h". |
| (ana::cp_translation_unit): New class. |
| (cp_parser_translation_unit): Add call to |
| ana::on_finish_translation_unit. |
| |
| 2025-04-28 David Malcolm <dmalcolm@redhat.com> |
| |
| * cxx-pretty-print.cc: Drop include of "make-unique.h". |
| Replace uses of ::make_unique with std::make_unique. |
| * error.cc: Likewise. |
| * name-lookup.cc: Likewise. |
| * parser.cc: Likewise. |
| |
| 2025-04-28 David Malcolm <dmalcolm@redhat.com> |
| |
| * name-lookup.cc: Include "make-unique.h". |
| (namespace_hints::convert_candidates_to_name_hint): Use |
| ::make_unique rather than "new" when making |
| show_candidate_location and suggest_alternatives. |
| (namespace_hints::maybe_decorate_with_limit): Likewise when making |
| namespace_limit_reached. |
| (suggest_alternatives_for_1): Likewise when making |
| suggest_missing_option. |
| (maybe_suggest_missing_std_header): Likewise when making |
| missing_std_header. |
| (macro_use_before_def::maybe_make): Use std::unique_ptr. |
| (macro_use_before_def::macro_use_before_def): Make public. |
| (lookup_name_fuzzy): Use ::make_unique rather than "new" when |
| making suggest_missing_header. |
| * parser.cc: Include "make-unique.h". |
| (cp_parser_error_1): Use ::make_unique rather than "new" when |
| making suggest_missing_header. |
| |
| 2025-04-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119939 |
| * module.cc (trees_out::lang_decl_vals): Also stream |
| lang->u.fn.context when DECL_UNIQUE_FRIEND_P. |
| (trees_in::lang_decl_vals): Likewise. |
| |
| 2025-04-27 H.J. Lu <hjl.tools@gmail.com> |
| |
| PR middle-end/112877 |
| * call.cc (type_passed_as): Remove the |
| targetm.calls.promote_prototypes call. |
| (convert_for_arg_passing): Likewise. |
| * typeck.cc (cxx_safe_arg_type_equiv_p): Likewise. |
| |
| 2025-04-25 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119764 |
| PR c++/87185 |
| * lambda.cc (insert_capture_proxy): Handle noexcept lambda. |
| (prune_lambda_captures): Likewise, in ABI v21. |
| |
| 2025-04-25 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (struct tinst_level): Add had_errors bit. |
| * pt.cc (push_tinst_level_loc): Clear it. |
| (pop_tinst_level): Set it. |
| (reopen_tinst_level): Check it. |
| (instantiate_pending_templates): Call limit_bad_template_recursion. |
| |
| 2025-04-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/116954 |
| * contracts.cc (remove_contract_attributes): Return early if |
| not enabled. |
| |
| 2025-04-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * name-lookup.cc (lookup_imported_hidden_friend): Remove |
| unnecessary lazy_load_pendings. |
| |
| 2025-04-22 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119863 |
| * name-lookup.cc (get_mergeable_namespace_binding): Remove |
| no-longer-used function. |
| (lookup_imported_hidden_friend): Also look for hidden imported |
| decls in an attached decl's module. |
| |
| 2025-04-21 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Move |
| verify_constant later. |
| |
| 2025-04-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118775 |
| * constexpr.cc (cxx_eval_call_expression): Add assert. |
| (fold_to_constant): Handle processing_template_decl. |
| * init.cc (build_new_1): Use fold_to_constant. |
| |
| 2025-04-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99456 |
| * constexpr.cc (cxx_eval_constant_expression): Check strict |
| instead of manifestly_const_eval. |
| (maybe_constant_init_1): Be strict for static constexpr vars. |
| |
| 2025-04-19 Jason Merrill <jason@redhat.com> |
| |
| * coroutines.cc (coro_build_expr_stmt) |
| (coro_build_cvt_void_expr_stmt): Remove. |
| (build_actor_fn): Use finish_expr_stmt. |
| * semantics.cc (finish_expr_stmt): Avoid wrapping statement in |
| EXPR_STMT. |
| (finish_stmt_expr_expr): Add comment. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (is_valid_constexpr_fn): Improve diagnostic. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Give both |
| expression and allocation location in allocated storage diagnostics. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.cc (name_lookup::preserve_state): Fix reserve call. |
| * rtti.cc (get_tinfo_desc): Use vec_safe_grow_cleared. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| * semantics.cc (finish_type_pack_element): Add more info |
| to diagnostics. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| * decl.cc (cp_make_fname_decl): Prevent silent failure. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| * lex.cc (unqualified_name_lookup_error): Handle 'requires' better. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/113360 |
| * cp-tree.h (struct language_function): Add erroneous bit. |
| * constexpr.cc (explain_invalid_constexpr_fn): Return if set. |
| (cxx_eval_call_expression): Quiet if set. |
| * parser.cc (cp_parser_function_definition_after_declarator) |
| * pt.cc (instantiate_body): Set it. |
| |
| 2025-04-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/114772 |
| PR c++/101180 |
| * pt.cc (apply_late_template_attributes): Also override |
| target_option_current_node. |
| |
| 2025-04-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/116954 |
| * contracts.cc (remove_contract_attributes): Preserve flags |
| on the attribute list. |
| |
| 2025-04-15 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119755 |
| * lambda.cc (prune_lambda_captures): Remove pruned capture from |
| function's BLOCK_VARS and BIND_EXPR_VARS. |
| |
| 2025-04-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/111075 |
| * constexpr.cc (cxx_eval_call_expression): Allow trivial |
| call from a thunk. |
| |
| 2025-04-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119807 |
| PR c++/112288 |
| * pt.cc (tsubst_friend_function): Skip remapping an |
| existing specialization if it doesn't match the shape of |
| the new friend definition. |
| |
| 2025-04-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/113835 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Bail out early |
| for std::vector(N). |
| |
| 2025-04-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99214 |
| * constraint.cc (satisfy_declaration_constraints): Pass the |
| original ARGS to push_tinst_level. |
| |
| 2025-04-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/115639 |
| * constexpr.cc (struct constexpr_call): Add NSDMIs to each |
| field. Replace 'result' data member with 3-element 'results' |
| array and a 'result' accessor function. Remove |
| 'manifestly_const_eval' data member. |
| (constexpr_call_hasher::equal): Adjust after constexpr_call |
| layout change. |
| (cxx_eval_call_expression): Likewise. Define some local |
| variables closer to their first use. Use unknown_type_node |
| instead of NULL_TREE as the "in progress" result. After |
| successully evaluating a call with mce_unknown, also cache the |
| result in the corresponding mce_true and mce_false slots. |
| |
| 2025-04-13 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (trees_in::is_matching_decl): Don't check for |
| mismatches when importing a DECL_MAYBE_DELETED function over one |
| that's already finished. |
| |
| 2025-04-13 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (trees_in::is_matching_decl): Add custom errors for |
| different kinds of mismatches. |
| |
| 2025-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/116416 |
| * constexpr.cc (maybe_constant_init_1): Generalize type of |
| of manifestly_const_eval parameter from bool to mce_value. |
| (maybe_constant_init): Define 3-parameter version taking a |
| manifestly_const_eval instead of bool parameter. |
| (cxx_constant_init): Adjust. |
| * cp-gimplify.cc (cp_fold_r) <case TARGET_EXPR>: Pass mce_false |
| to maybe_constant_init during prvalue folding if ff_mce_false is |
| set. |
| * cp-tree.h (maybe_constant_init): Declare new overload. |
| |
| 2025-04-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/114970 |
| * cp-gimplify.cc (cp_build_init_expr_for_ctor): Suppress warnings on |
| return_this COMPOUND_EXPR. |
| |
| 2025-04-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119345 |
| * pt.cc (add_extra_args): Also register a specialization |
| of the captured variable. |
| |
| 2025-04-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119687 |
| * pt.cc (alias_ctad_tweaks): Use lkp_range / lkp_iterator |
| instead of ovl_iterator. |
| |
| 2025-04-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR translation/119684 |
| * error.cc (cp_print_error_function): Use G_ instead of _ for |
| pp_printf arguments. |
| (function_category): Use G_ instead of _. |
| (print_instantiation_full_context): Use G_ instead of _ in pp_verbatim |
| arguments. |
| (print_location): Likewise. |
| (print_instantiation_partial_context): Likewise. |
| (maybe_print_constexpr_context): Likewise. |
| (print_constrained_decl_info): Use G_() around pp_verbatim argument. |
| (print_concept_check_info): Likewise. |
| (print_constraint_context_head): Likewise. |
| (print_requires_expression_info): Likewise. Merge separate pp_verbatim |
| "in requirements " and "with " into one with conditional messages. |
| |
| 2025-04-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119175 |
| * mangle.cc (decl_mangling_context): Look through lambda type. |
| |
| 2025-04-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119574 |
| * pt.cc (add_extra_args): Remove checking assert. |
| |
| 2025-04-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118698 |
| * constraint.cc (struct norm_info): Add tf_partial. |
| * pt.cc (any_template_parm_r): Handle LAMBDA_EXPR_EXTRA_ARGS. |
| |
| 2025-04-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/117530 |
| * pt.cc (instantiate_template): Check retrieve_specialization after |
| tsubst. |
| |
| 2025-04-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119652 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Also don't add a |
| TARGET_EXPR around AGGR_INIT_EXPR. |
| |
| 2025-04-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/118626 |
| * pt.cc (maybe_dependent_member_ref): Restrict TYPENAME_TYPE |
| shortcut to non-typedef TYPE_DECL. |
| |
| 2025-04-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/118626 |
| * pt.cc (maybe_dependent_member_ref): Substitute and return the |
| stripped type if we decided to not rewrite it directly. |
| |
| 2025-04-05 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/118249 |
| * constexpr.cc (potential_constant_expression_1) |
| <case INDIRECT_REF>: Remove obsolete *this handling. |
| |
| 2025-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118629 |
| * name-lookup.cc (pushdecl_outermost_localscope): Look for an |
| sk_block. |
| |
| 2025-04-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119564 |
| * decl.cc (cp_tree_node_structure): Add TU_LOCAL_ENTITY; fix |
| formatting. |
| |
| 2025-04-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119608 |
| * module.cc (trees_out::decl_node): Maybe require by-value |
| walking not just when streaming. |
| |
| 2025-04-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119462 |
| * module.cc (trees_in::is_matching_decl): Propagate exception |
| spec and constexpr to DECL_MAYBE_DELETED; clear if appropriate. |
| |
| 2025-04-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99546 |
| PR c++/113925 |
| PR c++/106976 |
| PR c++/109961 |
| PR c++/117336 |
| * lambda.cc (build_lambda_object): Handle fake |
| requires-expr processing_template_decl. |
| * parser.cc (cp_parser_lambda_expression): Likewise. |
| |
| 2025-04-04 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/117849 |
| * semantics.cc (finish_id_expression_1): Allow use of constraint |
| variable outside an unevaluated context. |
| |
| 2025-04-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119387 |
| * constexpr.cc (p2280_active_p): New. |
| (cxx_eval_constant_expression) <case VAR_DECL>: Use it to |
| restrict P2280 relaxations. |
| <case PARM_DECL>: Likewise. |
| |
| 2025-04-03 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (module_state::read_cluster) |
| (post_load_processing): Clear DECL_EXTERNAL if DECL_COMDAT. |
| |
| 2025-04-03 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (add_candidates): Re-lookup ne_fns if we move into |
| another namespace. |
| |
| 2025-04-03 Andrew Pinski <quic_apinski@quicinc.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119563 |
| * call.cc (build_list_conv): Fix a typo in loop gathering |
| summary information from subsubconvs. |
| |
| 2025-04-02 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| PR middle-end/118965 |
| * parser.cc (c_parser_omp_clause_init_modifiers): Adjust |
| error message. |
| (cp_parser_omp_clause_init): Remove code for recognizing clauses |
| without modifiers. Diagnose missing target/targetsync modifier. |
| (cp_finish_omp_declare_variant): Diagnose missing target/targetsync |
| modifier. |
| |
| 2025-04-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119551 |
| * module.cc (trees_out::write_var_def): Only ignore non-inline |
| variable initializers. |
| |
| 2025-04-01 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * parser.cc (cp_parser_diagnose_invalid_type_name): Replace |
| fmodules-ts with fmodules. |
| (cp_parser_template_declaration): Likewise. |
| |
| 2025-04-01 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/119383 |
| * call.cc (build_over_call): Use force_lvalue to ensure op= returns |
| an lvalue. |
| * cp-tree.h (force_lvalue): Declare. |
| * cvt.cc (force_lvalue): New. |
| * typeck.cc (cp_build_indirect_ref_1): Revert r15-8011. |
| |
| 2025-03-31 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119401 |
| * pt.cc (regenerate_decl_from_template): Don't regenerate if the |
| signature involves a lambda. |
| |
| 2025-03-31 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119518 |
| * decl.cc (finish_function): Don't set TREE_NOTHROW for |
| functions with "noipa" attribute even when we can prove |
| they can't throw. |
| |
| 2025-03-29 Jason Merrill <jason@redhat.com> |
| |
| * decl.cc (duplicate_decls): Don't clobber DECL_MODULE_IMPORT_P with |
| an injected friend. |
| * name-lookup.cc (check_module_override): Look at all reachable |
| decls in decl's originating module. |
| |
| 2025-03-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/64500 |
| PR c++/116285 |
| * name-lookup.cc (push_to_top_level): Don't try to store_bindings |
| for namespace levels. |
| |
| 2025-03-29 Jakub Jelinek <jakub@redhat.com> |
| |
| * name-lookup.cc (maybe_lazily_declare): Fix comment typo, |
| anout -> about. |
| |
| 2025-03-29 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118961 |
| * class.cc (copy_fndecl_with_name): Mark clones as non-abstract. |
| * cp-tree.h (setup_explicit_instantiation_definition_linkage): |
| Declare new function. |
| * module.cc (trees_in::read_var_def): Use it. |
| (module_state::read_cluster): Likewise. |
| * pt.cc (setup_explicit_instantiation_definition_linkage): New |
| function. |
| (mark_decl_instantiated): Use it. |
| |
| 2025-03-27 Tobias Burnus <tburnus@baylibre.com> |
| |
| * cp-tree.h (cp_finish_omp_init_prefer_type): Add. |
| * decl.cc (omp_declare_variant_finalize_one): Call it. |
| * pt.cc (tsubst_attribute): Minor rebustification for OpenMP |
| append_args handling. |
| * semantics.cc (cp_omp_init_prefer_type_update): Rename to ... |
| (cp_finish_omp_init_prefer_type): ... this; remove static attribute |
| and return modified tree. Move clause handling to ... |
| (finish_omp_clauses): ... the caller. |
| |
| 2025-03-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118920 |
| * cp-tree.h (equal_abi_tags): Declare. |
| * mangle.cc (equal_abi_tags): Make external, fix comparison. |
| (tree_string_cmp): Make internal. |
| * module.cc (trees_in::check_abi_tags): New function. |
| (trees_in::decl_value): Use it. |
| (trees_in::is_matching_decl): Likewise. |
| |
| 2025-03-27 Nathaniel Shead <nathanieloshead@gmail.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/118920 |
| * name-lookup.cc (lookup_imported_hidden_friend): Check for |
| module entity rather than just module import. |
| * module.cc (get_originating_module): Rename for_mangle parm to |
| global_m1. |
| * error.cc (dump_module_suffix): Don't decorate global module decls. |
| |
| 2025-03-26 Thomas Schwinge <tschwinge@baylibre.com> |
| Jason Merrill <jason@redhat.com> |
| |
| * rtti.cc (throw_bad_typeid): Adjust implicit '__cxa_bad_typeid' |
| prototype to reality. Adjust all users. |
| |
| 2025-03-25 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/114525 |
| * typeck2.cc (build_m_component_ref): Call cp_build_addr_expr |
| instead of build_address. |
| |
| 2025-03-25 yxj-github-437 <2457369732@qq.com> |
| |
| * parser.cc (cp_parser_lambda_expression): Use cp_evaluated. |
| |
| 2025-03-24 Jason Merrill <jason@redhat.com> |
| |
| * semantics.cc (finish_type_pack_element): Pass mce_true to |
| maybe_constant_value. |
| |
| 2025-03-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119154 |
| * decl2.cc (vague_linkage_p): Revert gnu_linkage handling. |
| * module.cc (importer_interface): New enumeration. |
| (get_importer_interface): New function. |
| (trees_out::core_bools): Use it to determine interface. |
| (trees_in::is_matching_decl): Propagate gnu_inline handling onto |
| existing forward declarations. |
| (trees_in::read_var_def): Also note explicit instantiation |
| definitions of variable templates to be emitted. |
| |
| 2025-03-22 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119379 |
| * pt.cc (tsubst_decl) <case TYPE_DECL>: Preserve structural-ness |
| of a partially instantiated typedef. |
| |
| 2025-03-21 Paul-Antoine Arras <parras@baylibre.com> |
| Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_clause_init): Make addressable. |
| |
| 2025-03-21 Jason Merrill <jason@redhat.com> |
| |
| * init.cc (throw_bad_array_new_length): Returns void. |
| |
| 2025-03-21 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * rtti.cc (throw_bad_cast): Adjust implicit '__cxa_bad_cast' |
| prototype to reality. |
| |
| 2025-03-20 Richard Biener <rguenther@suse.de> |
| |
| * module.cc (trees_out::core_bools): Convert scoped enum |
| explicitly. |
| |
| 2025-03-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119370 |
| * decl2.cc (set_context_for_auto_vars_r): New function. |
| (emit_partial_init_fini_fn): Call walk_tree with that function |
| on &init before walk_tree with copy_tree_body_r. |
| |
| 2025-03-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119316 |
| * mangle.cc (write_expression) [NEW_EXPR]: Avoid using |
| compute_array_index_type. |
| (write_array_type): Add checking_assert. |
| |
| 2025-03-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR target/118068 |
| * cp-gimplify.cc (cp_fold_immediate): Use cp_walk_tree rather than |
| cp_walk_tree_without_duplicates. |
| (cp_fold_immediate_r): For IF_STMT_CONSTEVAL_P IF_STMT don't walk |
| into THEN_CLAUSE subtree, only ELSE_CLAUSE. For non-call related |
| stmts call data->pset.add and if it returns true, don't walk subtrees. |
| (cp_fold_r): Don't call cp_fold_immediate_r here. |
| (cp_fold_function): For C++20 or later call cp_walk_tree |
| with cp_fold_immediate_r callback first before calling cp_walk_tree |
| with cp_fold_r callback and call data.pset.empty () in between. |
| (cp_fully_fold_init): Likewise. |
| (cp_genericize_r) <case RETURN_EXPR>: Suppress -Wreturn-type warning |
| if RETURN_EXPR has erroneous argument. |
| |
| 2025-03-18 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/119344 |
| * typeck.cc (cp_build_binary_op): Use cp_save_expr instead of save_expr. |
| |
| 2025-03-18 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119194 |
| * decl2.cc (min_vis_expr_r) [ADDR_EXPR]: New case. |
| |
| 2025-03-18 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118104 |
| * pt.cc (use_pack_expansion_extra_args_p): Remove an assert. |
| |
| 2025-03-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/116545 |
| * parser.cc (cp_parser_statement): Call cp_parser_attributes_opt |
| rather than cp_parser_std_attribute_spec_seq. |
| (cp_parser_jump_statement): Diagnose gnu::musttail attributes |
| with no arguments. |
| |
| 2025-03-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119233 |
| * pt.cc (mark_template_arguments_used): Also handle member |
| function pointers. |
| |
| 2025-03-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR target/119120 |
| * cp-gimplify.cc (cp_genericize_r): Set DECL_NOT_GIMPLE_REG_P |
| on {REAL,IMAG}PART_EXPR is_gimple_reg operand at -O0 if it is lhs |
| of a MODIFY_EXPR. |
| |
| 2025-03-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119150 |
| * constexpr.cc (cxx_eval_call_expression): For |
| DECL_IMMEDIATE_FUNCTION_P (fun) set manifestly_const_eval in new_ctx |
| and new_call to mce_true and set ctx to &new_ctx. |
| |
| 2025-03-12 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118799 |
| * module.cc (depset::hash::is_tu_local_entity): Only types, |
| functions, variables, and template (specialisations) can be |
| TU-local. Explicit type aliases are TU-local iff the type they |
| refer to are. |
| (module_state::write_namespaces): Allow unnamed namespaces in |
| named modules. |
| (check_module_decl_linkage): Error for all exported declarations |
| in an unnamed namespace. |
| |
| 2025-03-12 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/119154 |
| * decl2.cc (vague_linkage_p): Don't treat gnu_inline functions |
| as having vague linkage. |
| * module.cc (trees_out::core_bools): Clear DECL_INTERFACE_KNOWN |
| for vague-linkage entities. |
| (read_var_def): Maybe set comdat linkage for imported var |
| definitions. |
| (module_state::read_cluster): Use expand_or_defer_fn instead of |
| ad-hoc linkage management. |
| (post_load_processing): Likewise. |
| * semantics.cc (expand_or_defer_fn_1): Don't forget that we had |
| a definition at all. |
| |
| 2025-03-12 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/117512 |
| * typeck.cc (cp_build_indirect_ref_1): Only do the *&e -> e |
| folding if the result would be an lvalue. |
| |
| 2025-03-12 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/110584 |
| * cp-tree.h (strip_normal_capture_proxy): Declare. |
| * lambda.cc (strip_normal_capture_proxy): New function to look |
| through normal capture proxies. |
| (build_capture_proxy): Use it. |
| * semantics.cc (process_outer_var_ref): Likewise. |
| |
| 2025-03-12 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/119134 |
| * pt.cc (check_for_bare_parameter_packs): Check DECL_CONTEXT. |
| |
| 2025-03-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119076 |
| * module.cc (trees_out::start): Handle RAW_DATA_CST. |
| (trees_in::start): Likewise. |
| (trees_out::core_vals): Likewise. |
| (trees_in::core_vals): Likewise. |
| |
| 2025-03-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119162 |
| * constexpr.cc (find_deleted_heap_var): New. |
| (cxx_eval_call_expression): Don't cache a |
| reference to heap_deleted. |
| |
| 2025-03-10 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * module.cc (trees_out::has_tu_local_dep): Also look at the |
| TI_TEMPLATE if we don't find a dep for a decl. |
| (depset::hash::is_tu_local_entity): Handle unnamed template |
| types, treat lambdas specially. |
| (is_exposure_of_member_type): New function. |
| (depset::hash::add_dependency): Use it. |
| (depset::hash::finalize_dependencies): Likewise. |
| |
| 2025-03-08 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * parser.cc (cp_parser_asm_definition): Make comment more explicit. |
| (cp_parser_asm_operand_list): Likewise. Also correct the comment |
| block at the top of the function to reflect reality. |
| |
| 2025-03-08 Jason Merrill <jason@redhat.com> |
| Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/114630 |
| PR c++/114795 |
| * pt.cc (reopen_tinst_level): Set or clear MK_PURVIEW. |
| (mark_decl_instantiated): Call set_instantiating_module. |
| (instantiate_pending_templates): Save and restore module_kind so |
| it isn't affected by reopen_tinst_level. |
| |
| 2025-03-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118775 |
| * constexpr.cc (cxx_eval_call_expression): Check tree_fits_uhwi_p. |
| |
| 2025-03-07 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * constexpr.cc (potential_constant_expression_1): Handle |
| TU_LOCAL_ENTITY. |
| * pt.cc (expr_contains_tu_local_entity): Remove. |
| (function_contains_tu_local_entity): Remove. |
| (dependent_operand_p): Remove special handling for |
| TU_LOCAL_ENTITY. |
| (tsubst_expr): Handle TU_LOCAL_ENTITY when tsubsting OVERLOADs; |
| remove now-unnecessary extra handling. |
| (type_dependent_expression_p): Handle TU_LOCAL_ENTITY. |
| |
| 2025-03-06 Simon Martin <simon@nasilyan.com> |
| |
| * cp-tree.h (processing_contract_condition): Fix comment typo, |
| paramter -> parameter. |
| * parser.cc (cp_parser_requires_expression): Fix comment typo, |
| delared -> declared. |
| |
| 2025-03-06 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98533 |
| PR c++/119123 |
| * parser.cc (cp_parser_class_specifier): Update TYPE_FIELDS of |
| variant types in case cp_parser_late_parsing_default_args etc. change |
| TYPE_FIELDS on the main variant. Add switch_to_class lambda and |
| use it to simplify repeated class switching code. |
| |
| 2025-03-06 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119138 |
| * pt.cc (apply_late_template_attributes): Set p to NULL if |
| ATTR_FLAG_TYPE_IN_PLACE is not set in attr_flags. |
| (tsubst) <case POINTER_TYPE, case REFERENCE_TYPE, case ARRAY_TYPE>: |
| Reuse original type even if TYPE_ATTRIBUTES is non-NULL, but all |
| the attributes are non-dependent. |
| |
| 2025-03-06 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/117504 |
| * call.cc (perform_implicit_conversion_flags): Don't call |
| mark_{l,r}value_use. |
| |
| 2025-03-05 Jason Merrill <jason@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117364 |
| PR c++/118874 |
| * coroutines.cc (cp_coroutine_transform::build_ramp_function): For |
| !aggregate_value_p return force return value into a local temp. |
| |
| 2025-03-05 Da Xie <xxie_xd@163.com> |
| |
| PR c++/100589 |
| * decl.cc (grokdeclarator): Issue an error for a declarator with |
| constrained auto type specifier and trailing return types. Include |
| function names if available. |
| |
| 2025-03-05 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/116740 |
| * name-lookup.cc (set_identifier_type_value_with_scope): Don't |
| fail assert with ill-formed input. |
| |
| 2025-03-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119102 |
| * module.cc (enum streamed_extensions): Add SE_OPENMP_SIMD |
| and SE_OPENACC, change value of SE_OPENMP and SE_BITS. |
| (CASE_OMP_SIMD_CODE, CASE_OMP_CODE, CASE_OACC_CODE): Define. |
| (trees_out::start): Don't set SE_OPENMP extension for OMP_CLAUSE. |
| Set SE_OPENMP_SIMD extension for CASE_OMP_SIMD_CODE, SE_OPENMP |
| for CASE_OMP_CODE and SE_OPENACC for CASE_OACC_CODE. |
| (trees_in::start): Don't fail for OMP_CLAUSE with missing |
| SE_OPENMP extension. Do fail for CASE_OMP_SIMD_CODE and missing |
| SE_OPENMP_SIMD extension, or CASE_OMP_CODE and missing SE_OPENMP |
| extension, or CASE_OACC_CODE and missing SE_OPENACC extension. |
| (module_state::write_readme): Write all of SE_OPENMP_SIMD, SE_OPENMP |
| and SE_OPENACC extensions. |
| (module_state::read_config): Diagnose missing -fopenmp, -fopenmp-simd |
| and/or -fopenacc depending on extensions used. |
| |
| 2025-03-05 Jakub Jelinek <jakub@redhat.com> |
| |
| * typeck.cc (check_return_expr): Fix comment typo, rom -> from. |
| |
| 2025-03-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118787 |
| * pt.cc (tsubst) <case ARRAY_TYPE>: Use return t; only if it doesn't |
| have any TYPE_ATTRIBUTES. Call apply_late_template_attributes. |
| <case POINTER_TYPE, case REFERENCE_TYPE>: Likewise. Formatting fix. |
| |
| 2025-03-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/119073 |
| * call.cc (extend_temps_r): Preserve types of COND_EXPR arms. |
| |
| 2025-03-04 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/109431 |
| * cp-tree.h (range_expr_nelts): Declare. |
| * init.cc (build_vec_init): If the CONSTRUCTOR's index is a |
| RANGE_EXPR, use range_expr_nelts to count how many elements |
| were initialized. |
| |
| 2025-02-28 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/114913 |
| PR c++/110822 |
| * constexpr.cc (replace_decl_r): If we've replaced something |
| inside of an ADDR_EXPR, call cxx_mark_addressable and |
| recompute_tree_invariant_for_addr_expr on the resulting ADDR_EXPR. |
| |
| 2025-02-28 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118986 |
| * constexpr.cc (cxx_eval_call_expression): Check that the types match |
| before calling replace_decl, if not, set *non_constant_p. |
| (maybe_constant_init_1): Don't strip INIT_EXPR if it would change the |
| type of the expression. |
| |
| 2025-02-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/119038 |
| * lambda.cc (maybe_generic_this_capture): Consider xobj |
| member functions as well, not just iobj. Update function |
| comment. |
| |
| 2025-02-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/119045 |
| * constexpr.cc (cxx_eval_store_expression) <case REALPART_EXPR>: |
| Assert that refs->is_empty () rather than probe == target. |
| (cxx_eval_store_expression) <case IMAGPART_EXPR>: Likewise. |
| |
| 2025-02-27 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118928 |
| * constexpr.cc (cxx_eval_constant_expression) <case GOTO_EXPR>: Remove |
| an assert. |
| |
| 2025-02-27 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118516 |
| * parser.cc (cp_parser_template_argument): Don't call |
| require_potential_constant_expression. |
| |
| 2025-02-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118876 |
| * cp-tree.h (register_dtor_fn): Add a bool argument defaulted to false. |
| * decl.cc (start_cleanup_fn): Add OMP_TARGET argument, use |
| "__omp_tcf" prefix rather than "__tcf" in that case. Add |
| "omp declare target" and "omp declare target nohost" attributes |
| to the fndecl. |
| (register_dtor_fn): Add OMP_TARGET argument, pass it down to |
| start_cleanup_fn. |
| * decl2.cc (one_static_initialization_or_destruction): Add OMP_TARGET |
| argument, pass it down to register_dtor_fn. |
| (emit_partial_init_fini_fn): Pass omp_target to |
| one_static_initialization_or_destruction. |
| (handle_tls_init): Pass false to |
| one_static_initialization_or_destruction. |
| |
| 2025-02-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118923 |
| * tree.cc (get_internal_target_expr): Use force_target_expr |
| instead of build_target_expr_with_type. |
| * typeck.cc (get_member_function_from_ptrfunc): Use |
| get_internal_target_expr instead of force_target_expr. |
| * decl.cc (cp_finish_decl): Likewise. |
| * method.cc (build_comparison_op): Likewise. |
| |
| 2025-02-22 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * parser.cc (cp_finish_omp_declare_variant): Initialize |
| append_args_last. |
| |
| 2025-02-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118856 |
| PR c++/118763 |
| * cp-tree.h (TARGET_EXPR_INTERNAL_P): New. |
| * call.cc (extend_temps_r): Check it instead of CLEANUP_EH_ONLY. |
| * tree.cc (get_internal_target_expr): Set it instead. |
| * typeck2.cc (maybe_push_temp_cleanup): Don't set CLEANUP_EH_ONLY. |
| |
| 2025-02-15 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118846 |
| * cp-tree.h (WILDCARD_TYPE_P): Include UNBOUND_CLASS_TEMPLATE. |
| * decl2.cc (min_vis_expr_r): Don't assume a TEMPLATE_DECL will |
| be a function or variable. |
| |
| 2025-02-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118053 |
| * constexpr.cc (cxx_eval_constant_expression): Generalize |
| DECL_VALUE_EXPR invisiref handling. |
| |
| 2025-02-14 Marek Polacek <polacek@redhat.com> |
| |
| * pt.cc (tsubst_expr) <COMPONENT_REF>: Assign the result of |
| force_paren_expr. |
| |
| 2025-02-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118856 |
| * call.cc (set_up_extended_ref_temp): Retain a TARGET_EXPR for |
| cleanups if something later in initialization throws. |
| (extend_temps_r): Don't extend eliding or EH-only TARGET_EXPRs. |
| * cp-tree.h (get_internal_target_expr): Declare. |
| * tree.cc (get_internal_target_expr): New. |
| * decl.cc (cp_finish_decomp, expand_static_init): Use it. |
| * except.cc (build_throw): Likewise. |
| * init.cc (build_new_1, build_vec_init, build_delete): Likewise. |
| (build_vec_delete): Likewise. |
| * typeck2.cc (maybe_push_temp_cleanup): Likewise. |
| |
| 2025-02-14 Jason Merrill <jason@redhat.com> |
| |
| * init.cc (perform_member_init): Remove unicode from comment. |
| |
| 2025-02-14 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/116379 |
| * pt.cc (tsubst_expr) <COMPONENT_REF>: Use force_paren_expr to set |
| REF_PARENTHESIZED_P. |
| |
| 2025-02-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * lambda.cc (record_lambda_scope): Clear mangling scope for |
| otherwise unattached lambdas in class member templates. |
| |
| 2025-02-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/107741 |
| * cp-tree.h (is_static_data_member_initialized_in_class): |
| Declare new predicate. |
| * decl2.cc (start_initialized_static_member): Push the |
| TEMPLATE_DECL when appropriate. |
| (is_static_data_member_initialized_in_class): New predicate. |
| (finish_initialized_static_member): Use it. |
| * lambda.cc (record_lambda_scope): Likewise. |
| * parser.cc (cp_parser_init_declarator): Start the member decl |
| early for static members so that lambda scope is set. |
| (cp_parser_template_declaration_after_parameters): Don't |
| register in-class initialized static members here. |
| |
| 2025-02-13 Jason Merrill <jason@redhat.com> |
| |
| * tree.cc (handle_init_priority_attribute): Use OPT_prio_ctor_dtor. |
| |
| 2025-02-13 Jason Merrill <jason@redhat.com> |
| |
| * decl.cc (omp_declare_variant_finalize_one): Use forward_parm. |
| |
| 2025-02-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118856 |
| * call.cc (struct extend_temps_data): Add var_map. |
| (extend_all_temps): Adjust. |
| (set_up_extended_ref_temp): Make walk_data void*. |
| (extend_temps_r): Remap variables. Handle pset here. |
| Extend all TARGET_EXPRs. |
| |
| 2025-02-13 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118849 |
| * decl2.cc (min_vis_expr_r): Constrain visibility according to |
| the type of decl_constant_var_p decls. |
| |
| 2025-02-13 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118822 |
| PR c++/118833 |
| * semantics.cc (adjust_loop_decl_cond): Allow multiple trailing |
| CLEANUP_STMT levels in *BODY_P. Set *CLEANUP_P to the number |
| of levels rather than one particular cleanup, keep the cleanups |
| in *PREP_P. Set *BODY_P to the last stmt in the cur_stmt_list |
| or NULL if *CLEANUP_P and the innermost cur_stmt_list is empty. |
| (finish_loop_cond_prep): New function. |
| (finish_while_stmt, finish_for_stmt): Use it. Don't call |
| set_one_cleanup_loc. |
| * constexpr.cc (cxx_eval_loop_expr): Adjust handling of |
| {FOR,WHILE}_COND_{PREP,CLEANUP}. |
| |
| 2025-02-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118574 |
| PR c++/107637 |
| * call.cc (struct extend_temps_data): New. |
| (extend_temps_r, extend_all_temps): New. |
| (set_up_extended_ref_temp): Handle tree walk case. |
| (extend_ref_init_temps): Cal extend_all_temps. |
| * decl.cc (initialize_local_var): Revert ext-temps change. |
| * parser.cc (cp_convert_range_for): Likewise. |
| (cp_parser_omp_loop_nest): Likewise. |
| * pt.cc (tsubst_stmt): Likewise. |
| * semantics.cc (finish_for_stmt): Likewise. |
| |
| 2025-02-11 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * parser.cc (cp_finish_omp_declare_variant): Update call to |
| omp_check_context_selector. |
| (cp_parser_omp_metadirective): Likewise. |
| |
| 2025-02-11 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/118306 |
| PR c++/118304 |
| * decl.cc (maybe_strip_indirect_ref): New. |
| (check_special_function_return_type): Take declarator as input. |
| Call maybe_strip_indirect_ref and error out if it returns true. |
| (grokdeclarator): Update call to |
| check_special_function_return_type. |
| |
| 2025-02-11 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118807 |
| * pt.cc (reregister_specialization): Remove spec from |
| DECL_TEMPLATE_INSTANTIATIONS. |
| |
| 2025-02-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/115586 |
| * parser.cc (cp_parser_range_for): For name independent decls in |
| structured bindings, only push the name/binding once per |
| structured binding. |
| |
| 2025-02-07 Jakub Jelinek <jakub@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/86769 |
| * semantics.cc (set_one_cleanup_loc): New function. |
| (set_cleanup_locs): Use it. |
| (simplify_loop_decl_cond): Remove. |
| (adjust_loop_decl_cond): New function. |
| (begin_while_stmt): Add 2 further NULL_TREE operands to build_stmt. |
| (finish_while_stmt_cond): Call adjust_loop_decl_cond instead of |
| simplify_loop_decl_cond. |
| (finish_while_stmt): Call do_poplevel also on WHILE_COND_PREP if |
| non-NULL and also use pop_stmt_list rather than do_poplevel for |
| WHILE_BODY in that case. Call set_one_cleanup_loc. |
| (begin_for_stmt): Add 2 further NULL_TREE operands to build_stmt. |
| (finish_for_cond): Call adjust_loop_decl_cond instead of |
| simplify_loop_decl_cond. |
| (finish_for_stmt): Call do_poplevel also on FOR_COND_PREP if non-NULL |
| and also use pop_stmt_list rather than do_poplevel for FOR_BODY in |
| that case. Call set_one_cleanup_loc. |
| * constexpr.cc (cxx_eval_loop_expr): Handle |
| {WHILE,FOR}_COND_{PREP,CLEANUP}. |
| (check_for_return_continue): Handle {WHILE,FOR}_COND_PREP. |
| (potential_constant_expression_1): RECUR on |
| {WHILE,FOR}_COND_{PREP,CLEANUP}. |
| |
| 2025-02-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/117106 |
| PR c++/118190 |
| * pt.cc (maybe_instantiate_noexcept): Give an error if the noexcept |
| hasn't been parsed yet. |
| |
| 2025-02-07 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/118282 |
| * call.cc (add_builtin_candidate): Also check for null_ptr_cst_p |
| operands. |
| |
| 2025-02-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118763 |
| * init.cc (build_new_1): Don't set CLEANUP_EH_ONLY. |
| |
| 2025-02-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118773 |
| * decl.cc (grokdeclarator): Use cplus_decl_attributes rather than |
| decl_attributes for std_attributes on pointer and array types. |
| |
| 2025-02-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118661 |
| * constexpr.cc (potential_constant_expression_1): Don't diagnose |
| lvalue-to-rvalue conversion of volatile lvalue if it has NULLPTR_TYPE. |
| * decl2.cc (decl_maybe_constant_var_p): Return true for constexpr |
| decls with NULLPTR_TYPE even if they are volatile. |
| |
| 2025-02-05 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/118319 |
| * decl.cc (grokfndecl): Inspect all friend function parameters. |
| If it's not valid for them to have a default value and we're |
| processing a template, set the default value to error_mark_node |
| and give a hard error. |
| |
| 2025-02-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118671 |
| * call.cc (build_list_conv): For RAW_DATA_CST, call |
| implicit_conversion with INTEGER_CST representing first byte instead |
| of the whole RAW_DATA_CST. If it is an optimizable trivial |
| conversion, just save that to subconvs, otherwise allocate an |
| artificial ck_list for all the RAW_DATA_CST bytes and create |
| subsubconv for each of them. |
| (convert_like_internal): For ck_list with RAW_DATA_CST, instead of |
| doing all the checks for optimizable conversion just check kind and |
| assert everything else, otherwise use subsubconversions instead of |
| the subconversion for each element. |
| |
| 2025-02-04 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/117778 |
| * parser.cc (cp_parser_late_return_type_opt): Maybe override |
| auto_is_implicit_function_template_parm_p. |
| (cp_parser_parameter_declaration): Move a make_temp_override below. |
| |
| 2025-02-04 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118718 |
| * parser.cc (warn_about_ambiguous_parse): Don't warn when a trailing |
| return type is present. |
| |
| 2025-02-04 Simon Martin <simon@nasilyan.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/117114 |
| PR c++/109918 |
| * class.cc (warn_hidden): Keep track of overloaded and of hidden |
| base methods. |
| * error.cc (location_of): Skip over conv_op_marker. |
| |
| 2025-02-04 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/114619 |
| * init.cc (build_vec_init): Properly determine whether |
| digest_init has been called. |
| |
| 2025-02-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118719 |
| * lambda.cc (add_capture): Only pedwarn about capturing structured |
| binding if !explicit_init_p. |
| |
| 2025-02-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/108205 |
| * contracts.cc (get_pseudo_contract_violation_type): Give names |
| to generated FIELD_DECLs. |
| (declare_handle_contract_violation): Mark contract_violation |
| type as external linkage. |
| (build_contract_handler_call): Ensure any builtin declarations |
| created here aren't treated as attached to the current module. |
| |
| 2025-02-04 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/98893 |
| * decl.cc (start_cleanup_fn): Make name from the mangled name of |
| the passed-in decl. |
| (register_dtor_fn): Pass decl to start_cleanup_fn. |
| |
| 2025-02-03 A J Ryan Solutions Ltd <gcc.gnu.org@ajryansolutions.co.uk> |
| |
| PR c++/118265 |
| * pt.cc (find_parameter_packs_r) <case TEMPLATE_PARM_INDEX>: |
| Walk into the type of a parameter pack. |
| |
| 2025-02-03 Iain Sandoe <iains.gcc@gmail.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/116506 |
| PR c++/116880 |
| * coroutines.cc (build_co_await): Ensure that xvalues are |
| materialised. Handle references/pointer values in awaiter |
| access expressions. |
| (is_stable_lvalue): New. |
| * decl.cc (cxx_maybe_build_cleanup): Handle null arg. |
| |
| 2025-02-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/116914 |
| PR c++/117231 |
| PR c++/118470 |
| PR c++/118491 |
| * semantics.cc (finish_for_stmt): Don't wrap the result of |
| pop_stmt_list in EXPR_STMT. |
| |
| 2025-02-03 Richard Biener <rguenther@suse.de> |
| |
| PR c++/79786 |
| * rtti.cc (emit_tinfo_decl): Fix DATA_ABI_ALIGNMENT invocation. |
| |
| 2025-01-31 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117516 |
| * class.cc (field_nonempty_p): Formatting fixes. Use |
| integer_zerop instead of tree_int_cst_equal with size_zero_node. |
| (struct flexmems_t): Change type of first member from tree to bool. |
| (find_flexarrays): Add nested_p argument. Change pun argument type |
| from tree to bool, adjust uses. Formatting fixes. If BASE_P or |
| NESTED_P and T is RECORD_TYPE, start looking only at the last |
| non-empty or array FIELD_DECL. Adjust recursive call, set first |
| if it was a nested call and found an array. |
| (diagnose_invalid_flexarray, diagnose_flexarrays, check_flexarrays): |
| Formatting fixes. |
| |
| 2025-01-31 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/117501 |
| * cp-gimplify.cc (cp_build_init_expr_for_ctor): New. |
| (cp_fold_immediate_r): Call it. |
| (cp_fold): Break out code into cp_build_init_expr_for_ctor. |
| |
| 2025-01-30 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (LAMBDA_EXPR_CAPTURES_THIS_P): Remove. |
| |
| 2025-01-30 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/118673 |
| * tree.cc (lvalue_kind): Mark CONST_DECLs as mergable |
| when they are also TREE_STATIC. |
| |
| 2025-01-30 Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (cp_finish_omp_declare_variant): Modify how append_args |
| is saved internally. |
| * pt.cc (tsubst_attribute): Likewise. |
| (tsubst_omp_clauses): Remove C_ORT_OMP_DECLARE_SIMD from interop |
| handling as no longer called for it. |
| * decl.cc (omp_declare_variant_finalize_one): Update append_args |
| changes; fixes for ADL input. |
| |
| 2025-01-29 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118655 |
| * semantics.cc (trait_expr_value) <case CPTK_IS_BOUNDED_ARRAY>: Return |
| false for zero-sized arrays. |
| |
| 2025-01-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118285 |
| * constexpr.cc (cxx_eval_vec_init_1): Build INIT_EXPR for |
| initializing a class. |
| |
| 2025-01-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118673 |
| * call.cc (maybe_init_list_as_array): Check for lvalue |
| initializers. |
| * cp-tree.h (enum cp_lvalue_kind_flags): Add clk_mergeable. |
| * tree.cc (lvalue_kind): Return it. |
| (non_mergeable_glvalue_p): New. |
| (test_lvalue_kind): Adjust. |
| |
| 2025-01-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/117855 |
| * cp-tree.h (DECL_FRIEND_CONTEXT): Exclude deduction guides. |
| |
| 2025-01-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/118632 |
| * pt.cc (unify): Only strip conversion if deducible_expression. |
| |
| 2025-01-27 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/114292 |
| * pt.cc (for_each_template_parm_r) <INTEGER_TYPE>: Remove case |
| now handled by cp_walk_subtrees. |
| * tree.cc (cp_walk_subtrees): Walk the type of DECL_EXPR |
| declarations, as well as the TYPE_{MIN,MAX}_VALUE of |
| INTEGER_TYPEs. |
| |
| 2025-01-27 John David Anglin <danglin@gcc.gnu.org> |
| |
| * module.cc: Test HAVE_MUNMAP and HAVE_MSYNC instead of |
| _POSIX_MAPPED_FILES > 0. |
| |
| 2025-01-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/115769 |
| * module.cc (module_state::write_inits): Verify |
| STATIC_INIT_DECOMP_{,NON}BASE_P flags and stream changes in those |
| out. |
| (module_state::read_inits): Stream those flags in. |
| |
| 2025-01-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/115769 |
| * cp-tree.h (STATIC_INIT_DECOMP_BASE_P): Define. |
| (STATIC_INIT_DECOMP_NONBASE_P): Define. |
| * decl.cc (cp_finish_decl): Mark nodes in {static,tls}_aggregates |
| emitted for namespace scope structured bindings with |
| STATIC_INIT_DECOMP_{,NON}BASE_P flags when needed. |
| * decl2.cc (decomp_handle_one_var, decomp_finalize_var_list): New |
| functions. |
| (emit_partial_init_fini_fn): Use them. |
| (prune_vars_needing_no_initialization): Assert |
| STATIC_INIT_DECOMP_*BASE_P is not set on DECL_EXTERNAL vars to be |
| pruned out. |
| (partition_vars_for_init_fini): Use same priority for |
| consecutive STATIC_INIT_DECOMP_*BASE_P vars and propagate |
| those flags to new TREE_LISTs when possible. Formatting fix. |
| (handle_tls_init): Use decomp_handle_one_var and |
| decomp_finalize_var_list functions. |
| |
| 2025-01-25 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/118239 |
| * constexpr.cc (cx_check_missing_mem_inits): Don't skip fields |
| with DECL_FIELD_IS_BASE. |
| |
| 2025-01-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117827 |
| * init.cc (build_new_1): Pass address of a make_tree_vector () |
| initialized gc tree vector to build_vec_init and append |
| build_disable_temp_cleanup to init_expr from it. |
| |
| 2025-01-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/116568 |
| * module.cc (trees_out::get_merge_kind): Treat all lambdas |
| without a mangling scope as un-mergeable. |
| |
| 2025-01-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/116568 |
| * cp-tree.h (finish_concept_definition): Adjust parameters. |
| (start_concept_definition): Declare. |
| * module.cc (depset::hash::is_tu_local_entity): Use |
| LAMBDA_EXPR_EXTRA_SCOPE to detect TU-local lambdas. |
| * parser.cc (cp_parser_concept_definition): Start a lambda scope |
| for concept definitions. |
| * pt.cc (tsubst_lambda_expr): Namespace-scope lambdas may now |
| have extra scope. |
| (finish_concept_definition): Split into... |
| (start_concept_definition): ...this new function. |
| |
| 2025-01-25 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118245 |
| * cp-tree.h (LAMBDA_EXPR_EXTRA_SCOPE): Adjust comment. |
| * parser.cc (cp_parser_class_head): Start (and do not finish) |
| lambda scope for all valid types. |
| (cp_parser_class_specifier): Finish lambda scope after parsing |
| members instead. |
| * pt.cc (instantiate_class_template): Add lambda scoping. |
| |
| 2025-01-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/117153 |
| * decl2.cc (build_anon_union_vars): Use FIELD for the second operand |
| of a COMPONENT_REF. |
| |
| 2025-01-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/117602 |
| * cp-tree.h (current_nonlambda_scope): Add a default argument. |
| * lambda.cc (current_nonlambda_scope): New bool parameter. Use it. |
| * parser.cc (cp_parser_lambda_introducer): Use current_nonlambda_scope |
| to check if the lambda is non-local. |
| |
| 2025-01-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118590 |
| * typeck.cc (build_omp_array_section): If array_expr is type dependent |
| or a TYPE_DECL, build OMP_ARRAY_SECTION with NULL type. |
| |
| 2025-01-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118604 |
| * parser.cc (cp_parser_omp_metadirective): Test !default_p |
| first and use strcmp () != 0 rather than !strcmp () == 0. |
| |
| 2025-01-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * mangle.cc (write_expression): Update mangling for lambdas. |
| |
| 2025-01-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/107741 |
| * cp-tree.h (start_initialized_static_member): Declare. |
| (finish_initialized_static_member): Declare. |
| * decl2.cc (start_initialized_static_member): New function. |
| (finish_initialized_static_member): New function. |
| * lambda.cc (record_lambda_scope): Support falling back to old |
| ABI (maybe with warning). |
| * parser.cc (cp_parser_member_declaration): Build decl early |
| when parsing an initialized static data member. |
| |
| 2025-01-23 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118582 |
| * module.cc (trees_out::decl_value): Always stream |
| imported_temploid_friends information. |
| (trees_in::decl_value): Likewise. |
| |
| 2025-01-22 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/115769 |
| * decl.cc: Partially implement CWG 2867 - Order of initialization |
| for structured bindings. |
| (cp_finish_decl): If need_decomp_init, for function scope structure |
| binding bases, temporarily clear stmts_are_full_exprs_p before |
| calling expand_static_init, after it call cp_finish_decomp and wrap |
| code emitted by both into maybe_cleanup_point_expr_void and ensure |
| cp_finish_decomp isn't called again. |
| |
| 2025-01-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118396 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): Add an error call |
| when !allow_non_constant. |
| |
| 2025-01-22 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/118199 |
| * typeck2.cc (split_nonconstant_init_1): Clear |
| TARGET_EXPR_ELIDING_P if we need to use a copy constructor |
| because of __no_unique_address__. |
| |
| 2025-01-22 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_objc_message_args): Use tree_cons with |
| nreverse at the end for both sel_args and addl_args, instead of |
| chainon with build_tree_list second argument. |
| |
| 2025-01-22 Jakub Jelinek <jakub@redhat.com> |
| |
| * call.cc (add_list_candidates): Use append_ctor_to_tree_vector. |
| |
| 2025-01-22 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/116756 |
| * lambda.cc (lambda_expr_this_capture): Call |
| retrieve_local_specialization on the result of |
| LAMBDA_EXPR_THIS_CAPTURE for a generic lambda. |
| * parser.cc (cp_parser_lambda_expression): Don't clear |
| LAMBDA_EXPR_THIS_CAPTURE. |
| * pt.cc (tsubst_stmt) <case DECL_EXPR>: Don't overwrite |
| LAMBDA_EXPR_THIS_CAPTURE with the specialized capture. |
| (tsubst_lambda_expr): Don't clear LAMBDA_EXPR_THIS_CAPTURE |
| afterward. |
| |
| 2025-01-21 Andrew Pinski <quic_apinski@quicinc.com> |
| |
| PR c++/118525 |
| * cp-gimplify.cc (cp_fold): Check operands of unary, binary, cond/vec_cond |
| and array_ref for error_mark before checking if the operands had changed. |
| |
| 2025-01-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR objc++/118586 |
| * parser.cc (cp_parser_objc_message_args): Handle CPP_EMBED. |
| |
| 2025-01-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118396 |
| PR c++/118523 |
| * constexpr.cc (cxx_eval_outermost_constant_expr): For non-simple |
| TARGET_EXPRs, return ctx.ctor rather than the result of |
| cxx_eval_constant_expression. If TYPE and the type of R don't |
| match, return the original expression. |
| |
| 2025-01-21 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/118225 |
| * typeck.cc (build_class_member_access_expr): Let errors that |
| that have been reported go through. |
| |
| 2025-01-21 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. |
| |
| 2025-01-21 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-objcp-common.cc (names_builtin_p): Return 1 for RID_VA_ARG. |
| |
| 2025-01-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118532 |
| * call.cc (add_list_candidates): Handle RAW_DATA_CST among init_list |
| elts. |
| * error.cc (dump_expr_init_vec): Handle RAW_DATA_CST among v elts. |
| |
| 2025-01-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| * parser.cc (cp_parser_decomposition_declaration): Check linkage |
| of structured bindings in modules. |
| * tree.cc (decl_linkage): Structured bindings don't necessarily |
| have no linkage. |
| |
| 2025-01-20 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118101 |
| * module.cc (trees_in::decl_value): Use structural equality when |
| deduping partial specs with mismatching canonical types. |
| |
| 2025-01-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118513 |
| * decl2.cc (copy_linkage): If not TREE_PUBLIC, also set |
| DECL_INTERFACE_KNOWN, assert it was set on decl and copy |
| DECL_NOT_REALLY_EXTERN flags. |
| |
| 2025-01-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118534 |
| * constexpr.cc (find_array_ctor_elt): Don't return i early if |
| i == end - 1 and the last elt's value is RAW_DATA_CST. |
| |
| 2025-01-17 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118049 |
| * module.cc (trees_in::is_matching_decl): Propagate |
| FNDECL_USED_AUTO as well. |
| |
| 2025-01-17 Tobias Burnus <tburnus@baylibre.com> |
| |
| PR fortran/118321 |
| * decl.cc (omp_declare_variant_finalize_one): Shift adjust_args index |
| by one for non-static class function's 'this' pointer. |
| |
| 2025-01-17 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/118147 |
| * parser.cc (cp_parser_cache_defarg): Don't error when |
| CPP_PRAGMA_EOL. |
| |
| 2025-01-17 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/118255 |
| * name-lookup.cc (pushdecl): Don't call check_template_shadow |
| for hidden bindings. |
| |
| 2025-01-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/105440 |
| * constexpr.cc (cxx_eval_call_expression): If any RESULT_DECLs get |
| replaced in the call result, try further evaluating the result. |
| |
| 2025-01-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/107522 |
| * constraint.cc (get_normalized_constraints_from_decl): Use the |
| most general template for an explicit specialization of a |
| member template. |
| |
| 2025-01-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/118454 |
| * cp-tree.h (STF_KEEP_INJ_CLASS_NAME): Define. |
| * pt.cc (iterative_hash_template_argument) <case tcc_type>: |
| Clarify comment for when we'd see an alias template |
| specialization here. |
| (coerce_template_parms): Strip typedefs (except for |
| injected-class-names) in the pack expansion early break cases |
| that defer coercion. |
| * tree.cc (strip_typedefs): Don't strip an injected-class-name |
| if STF_KEEP_INJ_CLASS_NAME is set. |
| |
| 2025-01-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/116417 |
| * cp-tree.h (finish_pseudo_destructor_expr): Add complain |
| parameter. |
| * parser.cc (cp_parser_postfix_dot_deref_expression): Pass |
| complain=tf_warning_or_error to finish_pseudo_destructor_expr. |
| * pt.cc (tsubst_expr): Pass complain to |
| finish_pseudo_destructor_expr. |
| * semantics.cc (finish_pseudo_destructor_expr): Check complain |
| before emitting a diagnostic. |
| |
| 2025-01-16 Simon Martin <simon@nasilyan.com> |
| |
| PR c++/117775 |
| * decl.cc (fold_sizeof_expr): Make sure the folded result has |
| type size_type_node. |
| |
| 2025-01-16 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_assumption_clauses): Give a more specific |
| error message for invalid directives vs unknown names. |
| |
| 2025-01-16 Sandra Loosemore <sloosemore@baylibre.com> |
| |
| * decl2.cc (cplus_decl_attributes): Don't add "omp declare target |
| block". |
| |
| 2025-01-16 Sandra Loosemore <sloosemore@baylibre.com> |
| Kwok Cheung Yeung <kcy@codesourcery.com> |
| Sandra Loosemore <sandra@codesourcery.com> |
| |
| PR middle-end/112779 |
| PR middle-end/113904 |
| * cp-tree.h (struct saved_scope): Add new field |
| x_processing_omp_trait_property_expr. |
| (processing_omp_trait_property_expr): New. |
| * parser.cc (cp_parser_skip_to_end_of_block_or_statement): Add |
| metadirective_p parameter and handle skipping over the parentheses |
| in a "for" statement. |
| (struct omp_metadirective_parse_data): New. |
| (mangle_metadirective_region_label): New. |
| (cp_parser_label_for_labeled_statement): Mangle label names in a |
| metadirective body. |
| (cp_parser_jump_statement): Likewise. |
| (cp_parser_omp_context_selector): Allow arbitrary expressions in |
| device_num and condition properties. |
| (cp_parser_omp_assumption_clauses): Handle C_OMP_DIR_META. |
| (analyze_metadirective_body): New. |
| (cp_parser_omp_metadirective): New. |
| (cp_parser_pragma): Handle PRAGMA_OMP_METADIRECTIVE. |
| * parser.h (struct cp_parser): Add omp_metadirective_state field. |
| * pt.cc (tsubst_omp_context_selector): New. |
| (tsubst_stmt): Handle OMP_METADIRECTIVE. |
| * semantics.cc (finish_id_expression_1): Don't diagnose use of |
| parameter outside function body in dynamic selector expressions here. |
| |
| 2025-01-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118214 |
| * decl.cc (struct reshape_iter): Add raw_idx member. |
| (cp_maybe_split_raw_data): Add inc_cur parameter, set *inc_cur, |
| don't modify original CONSTRUCTOR, use d->raw_idx to track index |
| into a RAW_DATA_CST d->cur->value. |
| (consume_init): Adjust cp_maybe_split_raw_data caller, increment |
| d->cur when cur_inc is true. |
| (reshape_init_array_1): Don't modify original CONSTRUCTOR when |
| handling RAW_DATA_CST d->cur->value and !reuse, instead use |
| d->raw_idx to track index into RAW_DATA_CST. |
| (reshape_single_init): Initialize iter.raw_idx. |
| (reshape_init_class): Adjust for introduction of d->raw_idx, |
| adjust cp_maybe_split_raw_data caller, do d->cur++ if inc_cur |
| rather than when it returns non-NULL. |
| (reshape_init_r): Check for has_designator_problem for second |
| half of _Complex earlier, also check for |
| error_operand_p (d->cur->value). Use consume_init instead of |
| cp_maybe_split_raw_data with later conditional d->cur++. |
| (reshape_init): Initialize d.raw_idx. |
| |
| 2025-01-16 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.cc (cp_parser_lambda_declarator_opt, |
| cp_parser_statement, cp_parser_selection_statement, |
| cp_parser_jump_statement): Use -std=c++23 and -std=gnu++23 |
| in diagnostics rather than -std=c++2b and -std=gnu++2b. |
| * semantics.cc (finish_compound_literal): Likewise. |
| * typeck2.cc (build_functional_cast_1): Likewise. |
| * decl.cc (start_decl): Likewise. |
| * constexpr.cc (ensure_literal_type_for_constexpr_object, |
| potential_constant_expression_1): Likewise. |
| |
| 2025-01-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118390 |
| * cp-tree.h (count_ctor_elements): Declare. |
| * call.cc (count_ctor_elements): No longer static. |
| * pt.cc (unify): Use count_ctor_elements instead of |
| CONSTRUCTOR_NELTS. |
| |
| 2025-01-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118278 |
| * mangle.cc (write_expression): Handle RAW_DATA_CST. |
| |
| 2025-01-15 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118139 |
| * cxx-pretty-print.cc (pp_cxx_nested_name_specifier): Handle |
| a computed-type-specifier. |
| |
| 2025-01-15 Tobias Burnus <tburnus@baylibre.com> |
| |
| PR c++/118486 |
| * decl.cc (omp_declare_variant_finalize_one): When resolving |
| the variant to use, handle variant calls with TARGET_EXPR. |
| |
| 2025-01-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118387 |
| * method.cc (build_comparison_op): Set bad if |
| std::strong_ordering::equal doesn't convert to rettype. |
| |
| 2025-01-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118124 |
| * cp-tree.h (build_array_of_n_type): Change second argument type |
| from int to unsigned HOST_WIDE_INT. |
| * tree.cc (build_array_of_n_type): Likewise. |
| * call.cc (count_ctor_elements): New function. |
| (maybe_init_list_as_array): Use it instead of CONSTRUCTOR_NELTS. |
| (convert_like_internal): Use length from init's type instead of |
| len when handling the maybe_init_list_as_array case. |
| |
| 2025-01-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118124 |
| * call.cc (convert_like_internal): Handle RAW_DATA_CST in |
| ck_list handling. Formatting fixes. |
| |
| 2025-01-14 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118047 |
| PR c++/118355 |
| * typeck2.cc (massage_init_elt): Call fold_non_dependent_init |
| unless for a CONSTRUCTOR in a template. |
| |
| 2025-01-14 Sandra Loosemore <sloosemore@baylibre.com> |
| Kwok Cheung Yeung <kcy@codesourcery.com> |
| Sandra Loosemore <sandra@codesourcery.com> |
| Marcel Vollweiler <marcel@codesourcery.com> |
| |
| PR middle-end/114596 |
| PR middle-end/112779 |
| PR middle-end/113904 |
| * decl.cc (omp_declare_variant_finalize_one): Update for changes |
| to omp-general.h interfaces. |
| * parser.cc (cp_finish_omp_declare_variant): Likewise. |
| |
| 2025-01-14 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/117397 |
| * module.cc (depset::hash::add_deduction_guides): Don't emit |
| imported deduction guides. |
| (depset::hash::finalize_dependencies): Add check for any |
| bindings referring to imported entities. |
| |
| 2025-01-14 Andrew Pinski <quic_apinski@quicinc.com> |
| |
| PR c++/118445 |
| * constexpr.cc (cxx_eval_constant_expression): Handle VEC_DUPLICATE like |
| a "normal" unary operator. |
| (potential_constant_expression_1): Likewise. |
| |
| 2025-01-11 Nathaniel Shead <nathanieloshead@gmail.com> |
| |
| PR c++/114630 |
| * module.cc (trees_in::core_vals) <BLOCK>: Chain a new node if |
| DECL_CHAIN already is set. |
| |
| 2025-01-11 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (trees_out::type_node): Write attributes for |
| tt_derived_type, not tt_variant_type. |
| (trees_in::tree_node): Likewise for reading. |
| |
| 2025-01-11 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (trees_in::decl_value): Merge attributes. |
| |
| 2025-01-10 Paul-Antoine Arras <parras@baylibre.com> |
| |
| * parser.cc (cp_parser_pragma): Replace call to cp_parser_omp_dispatch |
| with cp_parser_omp_construct and check context. |
| |
| 2025-01-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118387 |
| * method.cc (genericize_spaceship): For tag == cc_last if |
| type is not auto just return error_mark_node instead of failing |
| checking assertion. |
| |
| 2025-01-10 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (trees_out::core_bools): Write replaceable_operator. |
| (trees_in::core_bools): Read it. |
| |
| 2025-01-10 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/117937 |
| * pt.cc (tsubst_pack_index): tsubst the pack even when it's not |
| PACK_EXPANSION_P. |
| |
| 2025-01-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118277 |
| * cp-tree.h (finish_asm_string_expression): Declare. |
| * semantics.cc (finish_asm_string_expression): New function. |
| (finish_asm_stmt): Use it. |
| * parser.cc (cp_parser_asm_string_expression): Likewise. |
| Wrap string into PAREN_EXPR in the ("") case. |
| (cp_parser_asm_definition): Don't ICE if finish_asm_stmt |
| returns error_mark_node. |
| (cp_parser_asm_specification_opt): Revert 2024-06-24 changes. |
| * pt.cc (tsubst_stmt): Don't ICE if finish_asm_stmt returns |
| error_mark_node. |
| |
| 2025-01-10 Jakub Jelinek <jakub@redhat.com> |
| |
| * module.cc (trees_out::core_vals): Note DECL_VALUE_EXPR even for |
| vars outside of functions. |
| (trees_in::core_vals): Read in DECL_VALUE_EXPR even for vars outside |
| of functions. |
| (trees_out::get_merge_kind): Make DECL_DECOMPOSITION_P MK_unique. |
| |
| 2025-01-10 Jason Merrill <jason@redhat.com> |
| |
| * error.cc (cxx_initialize_diagnostics): Improve comment. |
| * module.cc (modules): Improve comment. |
| (get_originating_module): Add function comment. |
| |
| 2025-01-10 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (trees_out::write_function_def): Write returns* flags. |
| (struct post_process_data): Add returns_* flags. |
| (trees_in::read_function_def): Set them. |
| (module_state::read_cluster): Use them. |
| |
| 2025-01-09 Jason Merrill <jason@redhat.com> |
| |
| * decl.cc (check_redeclaration_exception_specification): Be more |
| lenient about ::operator new. |
| |
| 2025-01-09 Jason Merrill <jason@redhat.com> |
| Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> |
| |
| PR c/116060 |
| * call.cc (standard_conversion): Preserve type name in ck_identity. |
| (maybe_adjust_type_name): New. |
| (convert_like_internal): Use it. |
| Handle -Wsuggest-attribute=format here. |
| (convert_for_arg_passing): Not here. |
| |
| 2025-01-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/118060 |
| * constraint.cc (tsubst_valid_expression_requirement): Don't |
| check convert_to_void during partial substitution. |
| |
| 2025-01-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/117887 |
| * pt.cc (instantiate_template): Set tf_partial if arguments are |
| dependent. |
| |
| 2025-01-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/117925 |
| * constexpr.cc (potential_constant_expression_1) <case CAST_EXPR>: |
| Fix check for class conversion to literal type to properly look |
| through the TREE_LIST operand of a CAST_EXPR. |
| |
| 2025-01-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/117925 |
| * constexpr.cc (cxx_eval_constant_expression) <default>: |
| Relax ICE when encountering an unexpected tree code into a |
| checking ICE guarded by flag_checking. |
| |
| 2025-01-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/117993 |
| * search.cc (any_dependent_bases_p): Recurse into bases (of |
| dependent type) that are not BINFO_DEPENDENT_BASE_P. Document |
| default argument. |
| |
| 2025-01-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/117792 |
| * pt.cc (type_dependent_expression_p): Consider the dependence |
| of the address of each template argument of a function |
| template-id. |
| |
| 2025-01-08 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/117825 |
| * typeck.cc (cp_build_function_call_vec): Don't call |
| check_function_arguments if complain doesn't have tf_warning bit set. |
| |
| 2025-01-08 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (build_nop): Add CXX_MEM_STAT_INFO. |
| * typeck.cc (build_nop): Add MEM_STAT_DECL. |
| |
| 2025-01-08 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (implicit_conversion): Check that FROM isn't a reference |
| if we also got an EXPR argument. |
| (convert_like_internal): Check that EXPR isn't a reference. |
| (can_convert_arg): convert_from_reference if needed. |
| |
| 2025-01-08 Jason Merrill <jason@redhat.com> |
| |
| * method.cc (is_stub_object): New. |
| * cp-tree.h (is_stub_object): Declare. |
| * error.cc (dump_expr): Use it. |
| |
| 2025-01-08 Jason Merrill <jason@redhat.com> |
| |
| * call.cc (convert_like_internal): Add missing break. |
| * coroutines.cc (cp_coroutine_transform::build_ramp_function): Build |
| INIT_EXPR directly. |
| * decl.cc (omp_declare_variant_finalize_one): Use build_stub_object. |
| |
| 2025-01-08 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/118169 |
| * typeck2.cc (split_nonconstant_init): Call finish_expr_stmt instead |
| of add_stmt. |
| |
| 2025-01-03 Tobias Burnus <tburnus@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_var_list_no_open, |
| cp_parser_omp_var_list): For kind=0 (= OMP_CLAUSE_ERROR), |
| store also the expression location in the tree list. |
| (cp_parser_oacc_data_clause_deviceptr, |
| cp_finish_omp_declare_variant): Use that location instead or |
| input_location/the before-parsing location. |
| * semantics.cc (finish_omp_threadprivate): Likewise. |
| |
| 2025-01-02 Paul-Antoine Arras <parras@baylibre.com> |
| |
| * parser.cc (cp_parser_omp_dispatch): Handle INDIRECT_REF. |
| |
| |
| Copyright (C) 2025 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. |