| 2023-05-29 Release Manager |
| |
| * GCC 11.4.0 released. |
| |
| 2023-05-22 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2023-03-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/108998 |
| * pt.c (el_data::skipped_trees): New data member. |
| (extract_locals_r): Push to skipped_trees any unevaluated |
| contexts that we skipped over. |
| (extract_local_specs): For the second walk, start from each |
| tree in skipped_trees. |
| |
| 2023-05-22 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100295 |
| PR c++/107579 |
| * pt.c (el_data::skip_unevaluated_operands): New data member. |
| (extract_locals_r): If skip_unevaluated_operands is true, |
| don't walk into unevaluated contexts. |
| (extract_local_specs): Walk the pattern twice, first with |
| skip_unevaluated_operands true followed by it set to false. |
| |
| 2023-05-22 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-11-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/107864 |
| * decl.c (function_requirements_equivalent_p): Don't check |
| DECL_TEMPLATE_SPECIALIZATION. |
| * pt.c (determine_specialization): Propagate constraints when |
| specializing a function template too. Simplify by using |
| add_outermost_template_args. |
| |
| 2023-05-22 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-11-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/107179 |
| * constraint.cc (tsubst_requires_expr): Make sure we're not |
| deferring access checks. |
| |
| 2023-05-22 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-03-30 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100474 |
| * constraint.cc (diagnose_trait_expr): Handle all remaining |
| traits appropriately. Remove default case. |
| |
| 2023-05-22 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-03-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/104527 |
| * constraint.cc (normalize_atom): Set |
| ATOMIC_CONSTR_EXPR_FROM_CONCEPT_P appropriately. |
| (get_mapped_args): Make static, adjust parameters. Always |
| return a vector whose depth corresponds to the template depth of |
| the context of the atomic constraint expression. Micro-optimize |
| by passing false as exact to safe_grow_cleared and by collapsing |
| a multi-level depth-one argument vector. |
| (satisfy_atom): Adjust call to get_mapped_args and |
| diagnose_atomic_constraint. |
| (diagnose_atomic_constraint): Replace map parameter with an args |
| parameter. |
| * cp-tree.h (ATOMIC_CONSTR_EXPR_FROM_CONCEPT_P): Define. |
| (get_mapped_args): Remove declaration. |
| |
| 2023-05-22 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-01-28 Patrick Palka <ppalka@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/92752 |
| * typeck.c (build_ptrmemfunc): Cast a nullptr constant to the |
| unqualified pointer type not the qualified one. |
| |
| 2023-05-16 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2023-04-09 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (coro_rewrite_function_body): Ensure that added |
| bind expressions have scope blocks. |
| |
| 2023-05-16 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2023-04-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/101118 |
| * coroutines.cc (flatten_await_stmt): Use the current count of |
| promoted temporaries to build a unique name for the frame entries. |
| |
| 2023-05-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/106740 |
| PR c++/105852 |
| * decl.c (duplicate_decls): Change non-templated friend |
| check to an assert. |
| * pt.c (tsubst_function_decl): Don't set DECL_TEMPLATE_INFO |
| on non-templated friends. |
| (tsubst_friend_function): Adjust. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-04-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * Make-lang.in (s-cp-module-version): New target. |
| (cp/module.o): Depend on it. |
| (MODULE_VERSION): Remove variable. |
| (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just |
| cat s-cp-module-version. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-03-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109164 |
| * cp-tree.h (var_needs_tls_wrapper): Declare. |
| * decl2.c (var_needs_tls_wrapper): No longer static. |
| * decl.c (cp_finish_decl): Clear TREE_READONLY on TLS variables |
| for which a TLS wrapper will be needed. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-03-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/109096 |
| * tree.c (record_has_unique_obj_representations): Ignore unnamed |
| bitfields. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-03-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/107558 |
| * decl.c (cp_finish_decl): Don't clear TREE_READONLY on |
| automatic non-aggregate variables just because of |
| -fmerge-all-constants. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-03-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR debug/108716 |
| * cp-gimplify.c (cp_genericize_r) <case USING_STMT>: Set |
| DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location |
| of USING_STMT or input_location. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-01-24 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108474 |
| * cp-gimplify.c (cp_fold_r): Handle structured bindings |
| vars like anon union artificial vars. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-01-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108365 |
| * typeck.c (cp_build_binary_op): For integral division or modulo, |
| shorten if type0 is unsigned, or op0 is cast from narrower unsigned |
| integral type or stripped_op1 is INTEGER_CST other than -1. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-02-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108607 |
| * constexpr.c (cxx_eval_constant_expression): Handle OMP_* |
| and OACC_* constructs as non-constant. |
| (potential_constant_expression_1): Handle OMP_SCAN. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2023-01-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/53932 |
| * cp-gimplify.c (cp_fold_r): During cp_fully_fold_init replace |
| DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding |
| DECL_VALUE_EXPR. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-12-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/108180 |
| * pt.c (tsubst_expr): Don't call cp_finish_decl on |
| DECL_OMP_PRIVATIZED_MEMBER vars. |
| |
| 2023-05-02 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-12-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/107065 |
| * typeck.c (cp_build_unary_op) <case TRUTH_NOT_EXPR>: If |
| invert_truthvalue_loc returns obvalue_p, wrap it into NON_LVALUE_EXPR. |
| * parser.c (cp_parser_binary_expression): Don't call |
| warn_logical_not_parentheses if current.lhs is a NON_LVALUE_EXPR |
| of a decl with boolean type. |
| |
| 2023-04-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105996 |
| * typeck.c (build_ptrmemfunc): Drop 0-offset optimization |
| and location wrappers. |
| |
| 2023-04-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108975 |
| * lambda.c (prune_lambda_captures): Don't bother in a template. |
| |
| 2023-04-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/69410 |
| * friend.c (do_friend): Handle namespace as scope argument. |
| * decl.c (grokdeclarator): Pass down in_namespace. |
| |
| 2023-04-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101869 |
| * semantics.c (finish_qualified_id_expr): Don't try to build a |
| pointer-to-member if the scope is an enumeration. |
| |
| 2023-04-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105406 |
| * coroutines.cc (build_co_await): Handle lvalue 'o'. |
| |
| 2023-04-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103871 |
| PR c++/98056 |
| * typeck.c (cp_build_modify_expr): Allow array initialization of |
| DECL_ARTIFICIAL variable. |
| |
| 2023-04-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/108468 |
| * pt.c (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE |
| is non-null. |
| |
| 2023-03-13 Arsen Arsenović <arsen@aarsen.me> |
| |
| PR c++/106188 |
| PR c++/106713 |
| * coroutines.cc (coro_rewrite_function_body): Ensure we have a |
| BIND_EXPR wrapping the function body. |
| |
| 2023-02-15 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2023-02-15 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/106675 |
| * call.c (joust_maybe_elide_copy): Return false for ck_ambig. |
| |
| 2022-12-16 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-10-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102780 |
| PR c++/108138 |
| * constexpr.c (potential_constant_expression_1) <case TRUTH_*_EXPR>: |
| When tf_error isn't set, preemptively check potentiality of the |
| second operand before performing trial evaluation of the first |
| operand. |
| (potential_constant_expression_1): When tf_error is set, first check |
| potentiality quietly and return true if successful, otherwise |
| proceed noisily to give errors. |
| |
| 2022-11-18 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-11-18 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/104066 |
| * decl.c (grokdeclarator): Check funcdecl_p before complaining |
| about constinit. |
| |
| 2022-11-04 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-10-24 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/105774 |
| * constexpr.c (cxx_eval_increment_expression): For signed types |
| that promote to int, evaluate PLUS_EXPR or MINUS_EXPR in int type. |
| |
| 2022-11-04 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-08-16 Jakub Jelinek <jakub@redhat.com> |
| |
| * typeck.c (cp_build_modify_expr): Implement |
| P2327R1 - De-deprecating volatile compound operations. Don't warn |
| for |=, &= or ^= with volatile lhs. |
| * expr.c (mark_use) <case MODIFY_EXPR>: Adjust warning wording, |
| leave out simple. |
| |
| 2022-10-24 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-05-27 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/105725 |
| * parser.c (class_decl_loc_t::add): Check CLASS_TYPE_P. |
| |
| 2022-07-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/106361 |
| * decl.c (move_fn_p): Remove assert. |
| |
| 2022-07-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/106024 |
| * parser.c (cp_parser_lookup_name): Don't look in dependent lambda. |
| |
| 2022-06-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105925 |
| * decl.c (reshape_init_array_1): Set |
| CONSTRUCTOR_IS_DESIGNATED_INIT here. |
| (reshape_init_class): And here. |
| |
| 2022-06-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105852 |
| PR c++/105761 |
| * decl.c (duplicate_decls): Avoid copying template info |
| from non-templated friend even if newdecl isn't a definition. |
| Correct handling of DECL_UNIQUE_FRIEND_P on templates. |
| * pt.c (non_templated_friend_p): New. |
| * cp-tree.h (non_templated_friend_p): Declare it. |
| |
| 2022-06-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105761 |
| * decl.c (duplicate_decls): Don't copy DECL_TEMPLATE_INFO |
| from a hidden friend. |
| |
| 2022-06-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105795 |
| * constexpr.c (cxx_eval_bare_aggregate): Always call |
| init_subob_ctx. |
| |
| 2022-05-31 Jason Merrill <jason@redhat.com> |
| |
| PR c++/102307 |
| * decl.c (check_initializer): Use build_cplus_new in case of |
| constexpr failure. |
| |
| 2022-05-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101442 |
| * decl.c (cp_finish_decl): Don't pass decl to push_cleanup. |
| * init.c (perform_member_init): Likewise. |
| * semantics.c (push_cleanup): Adjust comment. |
| |
| 2022-05-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101698 |
| * pt.c (tsubst_baselink): Also check dependent optype. |
| |
| 2022-05-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/65211 |
| * pt.c (tsubst_decl) [TYPE_DECL]: Copy TYPE_ALIGN. |
| |
| 2022-05-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-09-27 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102479 |
| * pt.c (rewrite_template_parm): Handle single-level tsubst_args. |
| Avoid a tree cycle when assigning the DECL_TEMPLATE_PARMS for a |
| rewritten ttp. |
| (alias_ctad_tweaks): Set current_template_parms accordingly. |
| |
| 2022-05-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/102300 |
| * parser.c (cp_parser_template_name): Use dependent_scope_p. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/102629 |
| * pt.c (gen_elem_of_pack_expansion_instantiation): Clear |
| TEMPLATE_TYPE_PARAMETER_PACK on auto. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/104646 |
| * constexpr.c (maybe_save_constexpr_fundef): Don't do extra |
| checks for defaulted ctors. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/82980 |
| * lambda.c (type_deducible_expression_p): New. |
| (lambda_capture_field_type): Check it. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105265 |
| PR c++/100838 |
| * call.c (build_user_type_conversion_1): Drop |
| flag_elide_constructors check. |
| (convert_like_internal): Likewise. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105245 |
| PR c++/100111 |
| * constexpr.c (cxx_eval_store_expression): Build a CONSTRUCTOR |
| as needed in empty base handling. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/104669 |
| * decl.c (decls_match): Compare versions even if not recording. |
| (duplicate_decls): Propagate attributes to alias. |
| * decl2.c (find_last_decl): Give up if versioned. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/102071 |
| * init.c (build_new_1): Include cookie in alignment. Omit |
| constexpr wrapper from alloc_call. |
| |
| 2022-05-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/104142 |
| * decl.c (check_initializer): Check TREE_SIDE_EFFECTS. |
| |
| 2022-05-06 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-05-04 Jakub Jelinek <jakub@redhat.com> |
| |
| * lambda.c: Include decl.h. |
| (maybe_add_lambda_conv_op): Temporarily override deprecated_state to |
| DEPRECATED_SUPPRESS. |
| |
| 2022-04-28 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-04-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/105386 |
| * semantics.c (finish_decltype_type): Pass tf_decltype to |
| instantiate_non_dependent_expr_sfinae. |
| |
| 2022-04-28 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-04-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/105289 |
| PR c++/86193 |
| * pt.c (process_partial_specialization): Downgrade "partial |
| specialization isn't more specialized" diagnostic from permerror |
| to an on-by-default pedwarn. |
| (unify) <case TEMPLATE_PARM_INDEX>: When substituting into the |
| NTTP type a second time, use the original type not the |
| substituted type. |
| |
| 2022-04-28 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-04-28 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/90107 |
| * parser.c (cp_parser_class_specifier_1): Accept :: after a class |
| definition. |
| |
| 2022-04-27 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-04-27 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/105398 |
| * pt.c (uses_template_parms): Return false for any NAMESPACE_DECL. |
| |
| 2022-04-22 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-04-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/105321 |
| * constexpr.c (cxx_eval_logical_expression): Always pass false for lval |
| to cxx_eval_constant_expression. |
| |
| 2022-04-22 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-04-13 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/97296 |
| * call.c (direct_reference_binding): strip_top_quals when creating |
| a ck_qual. |
| |
| 2022-04-21 Matthias Kretz <m.kretz@gsi.de> |
| |
| Backported from master: |
| 2021-12-19 Matthias Kretz <m.kretz@gsi.de> |
| |
| * module.cc (trees_out::get_merge_kind): NAMESPACE_DECLs also |
| cannot have a DECL_TEMPLATE_INFO. |
| |
| 2022-04-21 Release Manager |
| |
| * GCC 11.3.0 released. |
| |
| 2022-04-20 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-04-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/105256 |
| * typeck2.c (process_init_constructor_array, |
| process_init_constructor_record, process_init_constructor_union): Move |
| CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag from CONSTRUCTOR elements to the |
| containing CONSTRUCTOR. |
| |
| 2022-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-02-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/104507 |
| * constexpr.c (potential_constant_expression_1) |
| <case NON_DEPENDENT_EXPR>: Return false instead of recursing. |
| Assert tf_error isn't set. |
| |
| 2022-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-02-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103706 |
| * constraint.cc (satisfy_declaration_constraints): Use |
| lambda_regenerating_args instead. |
| * cp-tree.h (lambda_regenerating_args): Declare. |
| * pt.c (lambda_regenerating_args): Define, split out from |
| satisfy_declaration_constraints. |
| (do_auto_deduction): Use lambda_regenerating_args to obtain the |
| full set of outer template arguments for satisfaction when |
| inside a lambda. |
| |
| 2022-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-01-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103341 |
| * decl.c (cp_finish_decl): Pass the template arguments of a |
| variable template specialization or a templated static data |
| member to do_auto_deduction when the auto is constrained. |
| |
| 2022-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-01-25 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101532 |
| PR c++/104225 |
| * decl2.c (mark_used): Don't consider maybe_instantiate_noexcept |
| on a deleted function. |
| |
| 2022-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103105 |
| * pt.c (build_extra_args): Call preserve_args. |
| |
| 2022-04-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-02-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103706 |
| * pt.c (preserve_args): New function. |
| (tsubst_lambda_expr): Use it when setting LAMBDA_EXPR_REGEN_INFO. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98249 |
| * call.c (build_operator_new_call): Just look in ::. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100608 |
| * name-lookup.c (check_local_shadow): Use -Wshadow=local |
| if exactly one of 'old' and 'decl' is a type. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101677 |
| * name-lookup.h (struct cp_binding_level): Add requires_expression |
| bit-field. |
| * parser.c (cp_parser_requires_expression): Set it. |
| (synthesize_implicit_template_parm): Check it. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/105003 |
| PR c++/104008 |
| PR c++/102869 |
| * pt.c (complex_alias_template_r): walk_tree callback, replacing |
| uses_all_template_parms_r, complex_pack_expansion_r. |
| (complex_alias_template_p): Adjust. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101894 |
| * decl.c (duplicate_decls): Copy DECL_FRIEND_CONTEXT. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103943 |
| * pt.c (tsubst_qualified_id): Handle getting SCOPE_REF from |
| tsubst_baselink. |
| (instantiation_dependent_scope_ref_p): Check dependent_scope_p. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101717 |
| * lambda.c (lambda_expr_this_capture): Check all enclosing |
| lambdas for completeness. |
| |
| 2022-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101051 |
| * decl.c (grokdeclarator): Reject conversion with trailing return |
| sooner. |
| |
| 2022-04-08 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-05-27 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99893 |
| PR c++/103885 |
| * tree.c (cp_walk_subtrees) <case STATIC_ASSERT>: New case. |
| |
| 2022-04-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-04-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/105143 |
| * pt.c (do_class_deduction): Check complain before attempting |
| to issue a -Wctad-maybe-unsupported warning. |
| |
| 2022-04-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-03-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/105064 |
| * constraint.cc (maybe_substitute_reqs_for): Don't assume |
| DECL_TEMPLATE_INFO is available. |
| |
| 2022-04-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-02-17 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/104565 |
| * semantics.c (finish_compound_literal): Don't perform |
| non-dependent expr folding before calling check_narrowing. |
| |
| 2022-04-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-02-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/104079 |
| * pt.c (value_dependent_noexcept_spec_p): New predicate split |
| out from ... |
| (dependent_type_p_r): ... here. |
| (instantiation_dependent_r): Use value_dependent_noexcept_spec_p |
| to consider dependence of a noexcept-spec before C++17. |
| * tree.c (fixup_deferred_exception_variants): Clear |
| TYPE_DEPENDENT_P_VALID. |
| |
| 2022-04-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-03-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103455 |
| * call.c (add_builtin_candidate) <case MEMBER_REF>: Test |
| CLASS_TYPE_P instead of MAYBE_CLASS_TYPE_P. |
| |
| 2022-04-07 Benno Evers <benno.evers@tenzir.com> |
| |
| Backported from master: |
| 2022-04-03 Benno Evers <benno.evers@tenzir.com> |
| Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/103328 |
| * coroutines.cc (morph_fn_to_coro): Reset |
| current_binding_level->blocks. |
| |
| 2022-03-30 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-03-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/105061 |
| * parser.c (cp_parser_template_introduction): If member_p, temporarily |
| clear parser->colon_corrects_to_scope_p around tentative parsing of |
| nested name specifier. |
| |
| 2022-03-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-03-26 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_postfix_expression) |
| <case RID_BILTIN_CONVERTVECTOR, case RID_BUILTIN_BIT_CAST>: Don't |
| return cp_build_{vec,convert,bit_cast} result right away, instead |
| set postfix_expression to it and break. |
| |
| 2022-03-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-03-24 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/104994 |
| * constexpr.c (potential_constant_expression_1): Don't diagnose extern |
| thread_local declarations. |
| * decl.c (start_decl): Likewise. |
| |
| 2022-03-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-03-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/104568 |
| * init.c (build_new_constexpr_heap_type): Remove FULL_SIZE |
| argument and its handling, instead add ITYPE2 argument. Only |
| support COOKIE_SIZE != NULL. |
| (build_new_1): If size is 0, change it to 0 * outer_nelts if |
| outer_nelts is non-NULL. Pass type rather than elt_type to |
| maybe_wrap_new_for_constexpr. |
| * constexpr.c (build_new_constexpr_heap_type): New function. |
| (cxx_eval_constant_expression) <case CONVERT_EXPR>: |
| If elt_size is zero sized type, try to recover outer_nelts from |
| the size argument to operator new/new[] and pass that as |
| arg_size to build_new_constexpr_heap_type. Pass ctx, |
| non_constant_p and overflow_p to that call too. |
| |
| 2022-03-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-03-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/104711 |
| * constexpr.c (cxx_eval_check_shift_p): Use TYPE_OVERFLOW_WRAPS |
| instead of TYPE_UNSIGNED. |
| * typeck.c (cp_build_binary_op): Don't emit |
| -Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS. |
| |
| 2022-03-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-03-08 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/104806 |
| * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Ignore |
| identifiers with space at the end. |
| |
| 2022-03-29 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-03-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/104944 |
| * typeck.c (cxx_sizeof_or_alignof_type): Diagnose alignof(void). |
| (cxx_alignas_expr): Call cxx_sizeof_or_alignof_type with |
| complain == true. |
| |
| 2022-03-29 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-03-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/104284 |
| * decl.c (check_initializer): Don't call build_aggr_init in |
| a template. |
| |
| 2022-03-29 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-03-08 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/104108 |
| * pt.c (convert_nontype_argument): Recompute |
| value_dependent_expression_p after build_converted_constant_expr. |
| |
| 2022-03-29 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-03-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/102990 |
| * typeck2.c (massage_init_elt): Avoid folding CONSTRUCTORs. |
| |
| 2022-03-29 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-07-14 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/101371 |
| * constexpr.c (cxx_eval_array_reference): Create a new .object |
| and .ctor for the non-aggregate non-scalar case too when |
| value-initializing. |
| |
| 2022-03-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/104107 |
| PR c++/95036 |
| * pt.c (coerce_template_template_parms): Take full parms. |
| Avoid adding too much of outer_args. |
| (coerce_template_template_parm): Adjust. |
| (template_template_parm_bindings_ok_p): Adjust. |
| (convert_template_argument): Adjust. |
| |
| 2022-03-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99445 |
| PR c++/103769 |
| * tree.c (strip_typedefs): Use build_distinct_type_copy. |
| |
| 2022-03-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/104847 |
| * mangle.c (write_expression): Don't write a union designator when |
| undigested. |
| |
| 2022-03-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/102045 |
| * call.c (make_base_init_ok): Call make_used. |
| |
| 2022-03-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103968 |
| * pt.c (value_dependent_expression_p): Check |
| has_value_dependent_address for conversion to reference. |
| |
| 2022-03-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/102123 |
| * pt.c (tsubst_copy): Use make_unbound_class_template for rewriting |
| a type template reference. |
| |
| 2022-03-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103291 |
| * name-lookup.c (push_local_extern_decl_alias): Call |
| determine_visibility. |
| |
| 2022-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103186 |
| * pt.c (defarg_inst): Use tree_vec_map_cache_hasher. |
| (defarg_insts_for): New. |
| (tsubst_default_argument): Adjust. |
| |
| 2022-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103057 |
| * pt.c (tsubst_aggr_type): Call tsubst for alias template |
| specialization. |
| |
| 2022-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/59950 |
| * call.c (build_over_call): Use cp_build_indirect_ref. |
| |
| 2022-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101095 |
| * cp-objcp-common.c (cp_common_init_ts): Mark types as types. |
| (cp_tree_size): Remove redundant entries. |
| |
| 2022-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/58646 |
| * init.c (build_vec_init): Check for vla element type. |
| |
| 2022-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103337 |
| PR c++/102740 |
| PR c++/103299 |
| PR c++/102538 |
| * decl.c (reshape_init_class): Avoid looking for designator |
| after we found it. |
| (reshape_init_r): Keep looking for designator. |
| |
| 2022-03-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101767 |
| * decl.c (reshape_init_class): Back out of anon struct |
| if a designator doesn't match. |
| |
| 2022-02-28 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-02-28 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/104667 |
| * decl2.c (is_late_template_attribute): Cope with a decl without |
| a type. |
| |
| 2022-02-19 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-02-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/104513 |
| * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>: |
| Don't punt if returns (target). |
| |
| 2022-02-19 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-02-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/104472 |
| * constexpr.c (cxx_eval_internal_function) <case IFN_VEC_CONVERT>: |
| Only return fold_const_call result if it is non-NULL. Otherwise |
| fall through into the default: case to return t, set *non_constant_p |
| and emit diagnostics if needed. |
| |
| 2022-02-18 Richard Biener <rguenther@suse.de> |
| |
| Backported from master: |
| 2021-05-10 Richard Biener <rguenther@suse.de> |
| |
| PR middle-end/100464 |
| PR c++/100468 |
| * call.c (set_up_extended_ref_temp): Mark the temporary |
| addressable if the TARGET_EXPR was. |
| |
| 2022-02-08 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-02-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/104410 |
| * constraint.cc (satisfaction_value): Relax assert to accept |
| cv-qualified bool. |
| |
| 2022-01-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/61611 |
| * except.c (in_nested_catch): New. |
| (expand_end_catch_block): Check it. |
| |
| 2022-01-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103711 |
| * init.c (perform_target_ctor): Select destructor by in_chrg. |
| |
| 2022-01-24 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-01-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/101715 |
| * tree.c (fixup_deferred_exception_variants): Remove duplicate |
| variants after parsing the exception specifications. |
| |
| 2022-01-24 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-01-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/104055 |
| * constexpr.c (cxx_eval_outermost_constant_expr): If t is a |
| TARGET_EXPR with TARGET_EXPR_CLEANUP, use get_target_expr rather |
| than get_target_expr_sfinae with tf_no_cleanup, and don't set |
| TREE_CONSTANT. |
| |
| 2022-01-24 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-01-12 Jakub Jelinek <jakub@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/103480 |
| * tree.c (move): If expr is xvalue_p, just return expr without |
| build_static_cast. |
| |
| 2022-01-24 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2022-01-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/103912 |
| * semantics.c (expand_or_defer_fn): For immediate functions, set |
| node->body_removed to true and clear analyzed, definition and |
| force_output. |
| * decl2.c (c_parse_final_cleanups): Ignore immediate functions for |
| expand_or_defer_fn. |
| |
| 2022-01-17 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-01-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103758 |
| * parser.c (cp_parser_decl_specifier_seq): Replace %<decl-specifier%> |
| with %qD. |
| |
| 2022-01-17 Marek Polacek <polacek@redhat.com> |
| |
| Revert: |
| 2022-01-17 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103758 |
| * parser.c (cp_parser_decl_specifier_seq): Replace %<decl-specifier%> |
| with %qD. |
| |
| 2022-01-17 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2022-01-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103758 |
| * parser.c (cp_parser_decl_specifier_seq): Replace %<decl-specifier%> |
| with %qD. |
| |
| 2022-01-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-01-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103831 |
| * call.c (build_new_method_call): Consider dependent bases only |
| if 'this' is available. |
| |
| 2022-01-10 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2022-01-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103783 |
| * call.c (cand_parms_match): Skip over 'this' when given one |
| static and one non-static member function. |
| |
| 2022-01-03 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-12-15 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/102229 |
| * decl.c (check_decltype_auto): New. |
| (grokdeclarator): Call it. |
| * pt.c (do_auto_deduction): Don't check decltype(auto) here. |
| |
| 2021-12-19 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-12-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103714 |
| * constraint.cc (satisfy_declaration_constraints): Do |
| push_to_top_level and pop_from_top_level around the call to |
| satisfy_normalized_constraints. |
| |
| 2021-12-16 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/103703 |
| * parser.c (class_decl_loc_t::diag_mismatched_tags): Check for class |
| type before assuming a type is one. |
| |
| 2021-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-11-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100493 |
| * parser.c (cp_parser_lambda_introducer): In C++17, don't |
| diagnose a redundant 'this' capture alongside a by-copy |
| capture default unless -pedantic. Move the diagnostic into |
| -Wc++20-extensions and adjust wording accordingly. |
| |
| 2021-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-11-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103198 |
| * pt.c (any_template_parm_r): Walk the TREE_TYPE of a dummy |
| object. |
| |
| 2021-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-11-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99911 |
| * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: Don't diagnose |
| name lookup failure if the arguments to an unresolved template |
| name are still dependent. |
| |
| 2021-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-11-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98394 |
| PR c++/85846 |
| * parser.c (cp_parser_placeholder_type_specifier): Declare |
| static. Don't override tentative to false when tmpl is a |
| concept-id with empty argument list. Don't emit a "does not |
| constrain a type" error when tentative. |
| |
| 2021-12-15 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-10-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102933 |
| * parser.c (cp_parser_simple_type_specifier): Adjust diagnostic |
| for using auto in parameter declaration. |
| * pt.c (extract_autos_r): Ignore CTAD placeholders. |
| (extract_autos): Use range-based for. |
| (do_auto_deduction): Use extract_autos only for the concepts TS |
| and not also for standard concepts. |
| (type_uses_auto): Likewise with for_each_template_parm. |
| (check_auto_in_tmpl_args): Just return false outside of the |
| concepts TS. Simplify. |
| |
| 2021-12-07 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-12-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/95009 |
| * typeck.c (is_bitfield_expr_with_lowered_type) <case MODIFY_EXPR>: |
| Handle UNARY_PLUS_EXPR, NEGATE_EXPR, NON_LVALUE_EXPR, BIT_NOT_EXPR, |
| P*CREMENT_EXPR too. |
| |
| 2021-12-02 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-12-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/94490 |
| * pt.c (expand_integer_pack): Call |
| instantiate_non_dependent_expr_sfinae. |
| |
| 2021-12-01 Jason Merrill <jason@redhat.com> |
| |
| * semantics.c (is_this_parameter): Check DECL_HAS_VALUE_EXPR_P |
| instead of is_capture_proxy. |
| |
| 2021-11-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-11-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/70796 |
| * cp-gimplify.c (cp_gimplify_arg): New function. |
| (cp_gimplify_expr): Use cp_gimplify_arg instead of gimplify_arg, |
| pass true as last argument to it if there are any following |
| arguments in strong evaluation order with side-effects. |
| |
| 2021-11-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-10-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102786 |
| * constexpr.c (cxx_eval_constant_expression): Don't reject |
| INTEGER_CSTs with type POINTER_TYPE to METHOD_TYPE. |
| |
| 2021-10-20 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-10-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102642 |
| * name-lookup.c (push_local_extern_decl_alias): Don't call |
| set_decl_tls_model on error_mark_node. |
| * decl.c (make_rtl_for_nonlocal_decl): Don't call |
| set_user_assembler_name on error_mark_node. |
| * parser.c (cp_parser_oacc_declare): Ignore DECL_LOCAL_DECL_ALIAS |
| if it is error_mark_node. |
| (cp_parser_omp_declare_target): Likewise. |
| |
| 2021-10-08 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-10-08 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102640 |
| * parser.c (handle_omp_declare_target_clause): New function. |
| (cp_parser_omp_declare_target): Use it. |
| |
| 2021-10-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-10-07 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99904 |
| * pt.c (is_compatible_template_arg): Set processing_template_decl |
| around tsubst_constraint_info. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-10-05 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102547 |
| * constexpr.c (potential_constant_expression_1): Handle |
| NONTYPE_ARGUMENT_PACK. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-09-30 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102535 |
| * method.c (is_xible_helper): Don't exit early for multi-arg |
| ctors in C++20. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-09-30 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/95567 |
| * method.c (build_comparison_op): Skip DECL_VIRTUAL_P fields. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-09-22 Patrick Palka <ppalka@redhat.com> |
| |
| DR 2446 |
| PR c++/102412 |
| * constexpr.c (cxx_eval_constant_expression) |
| <case TEMPLATE_ID_EXPR>: Check value_dependent_expression_p |
| instead of processing_template_decl. |
| * pt.c (value_dependent_expression_p) <case TEMPLATE_ID_EXPR>: |
| Return true only if any_dependent_template_arguments_p. |
| (instantiation_dependent_r) <case CALL_EXPR>: Remove this case. |
| <case TEMPLATE_ID_EXPR>: Likewise. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-09-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98486 |
| * constraint.cc (get_normalized_constraints_from_decl): Always |
| look up constraints using the most general template. |
| * decl.c (grokdeclarator): Set constraints on a static data |
| member template. |
| * pt.c (determine_specialization): Check constraints on a |
| variable template. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-09-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102163 |
| * constexpr.c (cxx_eval_call_expression): After evaluating a |
| subobject constructor call for an empty union member, produce a |
| side effect that makes sure the member gets activated. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-08-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101344 |
| PR c++/101803 |
| * cp-tree.h (CONSTRUCTOR_BRACES_ELIDED_P): Define. |
| * decl.c (reshape_init_r): Set it. |
| * pt.c (collect_ctor_idx_types): Recurse into a sub-CONSTRUCTOR |
| iff CONSTRUCTOR_BRACES_ELIDED_P. |
| |
| 2021-10-06 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-08-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101883 |
| * pt.c (convert_template_argument): Pass LOOKUP_IMPLICIT to |
| do_auto_deduction. |
| |
| 2021-10-05 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-10-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102548 |
| * tree.c (apply_identity_attributes): Fix handling of the |
| case where an attribute in the list doesn't affect type |
| identity but some attribute before it does. |
| |
| 2021-10-05 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-10-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102496 |
| * name-lookup.c (push_local_extern_decl_alias): Return early even for |
| tls vars with non-dependent type when processing_template_decl. For |
| CP_DECL_THREAD_LOCAL_P vars call set_decl_tls_model on alias. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-28 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/102454 |
| * coroutines.cc (analyze_fn_parms): Clean up synthetic names for |
| unnamed function params. |
| (morph_fn_to_coro): Do not try to set a guard variable for param |
| DTORs in the ramp, unless we have exceptions active. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-14 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (struct param_info): Add copy_var. |
| (build_actor_fn): Use simplified param references. |
| (register_param_uses): Likewise. |
| (rewrite_param_uses): Likewise. |
| (analyze_fn_parms): New function. |
| (coro_rewrite_function_body): Add proxies for the fn |
| parameters to the outer bind scope of the rewritten code. |
| (morph_fn_to_coro): Use simplified version of param ref. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-14 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (coro_resume_fn_id, coro_destroy_fn_id, |
| coro_promise_id, coro_frame_needs_free_id, coro_resume_index_id, |
| coro_self_handle_id, coro_actor_continue_id, |
| coro_frame_i_a_r_c_id): New. |
| (coro_init_identifiers): Initialize new name identifiers. |
| (coro_promise_type_found_p): Use pre-built identifiers. |
| (struct await_xform_data): Remove unused fields. |
| (transform_await_expr): Delete code that is now unused. |
| (build_actor_fn): Simplify interface, use pre-built identifiers and |
| remove transforms that are no longer needed. |
| (build_destroy_fn): Use revised field names. |
| (register_local_var_uses): Use pre-built identifiers. |
| (coro_rewrite_function_body): Simplify interface, use pre-built |
| identifiers. Generate proxy vars in the outer bind expr scope for the |
| implementation state that we wish to expose. |
| (morph_fn_to_coro): Adjust comments for new variable names, use pre- |
| built identifiers. Remove unused code to generate frame entries for |
| the implementation state. Adjust call for build_actor_fn. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (register_local_var_uses): Do not mangle |
| frame entries for the outermost scope. Record the outer |
| scope as nesting depth 0. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (coro_build_artificial_var): New. |
| (build_actor_fn): Use var builder, rename vars to use |
| implementation namespace. |
| (coro_rewrite_function_body): Likewise. |
| (morph_fn_to_coro): Likewise. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (transform_local_var_uses): Record |
| frame offset expressions as DECL_VALUE_EXPRs instead of |
| rewriting them. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (build_actor_fn): Add begin/finish clauses |
| to the initial test in the actor function. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-09-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (await_statement_walker): Use build_stmt and |
| add_stmt instead of build1 and finish_expr_stmt. |
| |
| 2021-10-03 Jason Merrill <jason@redhat.com> |
| |
| Backported from master: |
| 2021-05-07 Jason Merrill <jason@redhat.com> |
| |
| * coroutines.cc (build_co_await): Don't call 'rvalue'. |
| (flatten_await_stmt): Simplify initialization. |
| (morph_fn_to_coro): Change 'rvalue' to 'move'. Simplify. |
| |
| 2021-09-15 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-09-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88578 |
| PR c++/102295 |
| * typeck2.c (split_nonconstant_init_1): Don't throw away empty |
| initializers of flexible array members if they have non-zero type |
| size. |
| |
| 2021-09-15 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-09-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102295 |
| * decl.c (layout_var_decl): For aggregates ending with a flexible |
| array member, add the size of the initializer for that member to |
| DECL_SIZE and DECL_SIZE_UNIT. |
| |
| 2021-09-15 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-09-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102305 |
| * method.c (is_xible_helper): Call complete_type on to. |
| |
| 2021-09-07 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-09-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/100495 |
| * constexpr.c (maybe_save_constexpr_fundef): Save body even for |
| constexpr deleting dtors. |
| (cxx_eval_call_expression): Don't use DECL_CLONED_FUNCTION for |
| deleting dtors. |
| |
| 2021-08-12 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-08-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101759 |
| * parser.c (cp_parser_default_argument): Temporarily override |
| parser->omp_declare_simd and parser->oacc_routine to NULL. |
| |
| 2021-08-12 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-08-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101663 |
| * constexpr.c (cxx_eval_store_expression): Handle the lval=true |
| case in the early exit code path for empty stores with mismatched |
| types. |
| |
| 2021-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101725 |
| DR 2082 |
| * cp-tree.h (unevaluated_p): Return true for REQUIRES_EXPR. |
| * decl.c (local_variable_p_walkfn): Don't walk into unevaluated |
| operands. |
| * parser.c (cp_parser_primary_expression) <case CPP_NAME>: Never |
| reject uses of local variables in unevaluated contexts. |
| * tree.c (cp_walk_subtrees) <case REQUIRES_EXPR>: Increment |
| cp_unevaluated_operand. Use cp_walk_tree directly instead of |
| WALK_SUBTREE to avoid the goto. Use REQUIRES_EXPR_REQS instead |
| of TREE_OPERAND directly. |
| |
| 2021-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-08-02 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100828 |
| * logic.cc (formula::formula): Use emplace_back instead of |
| push_back. |
| (formula::branch): Insert a copy of m_current directly after |
| m_current instead of at the end of the list. |
| (formula::erase): Define. |
| (decompose_formula): Remove. |
| (decompose_antecedents): Remove. |
| (decompose_consequents): Remove. |
| (derive_proofs): Remove. |
| (max_problem_size): Remove. |
| (diagnose_constraint_size): Remove. |
| (subsumes_constraints_nonnull): Rewrite directly in terms of |
| decompose_clause and derive_proof, interleaving decomposition |
| with implication checking. Remove limit on constraint complexity. |
| Use formula::erase to free the current clause before moving on to |
| the next one. |
| |
| 2021-07-28 Release Manager |
| |
| * GCC 11.2.0 released. |
| |
| 2021-07-21 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-07-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101516 |
| * semantics.c (finish_omp_reduction_clause): Also call |
| complete_type_or_else and return true if it fails. |
| |
| 2021-07-20 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-07-19 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/95520 |
| * coroutines.cc (struct coroutine_info): Add fields for |
| actor and destroy function decls. |
| (to_ramp): New. |
| (coro_get_ramp_function): New. |
| (coro_get_actor_function): New. |
| (coro_get_destroy_function): New. |
| (act_des_fn): Set up mapping between ramp, actor and |
| destroy functions. |
| (morph_fn_to_coro): Adjust interface to the builder for |
| helper function decls. |
| * cp-tree.h (DECL_ACTOR_FN, DECL_DESTROY_FN, DECL_RAMP_FN, |
| JOIN_STR): New. |
| * mangle.c (write_encoding): Handle coroutine helpers. |
| (write_unqualified_name): Handle lambda coroutine helpers. |
| |
| 2021-07-20 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-07-09 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (build_actor_fn): Move common code to |
| act_des_fn. |
| (build_destroy_fn): Likewise. |
| (act_des_fn): Build the void return here. Ensure that the |
| source location matches the original function. |
| |
| 2021-07-20 Iain Sandoe <iain@sandoe.co.uk> |
| |
| Backported from master: |
| 2021-07-09 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc |
| (coro_rewrite_function_body): Connect the replacement |
| function block to the block nest correctly. |
| |
| 2021-07-18 Tobias Burnus <tobias@codesourcery.com> |
| |
| Backported from master: |
| 2021-05-04 Tobias Burnus <tobias@codesourcery.com> |
| |
| * semantics.c (finish_omp_reduction_clause): Accept float + complex |
| for || and && reductions. |
| |
| 2021-07-18 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-07-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101443 |
| * cp-gimplify.c (cp_fold): For comparisons with NULLPTR_TYPE |
| operands, fold them right away to true or false. |
| |
| 2021-07-16 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-07-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101233 |
| * pt.c (alias_ctad_tweaks): Clear cp_unevaluated_operand for |
| substituting DECL_ARGUMENTS. |
| |
| 2021-07-16 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-05-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100138 |
| * constraint.cc (tsubst_constraint): Set up cp_unevaluated. |
| (satisfy_atom): Set up iloc_sentinel before calling |
| cxx_constant_value. |
| * pt.c (tsubst_pack_expansion): When returning a rebuilt pack |
| expansion, carry over PACK_EXPANSION_LOCAL_P and |
| PACK_EXPANSION_SIZEOF_P from the original pack expansion. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-07-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101181 |
| * constraint.cc (tsubst_requires_expr): Pass complain/in_decl to |
| add_extra_args. |
| * cp-tree.h (add_extra_args): Add complain/in_decl parameters. |
| * pt.c (build_extra_args): Make a copy of args. |
| (add_extra_args): Add complain/in_decl parameters. Enable the |
| code for handling the case where the extra arguments are |
| dependent. |
| (tsubst_pack_expansion): Pass complain/in_decl to |
| add_extra_args. |
| (tsubst_template_args): Handle missing template arguments. |
| (tsubst_expr) <case IF_STMT>: Pass complain/in_decl to |
| add_extra_args. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-07-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101247 |
| * pt.c (any_template_parm_r) <case TEMPLATE_DECL>: Just walk the |
| DECL_CONTEXT. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-07-02 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101247 |
| * pt.c (any_template_parm_r) <case TEMPLATE_DECL>: Rewrite to |
| use common_enclosing_class and to not depend on the TREE_TYPE |
| of outer levels pointing to the corresponding primary template. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-07-01 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101194 |
| * constexpr.c (cxx_eval_array_reference): When the element type |
| is an empty type and the corresponding element is omitted, just |
| return an empty CONSTRUCTOR instead of attempting value |
| initialization. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-06-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98832 |
| * pt.c (maybe_aggr_guide): Handle alias templates appropriately. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-06-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101182 |
| * constraint.cc (evaluate_requires_expr): Adjust function comment. |
| * cp-gimplify.c (cp_genericize_r) <case REQUIRES_EXPR>: Move to ... |
| (cp_fold) <case REQUIRES_EXPR>: ... here. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-06-07 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100918 |
| * parser.c (cp_parser_lookup_name): Check access of the lookup |
| result before we potentially adjust an injected-class-name to |
| its TEMPLATE_DECL. |
| |
| 2021-07-13 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-05-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/97420 |
| * cvt.c (noexcept_conv_p): Remove redundant checks and simplify. |
| (fnptr_conv_p): Don't call non_reference. Use INDIRECT_TYPE_P |
| instead of TYPE_PTR_P. |
| * pt.c (convert_nontype_argument_function): Look through |
| implicit INDIRECT_REFs before calling strip_fnptr_conv. |
| |
| 2021-07-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101098 |
| * decl.c (function_requirements_equivalent_p): Only compare |
| trailing requirements on a specialization. |
| |
| 2021-07-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100838 |
| * call.c (convert_like_internal): Clear tf_no_cleanup when |
| recursing. |
| (build_user_type_conversion_1): Only add ck_rvalue if |
| LOOKUP_ONLYCONVERTING. |
| |
| 2021-07-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86355 |
| * pt.c (use_pack_expansion_extra_args_p): Don't compare |
| args from the same argument pack. |
| |
| 2021-07-08 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-07-08 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/101087 |
| * cp-tree.h (unevaluated_p): New. |
| * except.c (check_noexcept_r): Use it. Don't walk into |
| unevaluated operands. |
| |
| 2021-07-07 Jason Merrill <jason@redhat.com> |
| |
| Revert: |
| 2020-12-02 Jason Merrill <jason@redhat.com> |
| |
| * decl.c (check_initializer): Also look through STMT_EXPR |
| and BIND_EXPR. |
| |
| 2021-07-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101040 |
| PR c++/97566 |
| * class.c (is_empty_field): Handle null argument. |
| * constexpr.c (cxx_eval_bare_aggregate): Discard initializer |
| for empty field. |
| |
| 2021-06-29 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-06-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/100752 |
| * parser.c (cp_parser_declarator): Pass flags down to |
| cp_parser_declarator. Also pass static_p/member_p. |
| |
| 2021-06-23 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-06-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR inline-asm/100785 |
| * typeck.c (cxx_mark_addressable): Diagnose trying to make |
| bit-fields addressable. |
| |
| 2021-06-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101106 |
| * decl.c (duplicate_decls): Condition note on return value of pedwarn. |
| |
| 2021-06-17 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-06-06 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/100902 |
| * parser.c (cp_parser_omp_target): Call c_omp_adjust_map_clauses |
| even when target is combined with other constructs. |
| |
| 2021-06-17 Jason Merrill <jason@redhat.com> |
| |
| * init.c (build_vec_init): Preserve the type of base. |
| |
| 2021-06-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101078 |
| * pt.c (tsubst_baselink): Update binfos in non-dependent case. |
| |
| 2021-06-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101029 |
| * init.c (build_vec_init): Shortcut [0] case. |
| |
| 2021-06-10 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-06-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100946 |
| * constraint.cc (normalize_placeholder_type_constraints): When |
| normalizing a non-templated return-type-requirement, add a dummy |
| level to initial_parms. |
| |
| 2021-06-09 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-06-08 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/100065 |
| * decl.c (grokdeclarator): Store a value-dependent |
| explicit-specifier even for deduction guides. |
| |
| 2021-06-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100963 |
| * call.c (perfect_conversion_p): Check check_narrowing. |
| |
| 2021-06-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/91706 |
| * semantics.c (baselink_for_fns): Fix BASELINK_BINFO. |
| |
| 2021-06-08 Jason Merrill <jason@redhat.com> |
| |
| * module.cc (duplicate_hash::hash): Comment out. |
| (trees_in::tree_value): Adjust loop counter. |
| |
| 2021-06-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-06-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100862 |
| * pt.c (set_current_access_from_decl): Move to ... |
| * class.c (set_current_access_from_decl): ... here. |
| (handle_using_decl): Use it to propagate the access of the |
| using-enum decl to the copy of the imported enumerator. |
| * cp-tree.h (set_current_access_from_decl): Declare. |
| * decl.c (build_enumerator): Simplify using make_temp_override |
| and set_current_access_from_decl. |
| |
| 2021-06-07 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-06-04 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100102 |
| * pt.c (tsubst_function_decl): Remove old code for reducing |
| args when it has excess levels. |
| |
| 2021-06-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/91859 |
| * call.c (build_op_delete_call): Don't set CALL_FROM_NEW_OR_DELETE_P |
| for destroying delete. |
| * init.c (build_delete): Don't clobber before destroying delete. |
| |
| 2021-06-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100797 |
| PR c++/95719 |
| * call.c (build_over_call): Adjust base_binfo in |
| resolves_to_fixed_type_p case. |
| |
| 2021-05-31 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-05-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/100666 |
| * call.c (convert_arg_to_ellipsis): For expressions with NULLPTR_TYPE |
| and side-effects, temporarily disable -Wunused-result warning when |
| building COMPOUND_EXPR. |
| |
| 2021-05-28 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-05-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100502 |
| * typeck.c (finish_class_member_access_expr): Disable ahead |
| of time access checking during the member lookup. |
| |
| 2021-05-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100489 |
| * decl.c (reshape_init_class): Handle designator for |
| member of anonymous aggregate here. |
| * typeck2.c (process_init_constructor_record): Not here. |
| |
| 2021-05-20 Andreas Krebbel <krebbel@linux.ibm.com> |
| |
| Backported from master: |
| 2021-05-18 Andreas Krebbel <krebbel@linux.ibm.com> |
| |
| PR c++/100281 |
| * cvt.c (cp_convert_to_pointer): Use the size of the target |
| pointer type. |
| * tree.c (cp_build_reference_type): Call |
| cp_build_reference_type_for_mode with VOIDmode. |
| (cp_build_reference_type_for_mode): Rename from |
| cp_build_reference_type. Add MODE argument and invoke |
| build_reference_type_for_mode. |
| (strip_typedefs): Use build_pointer_type_for_mode and |
| cp_build_reference_type_for_mode for pointers and references. |
| |
| 2021-05-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100634 |
| * pt.c (invalid_nontype_parm_type_p): Return true for COMPLEX_TYPE. |
| |
| 2021-05-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100659 |
| * cp-tree.h (CONST_DECL_USING_P): Check for null TREE_TYPE. |
| |
| 2021-05-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100367 |
| PR c++/96299 |
| * method.c (genericize_spaceship): Use fold_build2 for scalar |
| operands. |
| |
| 2021-05-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100261 |
| * rtti.c (get_tinfo_decl_direct): Check TYPE_TRANSPARENT_AGGR. |
| |
| 2021-05-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100372 |
| * tree.c (strip_typedefs): Only look at the pattern of a |
| TYPE_PACK_EXPANSION if it's a type. |
| |
| 2021-05-18 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100644 |
| * call.c (perfect_candidate_p): An implicitly deleted move |
| is not perfect. |
| |
| 2021-05-18 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100205 |
| PR c++/93314 |
| * cp-tree.h (cp_evaluated): Add reset parm to constructor. |
| * parser.c (cp_parser_constant_expression): Change |
| allow_non_constant_p to int. Use cp_evaluated. |
| (cp_parser_initializer_clause): Pass 2 to allow_non_constant_p. |
| * semantics.c (finish_id_expression_1): Don't mess with |
| cp_unevaluated_operand here. |
| |
| 2021-05-03 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-05-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100362 |
| * parser.c (cp_parser_class_head): Reinstate calls to pushclass |
| and popclass when parsing the base-clause that were removed in |
| r11-6815. |
| |
| 2021-04-29 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from master: |
| 2021-04-29 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/100319 |
| * semantics.c (finish_omp_clauses): Fix up check that variable |
| mentioned in detach clause doesn't appear in data-sharing clauses. |
| |
| 2021-04-27 Patrick Palka <ppalka@redhat.com> |
| |
| Backported from master: |
| 2021-04-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/89565 |
| PR c++/93383 |
| PR c++/95291 |
| PR c++/99200 |
| PR c++/99683 |
| * pt.c (do_class_deduction): Punt if the initializer is |
| type-dependent. |
| |
| 2021-04-27 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-04-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/100161 |
| * pt.c (tsubst_copy_and_build) <case PLUS_EXPR>: Test op0 and |
| op1 separately for value- or type-dependence. |
| |
| 2021-04-27 Marek Polacek <polacek@redhat.com> |
| |
| Backported from master: |
| 2021-04-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/96380 |
| * parser.c (cp_parser_enum_specifier): Don't allow defining |
| types in enum-base. |
| |
| 2021-04-27 Jakub Jelinek <jakub@redhat.com> |
| |
| * module.cc: Remove #error that triggers if DEV-PHASE is empty. |
| |
| 2021-04-27 Release Manager |
| |
| * GCC 11.1.0 released. |
| |
| 2021-04-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/97536 |
| * decl.c (grokvardecl): Given an error when a concept is not defined |
| at namespace scope. |
| |
| 2021-04-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/100111 |
| * constexpr.c (cxx_eval_store_expression): Don't add CONSTRUCTORs |
| for empty classes into *valp when types don't match even when *valp |
| is NULL. |
| |
| 2021-04-16 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99803 |
| * decl.c (make_typename_type): Give an error and return when |
| name is is_overloaded_fn. |
| * parser.c (cp_parser_class_name): Don't check is_overloaded_fn |
| before calling make_typename_type. |
| |
| 2021-04-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99700 |
| * constexpr.c (reduced_constant_expression_p): For array |
| CONSTRUCTORs, use a dedicated loop that additionally verifies |
| the CONSTRUCTOR spans the entire array. |
| |
| 2021-04-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99850 |
| * parser.c (cp_parser_constraint_requires_parens) <case CPP_DEREF>: |
| If lambda_p, return pce_ok instead of pce_maybe_postfix. |
| |
| 2021-04-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99833 |
| * pt.c (extract_locals_r): When handling DECL_EXPR of a structured |
| binding, add to data.internal also all corresponding structured |
| binding decls. |
| |
| 2021-04-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100079 |
| * cp-tree.h (first_field): Declare. |
| * mangle.c (range_expr_nelts): New. |
| (write_expression): Improve class NTTP mangling. |
| * pt.c (get_template_parm_object): Clear TREE_HAS_CONSTRUCTOR. |
| * tree.c (zero_init_expr_p): Improve class NTTP handling. |
| * decl.c: Adjust comment. |
| |
| 2021-04-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/80456 |
| * call.c (build_new_method_call_1): Check again for side-effects |
| with a volatile object. |
| |
| 2021-04-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100101 |
| PR c++/99583 |
| * pt.c (find_parameter_packs_r) [FUNCTION_TYPE]: Walk into |
| TYPE_RAISES_EXCEPTIONS here. |
| * tree.c (cp_walk_subtrees): Not here. |
| |
| 2021-04-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100091 |
| PR c++/99478 |
| * parser.c (cp_parser_default_type_template_argument): Set |
| parser->local_variables_forbidden_p. |
| |
| 2021-04-15 Richard Sandiford <richard.sandiford@arm.com> |
| |
| PR c++/98852 |
| * typeck.c (merge_type_attributes_from): New function. |
| (cp_common_type): Use it for vector types. |
| |
| 2021-04-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100078 |
| PR c++/93085 |
| * pt.c (uses_outer_template_parms): Also look at default |
| template argument. |
| |
| 2021-04-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/93314 |
| * semantics.c (finish_id_expression_1): Clear cp_unevaluated_operand |
| for a non-static data member in a constant-expression. |
| |
| 2021-04-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/83476 |
| PR c++/99885 |
| * pt.c (deducible_expression): Look through implicit |
| INDIRECT_REFs as well. |
| |
| 2021-04-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99478 |
| * parser.c (cp_parser_lambda_expression): Reject lambda |
| in template parameter type. |
| |
| 2021-04-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/90674 |
| * decl.c (duplicate_decls): Don't propagate |
| DECL_INITIALIZED_IN_CLASS_P to a specialization. |
| |
| 2021-04-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/88742 |
| PR c++/49951 |
| PR c++/58123 |
| * semantics.c (set_cleanup_locs): New. |
| (do_poplevel): Call it. |
| * parser.c (cp_parser_compound_statement): Consume the } |
| before finish_compound_stmt. |
| |
| 2021-04-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100032 |
| * pt.c (get_underlying_template): Compare TYPE_QUALS. |
| |
| 2021-04-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100054 |
| PR c++/90479 |
| * init.c (get_nsdmi): Do more context adjustment for local classes. |
| |
| 2021-04-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99008 |
| * pt.c (do_class_deduction): Reject alias CTAD in C++17 mode |
| rather than issuing a pedwarn. |
| * typeck2.c (build_functional_cast_1): Handle CTAD uniformly |
| for consistent diagnostics. |
| |
| 2021-04-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/91933 |
| * class.c (build_base_path): Shortcut simple non-pointer case. |
| |
| 2021-04-13 Eric Botcazou <ebotcazou@adacore.com> |
| |
| * module.cc (ordinary_loc_of): Test LINEMAPS_MACRO_LOWEST_LOCATION |
| of the linemap. |
| (module_state::write_location): Likewise. |
| |
| 2021-04-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/97134 |
| * pt.c (do_class_deduction): Look through EXPR_PACK_EXPANSION |
| when checking if the initializer is an equivalent class |
| placeholder template parameter. |
| |
| 2021-04-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99961 |
| PR c++/99994 |
| * constraint.cc (satisfy_normalized_constraints): Set |
| cp_unevaluated. |
| * parser.c (cp_parser_concept_definition): Likewise. |
| (cp_parser_requires_clause_opt): Likewise. |
| |
| 2021-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/93085 |
| * pt.c (uses_outer_template_parms): Handle non-type and template |
| template parameters specifically. |
| |
| 2021-04-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97974 |
| * decl.c (fixup_anonymous_aggr): Prune all functions from |
| CLASSTYPE_MEMBER_VEC. |
| |
| 2021-04-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98800 |
| PR c++/97399 |
| * parser.c (cp_parser_direct_declarator): Don't |
| inject_this_parameter if static_p. |
| (cp_parser_omp_var_list_no_open): Parse 'this' even if |
| current_class_ptr isn't set for a better diagnostic. |
| |
| 2021-04-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99180 |
| PR c++/93295 |
| PR c++/93867 |
| PR c++/99118 |
| PR c++/96873 |
| * pt.c (alias_ctad_tweaks): Handle failure better. |
| |
| 2021-04-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100006 |
| * pt.c (find_parameter_packs_r) [TAG_DEFN]: Look into bases. |
| |
| 2021-04-09 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (LAMBDA_EXPR_REGENERATED_FROM) |
| (LAMBDA_EXPR_REGENERATING_TARGS): Replace these with ... |
| (LAMBDA_EXPR_REGEN_INFO): ... this. |
| (tree_lambda_expr::regenerated_from) |
| (tree_lambda_expr::regenerating_targs): Replace these with ... |
| (tree_lambda_expr::regen_info): ... this. |
| * constraint.cc (satisfy_declaration_constraints): Adjust |
| accordingly. |
| * lambda.c (build_lambda_expr): Likewise. |
| * pt.c (regenerated_lambda_fn_p): Likewise. |
| (most_general_lambda): Likewise. |
| (tsubst_lambda_expr): Likewise. |
| |
| 2021-04-09 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99806 |
| * parser.c (cp_parser_member_declaration): Call |
| cp_parser_save_default_args even for function templates. Use |
| STRIP_TEMPLATE on the declaration we're passing. |
| |
| 2021-04-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99874 |
| * constraint.cc (get_normalized_constraints_from_decl): Handle |
| regenerated lambdas. |
| (satisfy_declaration_constraints): Likewise. Check for |
| dependent args later. |
| * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): Replace with ... |
| (LAMBDA_EXPR_REGENERATED_FROM): ... this. |
| (LAMBDA_EXPR_REGENERATING_TARGS): New. |
| (tree_lambda_expr::regenerated_from): New data member. |
| (tree_lambda_expr::regenerating_targs): New data member. |
| (add_to_template_args): Declare. |
| (regenerated_lambda_fn_p): Likewise. |
| (most_general_lambda): Likewise. |
| * lambda.c (build_lambda_expr): Set LAMBDA_EXPR_REGENERATED_FROM |
| and LAMBDA_EXPR_REGENERATING_TARGS. |
| * pt.c (add_to_template_args): No longer static. |
| (tsubst_function_decl): Unconditionally propagate constraints on |
| the substituted function decl. |
| (instantiated_lambda_fn_p): Rename to ... |
| (regenerated_lambda_fn_p): ... this. Check |
| LAMBDA_EXPR_REGENERATED_FROM instead of |
| LAMBDA_EXPR_INSTANTIATED. |
| (most_general_lambda): Define. |
| (enclosing_instantiation_of): Adjust after renaming |
| instantiated_lambda_fn_p. |
| (tsubst_lambda_expr): Don't set LAMBDA_EXPR_INSTANTIATED. Set |
| LAMBDA_EXPR_REGENERATED_FROM and LAMBDA_EXPR_REGENERATING_TARGS. |
| Don't substitute or set constraints on the regenerated lambda. |
| |
| 2021-04-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/97679 |
| * pt.c (build_deduction_guide): Document OUTER_ARGS. Substitute |
| them into the propagated constraints. |
| |
| 2021-04-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/91849 |
| * call.c (convert_like_internal): Improve reference diagnostic. |
| |
| 2021-04-08 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99859 |
| * constexpr.c (addr_of_non_const_var): New function. |
| (cxx_bind_parameters_in_call): Set *non_constant_args to true |
| even if cp_walk_tree on arg with addr_of_non_const_var callback |
| returns true. |
| |
| 2021-04-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/94529 |
| * pt.c (determine_specialization): Improve diagnostic. |
| |
| 2021-04-08 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99844 |
| * decl.c (build_explicit_specifier): Call |
| check_for_bare_parameter_packs. |
| * except.c (build_noexcept_spec): Likewise. |
| |
| 2021-04-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/41723 |
| * parser.c (cp_parser_class_name): Check dependent_scope_p. |
| |
| 2021-04-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/52625 |
| * pt.c (maybe_process_partial_specialization): Check |
| DECL_SELF_REFERENCE_P. |
| |
| 2021-04-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/92918 |
| * name-lookup.c (push_class_level_binding_1): Do overload a new |
| function with a previous using-declaration. |
| |
| 2021-04-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96673 |
| * init.c (get_nsdmi): Don't defer access checking. |
| |
| 2021-04-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99901 |
| * decl.c (cp_finish_decl): mark_needed an implicitly inline |
| static data member with an out-of-class redeclaration. |
| |
| 2021-04-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/91241 |
| * mangle.c (write_compact_number): Add sanity check. |
| (write_local_name): Use list_length for parm number. |
| |
| 2021-04-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99899 |
| * pt.c (do_auto_deduction): Don't exit early when deducing the |
| array type of a structured binding. Also handle adc_decomp_type |
| during constraint checking. |
| |
| 2021-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96311 |
| * typeck.c (check_return_expr): Call mark_exp_read in dependent |
| case. |
| |
| 2021-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98440 |
| * typeck.c (build_reinterpret_cast_1): Don't perform |
| temporary materialization. |
| |
| 2021-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/95317 |
| * pt.c (lookup_template_class_1): Do tsubst_enum when |
| tsubsting a generic lambda. |
| |
| 2021-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/95870 |
| * pt.c (enclosing_instantiation_of): Compare DECL_SOURCE_LOCATION if |
| there is no enclosing non-lambda function. |
| |
| 2021-04-05 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99380 |
| * module.cc (name_pending_imports): Drop 'atend' parm. Don't |
| query export when not needed. |
| (preprocess_module, preprocessed_module): Adjust. |
| |
| 2021-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99066 |
| * pt.c (mark_decl_instantiated): Set DECL_EXTERNAL. |
| |
| 2021-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99201 |
| * pt.c (class el_data): Add visited field. |
| (extract_local_specs): Pass it to cp_walk_tree. |
| (extract_locals_r): Walk into the body of a lambda. |
| |
| 2021-04-05 Jason Merrill <jason@redhat.com> |
| |
| * ptree.c (cxx_print_decl): Check DECL_MODULE_IMPORT_P on |
| template result. |
| |
| 2021-04-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99643 |
| * typeck2.c (massage_init_elt): Don't strip TARGET_EXPR. |
| |
| 2021-04-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/91416 |
| * parser.c: Create a GC root for attributes in a decl specifier. |
| (cp_parser_type_specifier): Push/pop ->attributes onto/from it. |
| |
| 2021-04-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/91217 |
| * pt.c (tsubst_lambda_expr): Skip the body block from |
| DECL_SAVED_TREE. |
| |
| 2021-04-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/90664 |
| * cvt.c (can_convert_qual): Check fnptr_conv_p. |
| |
| 2021-04-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97900 |
| * pt.c (regenerate_decl_from_template): tsubst_decl |
| the parms. |
| |
| 2021-04-02 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99869 |
| * parser.c (do_range_for_auto_deduction): Pass adc_variable_type |
| to do_auto_deduction. |
| |
| 2021-04-02 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99586 |
| * semantics.c (finish_compound_literal): Check |
| template_placeholder_p instead of type_uses_auto. |
| |
| 2021-04-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97938 |
| * cp-tree.h (PACK_EXPANSION_AUTO_P): New. |
| * lambda.c (add_capture): Set it. |
| * pt.c (tsubst_pack_expansion): Handle it. |
| |
| 2021-04-02 Nathan Sidwell <nathan@acm.org> |
| |
| * cp-tree.h (lang_decl_base): Correct module flag comment. |
| * module.cc (trees_in::assert_definition): Break out |
| not_tmpl var. |
| (trees_out::lang_decl_bools): Do not write purview for header units. |
| |
| 2021-04-01 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99831 |
| * method.c (defaulted_late_check): ++ and -- function_depth around |
| the call to synthesize_method. |
| * pt.c: Remove the saved_trees global. |
| |
| 2021-04-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99583 |
| PR c++/99584 |
| * tree.c (cp_walk_subtrees) [FUNCTION_TYPE]: Walk into |
| TYPE_RAISES_EXCEPTIONS. |
| |
| 2021-04-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * mapper-client.cc (INCLUDE_MAP): New; require map to be |
| included from system.h. |
| * mapper-resolver.cc (INCLUDE_MAP): Likewise. |
| |
| 2021-04-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98481 |
| * mangle.c (write_expression): Adjust. |
| * class.c (find_abi_tags_r): Disable PR98481 fix for ABI v14. |
| (mark_abi_tags_r): Likewise. |
| |
| 2021-04-01 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99283 |
| * module.cc (trees_out::decl_node): Adjust importedness reference |
| assert. |
| (module_state::intercluster_seed): New. Seed both imports and |
| inter-cluster references. Broken out of ... |
| (module_state::write_cluster): ... here. Call it. |
| |
| 2021-03-31 Jason Merrill <jason@redhat.com> |
| |
| PR c++/99445 |
| * tree.c (strip_typedefs): Handle TYPE_PACK_EXPANSION. |
| |
| 2021-03-31 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/88115 |
| * mangle.c (write_expression): Adjust the mangling of |
| __alignof__. |
| |
| 2021-03-31 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99815 |
| * pt.c (placeholder_type_constraint_dependent_p): Expand |
| argument packs to separate the first non-pack argument |
| from the rest. |
| |
| 2021-03-30 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99283 |
| * module.cc (dumper::operator): Make less brittle. |
| (trees_out::core_bools): VAR_DECLs always have a context. |
| (trees_out::key_mergeable): Use same_type_p for asserting. |
| (trees_in::read_var_def): Propagate |
| DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. |
| |
| 2021-03-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99790 |
| * cp-gimplify.c (cp_gimplify_expr): Handle PTRMEM_CST. |
| |
| 2021-03-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98352 |
| * method.c (implicitly_declare_fn): Pass &raises to |
| synthesized_method_walk. |
| |
| 2021-03-26 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99283 |
| * cp-tree.h (DECL_MODULE_CHECK): Ban TEMPLATE_DECL. |
| (SET_TYPE_TEMPLATE_INFO): Restore Alias template setting. |
| * decl.c (duplicate_decls): Remove template_decl module flag |
| propagation. |
| * module.cc (merge_kind_name): Add alias tmpl spec as a thing. |
| (dumper::impl::nested_name): Adjust for template-decl module flag |
| change. |
| (trees_in::assert_definition): Likewise. |
| (trees_in::install_entity): Likewise. |
| (trees_out::decl_value): Likewise. Remove alias template |
| separation of template and type_decl. |
| (trees_in::decl_value): Likewise. |
| (trees_out::key_mergeable): Likewise, |
| (trees_in::key_mergeable): Likewise. |
| (trees_out::decl_node): Adjust for template-decl module flag |
| change. |
| (depset::hash::make_dependency): Likewise. |
| (get_originating_module, module_may_redeclare): Likewise. |
| (set_instantiating_module, set_defining_module): Likewise. |
| * name-lookup.c (name_lookup::search_adl): Likewise. |
| (do_pushdecl): Likewise. |
| * pt.c (build_template_decl): Likewise. |
| (lookup_template_class_1): Remove special alias_template handling |
| of DECL_TI_TEMPLATE. |
| (tsubst_template_decl): Likewise. |
| |
| 2021-03-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99705 |
| * tree.c (bot_manip): Remap artificial automatic temporaries mentioned |
| in DECL_EXPR or in BIND_EXPR_VARS. |
| |
| 2021-03-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99672 |
| * parser.c (cp_parser_postfix_expression): For calls, create |
| combined_loc and temporarily set input_location to it before |
| calling finish_call_expr. |
| |
| 2021-03-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/94751 |
| * call.c (build_over_call): Maybe call mark_used in case |
| deduce_inheriting_ctor fails and return error_mark_node. |
| * cp-tree.h (deduce_inheriting_ctor): Adjust declaration. |
| * method.c (deduce_inheriting_ctor): Return bool if the deduction |
| fails. |
| (implicitly_declare_fn): If raises is error_mark_node, call |
| synthesized_method_walk with diag being true. |
| |
| 2021-03-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99745 |
| * decl2.c (grokbitfield): Diagnose bitfields containing bare parameter |
| packs and don't set DECL_BIT_FIELD_REPRESENTATIVE in that case. |
| |
| 2021-03-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99331 |
| * call.c (build_converted_constant_expr_internal): Don't emit |
| -Wconversion warnings. |
| |
| 2021-03-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99565 |
| * call.c (build_conditional_expr_1): Pass OEP_ADDRESS_OF_SAME_FIELD |
| to operand_equal_p. |
| * cvt.c (convert_to_void): Preserve location_t on COND_EXPR or |
| or COMPOUND_EXPR. |
| |
| 2021-03-23 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99283 |
| * name-lookup.c (check_module_override): Set global or partition |
| DUP on the binding vector. |
| |
| 2021-03-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99318 |
| * decl2.c (cp_warn_deprecated_use_scopes): Only call |
| cp_warn_deprecated_use when decl is a namespace, class, or enum. |
| |
| 2021-03-23 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99239 |
| * decl.c (duplicate_decls): Remove assert about maybe-imported |
| artificial decls. |
| |
| 2021-03-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99650 |
| * decl.c (cp_finish_decomp): Diagnose void initializers when |
| using tuple_element and get. |
| |
| 2021-03-22 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99480 |
| * module.cc (depset::hash::make_dependency): Propagate flags for |
| partial specialization. |
| (module_may_redeclare): Handle partial specialization. |
| |
| 2021-03-22 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99425 |
| * cp-tree.h (map_context_from, map_context_to): Delete. |
| (add_mergeable_specialization): Add is_alias parm. |
| * pt.c (add_mergeable_specialization): Add is_alias parm, add them. |
| * module.cc (map_context_from, map_context_to): Delete. |
| (trees_in::decl_value): Add specializations later, adjust call. |
| Drop useless alias lookup. Set duplicate fn parm context. |
| (check_mergeable_decl): Drop context mapping. |
| (trees_in::is_matching_decl): Likewise. |
| (trees_in::read_function_def): Drop parameter context adjustment |
| here. |
| |
| 2021-03-22 Martin Liska <mliska@suse.cz> |
| |
| PR c++/99687 |
| * module.cc (fini_modules): Call vec_free instead of delete. |
| |
| 2021-03-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR debug/99230 |
| * cp-gimplify.c (cp_genericize_r) <case STATEMENT_LIST>: Remove |
| special code, instead call c_genericize_control_stmt. |
| |
| 2021-03-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99456 |
| * constexpr.c (cxx_eval_constant_expression): For CONVERT_EXPR from |
| INDIRECT_TYPE_P to ARITHMETIC_TYPE_P, when !ctx->manifestly_const_eval |
| don't diagnose it, set *non_constant_p nor return t. |
| |
| 2021-03-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99500 |
| * parser.c (cp_parser_requirement_parameter_list): Handle |
| error_mark_node. |
| |
| 2021-03-18 Marek Polacek <polacek@redhat.com> |
| |
| * pt.c (tsubst_copy_and_build) <case FLOAT_EXPR>: Remove. |
| |
| 2021-03-18 Marek Polacek <polacek@redhat.com> |
| |
| * pt.c (tsubst_copy_and_build): Add assert. |
| |
| 2021-03-18 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR objc++/49070 |
| * parser.c (cp_debug_parser): Add Objective-C++ message |
| state flag. |
| (cp_parser_nested_name_specifier_opt): Allow colon to |
| terminate an assignment-expression when parsing Objective- |
| C++ messages. |
| (cp_parser_objc_message_expression): Set and clear message |
| parsing state on entry and exit. |
| * parser.h (struct cp_parser): Add a context flag for |
| Objective-C++ message state. |
| |
| 2021-03-18 Martin Liska <mliska@suse.cz> |
| |
| PR c++/99617 |
| * coroutines.cc (struct var_nest_node): Init then_cl and else_cl |
| to NULL. |
| |
| 2021-03-17 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/97973 |
| * call.c (conv_unsafe_in_template_p): New. |
| (convert_like): Use it. |
| |
| 2021-03-17 Anthony Sharp <anthonysharp15@gmail.com> |
| Jason Merrill <jason@redhat.com> |
| |
| * semantics.c (get_class_access_diagnostic_decl): New |
| function that examines special cases when a parent |
| class causes a private access failure. |
| (enforce_access): Slightly modified to call function |
| above. |
| |
| 2021-03-16 Jason Merrill <jason@redhat.com> |
| |
| * tree.c (cp_tree_equal): Use real_identical. |
| |
| 2021-03-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99613 |
| * decl.c (expand_static_init): For thread guards, call __cxa_atexit |
| before calling __cxa_guard_release rather than after it. Formatting |
| fixes. |
| |
| 2021-03-16 Martin Liska <mliska@suse.cz> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/99108 |
| * call.c (get_function_version_dispatcher): Handle |
| DECL_LOCAL_DECL_P. |
| * decl.c (maybe_version_functions): Likewise. |
| (maybe_mark_function_versioned): New. |
| * name-lookup.c (push_local_extern_decl_alias): No longer static. |
| * name-lookup.h (push_local_extern_decl_alias): Adjust. |
| |
| 2021-03-16 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99496 |
| * module.cc (trees_out::decl_value): Adjust typedef streaming, |
| indicate whether it is a dependent alias. |
| (trees_in::decl_value): Likewise. Set as dependent alias, if it |
| is one. |
| |
| 2021-03-15 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/99047 |
| * coroutines.cc (expand_one_await_expression): If the |
| await_ready() expression is not a boolean then convert it |
| as required. |
| |
| 2021-03-15 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/98704 |
| * coroutines.cc (build_actor_fn): Make destroy index 1 |
| correspond to the abnormal unhandled_exception() exit. |
| Substitute the proxy for the resume index. |
| (coro_rewrite_function_body): Arrange to reset the resume |
| index and make done = true for a rethrown exception from |
| unhandled_exception (). |
| (morph_fn_to_coro): Adjust calls to build_actor_fn and |
| coro_rewrite_function_body. |
| |
| 2021-03-15 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/98480 |
| * coroutines.cc (replace_continue): Rewrite continue into |
| 'goto label'. |
| (await_statement_walker): Handle await expressions in the |
| initializer, condition and iteration expressions of for |
| loops. |
| |
| 2021-03-15 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/96749 |
| * coroutines.cc (flatten_await_stmt): Allow for the case |
| where a target expression variable only has uses in the |
| second part of a compound expression. |
| (maybe_promote_temps): Avoid emiting empty statements. |
| |
| 2021-03-15 Tobias Burnus <tobias@codesourcery.com> |
| |
| PR c++/99509 |
| * decl.c (cp_finish_decl): For 'omp declare target implicit' vars, |
| ensure that the varpool node is marked as offloadable. |
| |
| 2021-03-12 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99238 |
| * module.cc (depset::hash::add_binding_entity): Assert not |
| visited. |
| (depset::add::add_specializations): Likewise. |
| * name-lookup.c (name_lookup::dedup): New. |
| (name_lookup::~name_lookup): Assert not deduping. |
| (name_lookup::restore_state): Likewise. |
| (name_lookup::add_overload): Replace outlined code with dedup |
| call. |
| (name_lookup::add_value): Likewise. |
| (name_lookup::search_namespace_only): Likewise. |
| (name_lookup::adl_namespace_fns): Likewise. |
| (name_lookup::adl_class_fns): Likewise. |
| (name_lookup::search_adl): Likewise. Add clearing dedup call. |
| (name_lookup::search_qualified): Likewise. |
| (name_lookup::search_unqualified): Likewise. |
| |
| 2021-03-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99507 |
| * call.c (build_over_call): For immediate evaluation of functions |
| that return references, undo convert_from_reference effects before |
| calling cxx_constant_value and call convert_from_reference |
| afterwards. |
| |
| 2021-03-11 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99248 |
| * name-lookup.c (lookup_elaborated_type_1): Access slot not bind |
| when there's a binding vector. |
| * ptree.c (cxx_print_xnode): Lazy flags are no longer a thing. |
| |
| 2021-03-11 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99528 |
| * module.cc (enum merge_kind): Delete MK_type_tmpl_spec, |
| MK_decl_tmpl_spec. |
| (trees_in::decl_value): Adjust add_mergeable_specialization call. |
| (trees_out::get_merge_kind): Adjust detecting a partial template |
| instantiation. |
| (trees_out::key_mergeable): Adjust handling same. |
| (trees_in::key_mergeabvle): Likewise. |
| |
| 2021-03-10 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99423 |
| * module.cc (post_load_processing): Assert not gcable. |
| (laxy_load_pendings): Extend no-gc region around |
| post_load_processing. |
| |
| 2021-03-10 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99508 |
| * decl.c (make_rtl_for_nonlocal_decl): Propagate local-extern's |
| assembler name to the ns alias. |
| |
| 2021-03-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99459 |
| * coroutines.cc (build_co_await): Look through NOP_EXPRs in |
| build_special_member_call return value to find the CALL_EXPR. |
| Simplify. |
| |
| 2021-03-09 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99472 |
| * parser.c (cp_parser_diagnose_invalid_type_name): Clarify |
| that C++20 does not yet imply modules. |
| |
| 2021-03-08 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99436 |
| * name-lookup.c (get_cxx_dialect_name): Add cxx23. |
| |
| 2021-03-08 Nathan Sidwell <nathan@acm.org> |
| |
| * lex.c (module_token_filter::resume): Ignore module-decls inside |
| header-unit. |
| * parser.c (cp_parser_module_declaration): Reject in header-unit. |
| |
| 2021-03-08 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99285 |
| * cp-tree.h (match_mergeable_specialization) |
| (add_mergeable_specialization): Adjust parms. |
| * module.cc (trees_in::decl_value): Adjust |
| add_mergeable_specialization calls. |
| (trees_out::key_mergeable): Adjust match_mergeable_specialization |
| calls. |
| (specialization_add): Likewise. |
| * pt.c (match_mergeable_specialization): Do not insert. |
| (add_mergeable_specialization): Add to hash table here. |
| |
| 2021-03-06 Patrick Palka <ppalka@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99287 |
| * constexpr.c (cxx_eval_increment_expression): Pass lval when |
| evaluating the MODIFY_EXPR, and update 'mod' with the result of |
| this evaluation. Check *non_constant_p afterwards. For prefix |
| ops, just return 'mod'. |
| |
| 2021-03-06 Patrick Palka <ppalka@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/96330 |
| * pt.c (tsubst_copy) <case TEMPLATE_ID_EXPR>: Rename local |
| variable 'fn' to 'tmpl'. Handle a variable template-id by |
| calling lookup_template_variable. |
| |
| 2021-03-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99365 |
| * pt.c (unify) <case TEMPLATE_TYPE_PARM>: Pass targs as |
| outer_targs to do_auto_deduction. |
| (placeholder_type_constraint_dependent_p): Define. |
| (do_auto_deduction): When processing_template_decl != 0 |
| and context is adc_unify and we have constraints, pretend the |
| constraints are satisfied instead of punting. Otherwise don't |
| punt unless placeholder_type_constraint_dependent_p holds. |
| Add some clarifying sanity checks. Add a hack to add missing |
| outermost template levels to outer_args before checking |
| satisfaction. Don't substitute outer_targs into type if it's |
| already been done. |
| |
| 2021-03-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99374 |
| * call.c (standard_conversion): When converting pointers to |
| member, don't return NULL when the bases are equivalent but |
| incomplete. |
| |
| 2021-03-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99120 |
| * name-lookup.c (check_local_shadow): Check if the type of decl |
| is non-null before checking TYPE_PTR*. |
| |
| 2021-03-05 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99245 |
| * module.cc (module_state::write_cluster): Relax binding assert. |
| |
| 2021-03-05 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99377 |
| * pt.c (instantiate_decl): Call set_instantiating_module. |
| |
| 2021-03-05 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/98118 |
| * coroutines.cc (build_co_await): Use type_build_ctor_call() |
| to determine cases when a CTOR needs to be built. |
| (flatten_await_stmt): Likewise. |
| (morph_fn_to_coro): Likewise. |
| |
| 2021-03-05 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/95616 |
| * coroutines.cc (coro_diagnose_throwing_fn): New helper. |
| (coro_diagnose_throwing_final_aw_expr): New helper. |
| (build_co_await): Diagnose throwing final await expression |
| components. |
| (build_init_or_final_await): Diagnose a throwing promise |
| final_suspend() call. |
| |
| 2021-03-05 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/95615 |
| * coroutines.cc (struct param_info): Track parameter copies that need |
| a DTOR. |
| (coro_get_frame_dtor): New helper function factored from build_actor(). |
| (build_actor_fn): Use coro_get_frame_dtor(). |
| (morph_fn_to_coro): Track parameters that need DTORs on exception, |
| likewise the frame promise and the return object. On exception, run the |
| DTORs for these, destroy the frame and then rethrow the exception. |
| |
| 2021-03-05 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99389 |
| * pt.c (instantiate_class_template_1): Set instantiating module |
| here. |
| |
| 2021-03-05 Tobias Burnus <tobias@codesourcery.com> |
| |
| PR c/99137 |
| * parser.c (cp_parser_oacc_clause_async): Reject comma expressions. |
| |
| 2021-03-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88146 |
| PR c++/99362 |
| * cvt.c (convert_to_void): Revert 2019-10-17 changes. Clarify |
| comment. |
| |
| 2021-03-04 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99170 |
| * module.cc (class uintset): Delete. |
| (typedef attached_map_t): A hash map. |
| (attached_table): Use attached_map_t. Adjust uses ... |
| (trees_out::decl_value, trees_in::decl_value): ... here ... |
| (trees_out::key_mergeable): ... here ... |
| (trees_in::key_mergeable): ... here ... |
| (maybe_attach_decl): ... here ... |
| (direct_import): ... and here. |
| |
| 2021-03-04 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99170 |
| * cp-tree.h |
| * lex.c (cxx_dup_lang_specific_decl): Adjust for module_attached_p |
| rename. |
| * module.cc (class pending_key): New. |
| (default_hash_traits<pending_key>): New specialization. |
| (pending_map_t): New typedef. |
| (pending_table): Replace old table. |
| (trees_out::lang_decl_bools): Adjust. |
| (trees_in::lang_decl_bools): Adjust. |
| (trees_in::install_entity): Drop pending member and specialization |
| handling. |
| (find_pending_key): New. |
| (depset::hash::fiund_dependencies): Use it. |
| (pendset_lazy_load): Delete. |
| (module_state::write_cluster): Don't count pendings here. Bye |
| Duff's device-like thing. |
| (module_state::write_pendings): Reimplement. |
| (module_state::read_pendings): Reimplement. |
| (lazy_specializations_p): Delete. |
| (module_state::write): Adjust write_pendings call. |
| (lazy_load_pendings): New. |
| (lazy_load_specializations): Delete. |
| (lazy_load_members): Delete. |
| (init_modules): Adjust. |
| * name-lookup.c (maybe_lazily_declare): Call lazy_load_pendings |
| not lazy_load_members. |
| (note_pending_specializations): Delete. |
| (load_pending_specializations): Delete. |
| * name-lookup.h (BINDING_VECTR_PENDING_SPECIALIZATIONS_P): Delete. |
| (BINDING_VECTOR_PENDING_MEMBERS_P): Delete. |
| (BINDING_VECTR_PENDING_MEMBERS_P): Delete. |
| (note_pending_specializations): Delete. |
| (load_pending_specializations): Delete. |
| * pt.c (lookup_template_class_1): Call lazy_load_pendings not |
| lazy_load_specializations. |
| (instantiate_template_class_1): Likewise. |
| (instantiate_decl): Call lazy_load_pendings. |
| * typeck.c (complete_type): Likewise. |
| |
| 2021-03-03 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99170 |
| * module.cc (post_load_decls): New. |
| (lazy_snum, recursive_lazy): Move earlier. |
| (module_state::read_cluster): Push cloning onto post_load_decls. |
| (post_load_processing): New. Do the cloning here. |
| (module_state::read_inits): Call post_load_processing. |
| (module_state::read_language): Likewise. |
| (lazy_load_binding, lazy_load_specializations): Likewise |
| (lazy_load_members): Likewise |
| |
| 2021-03-03 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99170 |
| * module.cc (trees_out::decl_value): Stream specialization keys |
| after decl. |
| (trees_in::decl_value): Stream them back and insert after |
| completing the decl. |
| (trees_out::key_mergeable): Drop some streaming here ... |
| (trees_in::key_mergeable): ... and here. Don't insert into |
| specialization tables. |
| |
| 2021-03-03 Patrick Palka <ppalka@redhat.com> |
| |
| * constraint.cc (struct sat_info): Document the different |
| meanings of noisy() and diagnose_unsatisfaction_p() during |
| satisfaction and requires-expression evaluation. |
| (tsubst_valid_expression_requirement): Take a sat_info instead |
| of a subst_info. Perform the substitution quietly first. Fold |
| in error-replaying code from diagnose_valid_expression. |
| (tsubst_simple_requirement): Take a sat_info instead of a |
| subst_info. |
| (tsubst_type_requirement_1): New. Fold in error-replaying code |
| from diagnose_valid_type. |
| (tsubst_type_requirement): Use the above. Take a sat_info |
| instead of a subst_info. |
| (tsubst_compound_requirement): Likewise. Fold in |
| error-replaying code from diagnose_compound_requirement. |
| (tsubst_nested_requirement): Take a sat_info instead of a |
| subst_info. Fold in error-replaying code from |
| diagnose_nested_requirement. |
| (tsubst_requirement): Take a sat_info instead of a subst_info. |
| (tsubst_requires_expr): Split into two versions, one that takes |
| a sat_info argument and another that takes a complain and |
| in_decl argument. Remove outdated documentation. Document the |
| effects of the sat_info argument. Don't short-circuit |
| processing of requirements when diagnosing unsatisfaction, |
| mirroring diagnose_requires_expr. |
| (satisfy_nondeclaration_constraint) <case REQUIRES_EXPR>: Remove |
| assert, and se the three-parameter version of tsubst_requires_expr. |
| (diagnose_trait_expr): Make static. Take a template argument |
| vector instead of a parameter mapping. |
| (diagnose_valid_expression): Remove. |
| (diagnose_valid_type): Remove. |
| (diagnose_simple_requirement): Remove. |
| (diagnose_compound_requirement): Remove. |
| (diagnose_type_requirement): Remove. |
| (diagnose_nested_requirement): Remove. |
| (diagnose_requirement): Remove. |
| (diagnose_requires_expr): Remove. |
| (diagnose_atomic_constraint): Take a sat_info instead of a |
| subst_info. Adjust call to diagnose_trait_expr. Call |
| tsubst_requires_expr instead of diagnose_requires_expr. |
| (diagnose_constraints): Remove special casing of REQUIRES_EXPR |
| and just always call constraint_satisfaction_value. |
| |
| 2021-03-03 Patrick Palka <ppalka@redhat.com> |
| |
| * constexpr.c (cxx_eval_call_expression): Adjust call to |
| evaluate_concept_check. |
| (cxx_eval_constant_expression) <case REQUIRES_EXPR>: Use |
| evaluate_requires_expression instead of |
| satisfy_constraint_expression. |
| <case TEMPLATE_ID_EXPR>: Adjust call to evaluate_concept_check. |
| * constraint.cc (struct sat_info): Adjust comment about which |
| satisfaction entrypoints use noisy-unsat. |
| (normalize_template_requirements): Remove (and adjust callers |
| appropriately). |
| (normalize_nontemplate_requirements): Likewise. |
| (tsubst_nested_requirement): Use constraint_satisfaction_value |
| instead of satisfy_constraint_expression, which'll do the |
| noisy replaying of ill-formed quiet satisfaction for us. |
| (decl_satisfied_cache): Adjust comment. |
| (satisfy_constraint): Rename to ... |
| (satisfy_normalized_constraints): ... this. |
| (satisfy_associated_constraints): Remove (and make its |
| callers check for dependent arguments). |
| (satisfy_constraint_expression): Rename to ... |
| (satisfy_nondeclaration_constraints): ... this. Assert that |
| 'args' is empty when 't' is a concept-id. Removing handling |
| bare constraint-expressions, and handle REQUIRES_EXPRs |
| specially. Adjust comment accordingly. |
| (satisfy_declaration_constraints): Assert in the two-parameter |
| version that 't' is not a TEMPLATE_DECL. Adjust following |
| removal of normalize_(non)?template_requirements and |
| satisfy_asociated_constraints. |
| (constraint_satisfaction_value): Combine the two- and |
| three-parameter versions in the natural way. |
| (constraints_satisfied_p): Combine the one- and two-parameter |
| versions in the natural way. Improve documentation. |
| (evaluate_requires_expr): Define. |
| (evaluate_concept_check): Remove 'complain' parameter. Use |
| constraint_satisfaction_value instead of |
| satisfy_constraint_expression. |
| (diagnose_nested_requirement): Adjust following renaming of |
| satisfy_constraint_expression. |
| (diagnose_constraints): Handle REQUIRES_EXPR by going through |
| diagnose_requires_expr directly instead of treating it as a |
| constraint-expression. Improve documentation. |
| * cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Adjust call |
| to evaluate_concept_check. |
| <case REQUIRES_EXPR>: Use evaluate_requires_expr instead of |
| constraints_satisfied_p. |
| <case TEMPLATE_ID_EXPR>: Adjust call to evaluate_concept_check. |
| * cp-tree.h (evaluate_requires_expr): Declare. |
| (evaluate_concept_check): Remove tsubst_flag_t parameter. |
| (satisfy_constraint_expression): Remove declaration. |
| (constraints_satisfied_p): Remove one-parameter declaration. |
| Add a default argument to the two-parameter declaration. |
| * cvt.c (convert_to_void): Adjust call to |
| evaluate_concept_check. |
| |
| 2021-03-03 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/82959 |
| * call.c (op_is_ordered): Handle TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR |
| and COMPOUND_EXPR. |
| |
| 2021-03-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/97034 |
| PR c++/99009 |
| * pt.c (build_deduction_guide): Use INNERMOST_TEMPLATE_ARGS. |
| (maybe_aggr_guide): Use the original template type where needed. In |
| a class member template, partially instantiate the result of |
| collect_ctor_idx_types. |
| (do_class_deduction): Defer the deduction until the enclosing |
| scope is non-dependent. |
| |
| 2021-03-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/95675 |
| * call.c (build_temp): Wrap a CALL_EXPR in a TARGET_EXPR |
| if it didn't get one before. |
| |
| 2021-03-03 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99344 |
| * module.cc (trees_out::decl_node): Small refactor. |
| (depset::hash::add_binding_entity): Return true on meeting an |
| import. Set namespace's import here. |
| (module_state:write_namespaces): Inform of purview too. |
| (module_state:read_namespaces): Adjust. |
| * name-lookup.c (implicitly_export_namespace): Delete. |
| (do_pushdecl): Don't call it. |
| (push_namespace): Likewise, set purview. |
| (add_imported_namespace): Reorder parms. |
| * name-lookup.h (add_imported_namespace): Alter param ordering. |
| |
| 2021-03-02 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/99251 |
| * class.c (build_base_path): Call build_if_nonnull. |
| * cp-tree.h (build_if_nonnull): Declare. |
| * rtti.c (ifnonnull): Rename... |
| (build_if_nonnull): ...to this. Set no-warning bit on COND_EXPR. |
| (build_dynamic_cast_1): Adjust to name change. |
| |
| 2021-03-02 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/96443 |
| PR c++/96960 |
| * constraint.cc (type_deducible_p): Don't substitute into the |
| constraints, and instead just pass 'args' to do_auto_deduction |
| as the outer template arguments. |
| (tsubst_parameter_mapping): Remove confused code for handling |
| placeholder type arguments. |
| (normalize_placeholder_type_constraint): Define. |
| (satisfy_constraint_expression): Use it to handle placeholder |
| 'auto' types. |
| * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Define. |
| (PLACEHOLDER_TYPE_CONSTRAINTS): Redefine in terms of the above. |
| * pt.c (tsubst) <case TEMPLATE_TYPE_PARM>: Use |
| PLACEHOLDER_TYPE_CONSTRAINTS_INFO instead. |
| (make_constrained_placeholder_type): Set |
| PLACEHOLDER_TYPE_CONSTRAINTS_INFO instead. |
| (do_auto_deduction): Clarify comments about the outer_targs |
| parameter. Rework satisfaction of a placeholder type constraint |
| to pass in the complete set of template arguments directly to |
| constraints_satisfied_p. |
| (splice_late_return_type): Use PLACEHOLDER_TYPE_CONSTRAINTS_INFO |
| instead. Also rebuild the the constraint info on the new auto. |
| |
| 2021-03-02 Patrick Palka <ppalka@redhat.com> |
| |
| * constraint.cc (build_parameter_mapping): Rely on the caller to |
| determine the in-scope template parameters. |
| (norm_info::norm_info): Delegate the tsubst_flags_t constructor |
| to the two-parameter constructor. In the two-parameter |
| constructor, fold in the definition of make_context, set |
| initial_parms appropriately, and don't set the now-removed |
| orig_decl member. |
| (norm_info::make_context): Remove, now that its only use is |
| inlined into the caller. |
| (norm_info::update_context): Adjust call to |
| build_parameter_mapping to pass in the relevant set of in-scope |
| template parameters. |
| (norm_info::ctx_parms): Define this member function. |
| (norm_info::context): Initialize to NULL_TREE. |
| (norm_info::orig_decl): Remove this data member. |
| (norm_info::initial_parms): Define this data member. |
| (normalize_atom): Adjust call to build_parameter_mapping to pass |
| in the relevant set of in-scope template parameters. Use |
| info.initial_parms instead of info.orig_decl. |
| (normalize_constraint_expression): Take a norm_info object |
| instead of a bool. Cache the result of normalization. |
| (tsubst_nested_requirement): Call satisfy_constraint_expression |
| instead of satisfy_constraint, so that we normalize on demand. |
| (satisfy_constraint_expression): Handle a NESTED_REQ argument. |
| Adjust call to normalize_constraint_expression. |
| (finish_nested_requirement): Set the TREE_TYPE of the NESTED_REQ |
| to current_template_parms. |
| (diagnose_nested_requirements): Go through |
| satisfy_constraint_expression, as with tsubst_nested_requirement. |
| |
| 2021-03-02 Patrick Palka <ppalka@redhat.com> |
| |
| * constraint.cc (tsubst_parameter_mapping): Canonicalize the |
| arguments of a substituted TYPE_ARGUMENT_PACK even if we've |
| started with a TYPE_ARGUMENT_PACK. |
| (finish_requires_expr): Don't set DECL_CONTEXT and |
| CONSTRAINT_VAR_P on each of the introduced parameters here. |
| * parser.c (cp_parser_requirement_parameter_list): Instead set |
| these fields earlier, here. |
| * pt.c (do_auto_deduction): Canonicalize the result of |
| do_auto_deduction. Pass 'complain' to finish_decltype_type. |
| |
| 2021-03-02 Patrick Palka <ppalka@redhat.com> |
| |
| * constraint.cc (tsubst_simple_requirement): Just return |
| boolean_true_node on success. |
| (tsubst_type_requirement): Likewise. |
| (tsubst_compound_requirement): Likewise. |
| (tsubst_nested_requirement): Likewise. |
| (tsubst_requirement_body): Remove. |
| (check_constaint_variables): Rename to ... |
| (check_constraint_variables): ... this. |
| (tsubst_constraint_variables): Adjust. |
| (tsubst_requires_expr): Fold tsubst_requirement_body into here. |
| |
| 2021-03-01 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99294 |
| * class.c (fixup_type_variants): Propagate mode, precision, |
| alignment & emptiness. |
| * module.cc (trees_out::type_node): Use TYPE_ALIGN_RAW. |
| (trees_in::tree_node): Rematerialize alignment here. |
| |
| 2021-02-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/90333 |
| * parser.c (cp_parser_lambda_declarator_opt): Accept GNU attributes |
| between () and ->. |
| |
| 2021-02-26 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_lambda_declarator_opt): Implement |
| P1102R2 - Down with ()! Make ()s optional before lambda specifiers |
| for -std={c,gnu}++2b or with pedwarn in earlier versions. |
| |
| 2021-02-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/95451 |
| * lambda.c (is_lambda_ignored_entity): Before checking for |
| LAMBDA_FUNCTION_P, use OVL_FIRST. Drop FUNCTION_DECL check. |
| |
| 2021-02-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98810 |
| * pt.c (tsubst_copy) [VIEW_CONVERT_EXPR]: Add const |
| to a class non-type template argument that needs it. |
| |
| 2021-02-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98990 |
| * pt.c (splice_late_return_type): Rebuild the entire return type |
| if we have to adjust the level of an auto within. |
| (type_uses_auto): Adjust call to find_type_usage. |
| * type-utils.h (find_type_usage): Revert r10-6571 change that |
| made this function return a pointer to the auto node. |
| |
| 2021-02-25 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99213 |
| PR c++/94521 |
| * error.c (dump_scope): Pass TFF_NO_TEMPLATE_BINDINGS instead of |
| TFF_NO_FUNCTION_ARGUMENTS when dumping a function scope. |
| |
| 2021-02-25 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99103 |
| * pt.c (is_spec_or_derived): Drop cv-qualifiers from 'etype'. |
| (maybe_aggr_guide): Fix order of arguments to is_spec_or_derived. |
| |
| 2021-02-25 Marek Polacek <polacek@redhat.com> |
| |
| DR 1312 |
| PR c++/99176 |
| * constexpr.c (is_std_construct_at): New overload. |
| (is_std_allocator_allocate): New overload. |
| (cxx_eval_call_expression): Use the new overloads. |
| (cxx_eval_constant_expression): Reject casting |
| from void * as per DR 1312. Don't check can_convert. |
| |
| 2021-02-25 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/97587 |
| * coroutines.cc (struct param_info): Track rvalue refs. |
| (morph_fn_to_coro): Track rvalue refs, and call the promise |
| CTOR with the frame copy of passed parms. |
| |
| 2021-02-25 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/95822 |
| * coroutines.cc (morph_fn_to_coro): Unconditionally remove any |
| set throwing_cleanup marker. |
| |
| 2021-02-25 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99166 |
| * module.cc (module_state::inform_cmi_p): Renamed field. |
| (module_state::do_import): Adjust. |
| (init_modules, finish_module_processing): Likewise. |
| (handle_module_option): Likewise. |
| |
| 2021-02-25 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98318 |
| * mapper-client.cc (module_client::open_module_client): Fix typo |
| of fd init. |
| |
| 2021-02-24 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98718 |
| * module.cc (ool): New indirection vector. |
| (loc_spans::maybe_propagate): Location is not optional. |
| (loc_spans::open): Likewise. Assert monotonically advancing. |
| (module_for_ordinary_loc): Use ool indirection vector. |
| (module_state::write_prepare_maps): Do not count empty macro |
| expansions. Elide empty spans. |
| (module_state::write_macro_maps): Skip empty expansions. |
| (ool_cmp): New qsort comparator. |
| (module_state::write): Create and destroy ool vector. |
| (name_pending_imports): Fix dump push/pop. |
| (preprocess_module): Likewise. Add more dumping. |
| (preprocessed_module): Likewise. |
| |
| 2021-02-24 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/96251 |
| * coroutines.cc (coro_common_keyword_context_valid_p): Suppress |
| error reporting when instantiating for a constexpr. |
| |
| 2021-02-23 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99208 |
| * decl.c (name_unnamed_type): Check DECL identity, not IDENTIFIER |
| identity. |
| |
| 2021-02-23 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/95468 |
| * pt.c (tsubst_copy_and_build) <case BASELINK>: New case, copied |
| over from tsubst_copy. |
| |
| 2021-02-23 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.c (instantiation_dependent_expression_p): Check |
| processing_template_decl before calling |
| potential_constant_expression. |
| |
| 2021-02-22 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99174 |
| * module.cc (struct module_state): Add visited_p flag. |
| (name_pending_imports): Use it to avoid duplicate requests. |
| (preprocess_module): Don't read preprocessor state if we failed to |
| load a module's config. |
| |
| 2021-02-22 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99153 |
| * decl.c (duplicate_decls): Move DECL_MODULE_IMPORT_P propagation |
| to common-path. |
| * module.cc (set_defining_module): Add assert. |
| |
| 2021-02-19 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98741 |
| * module.cc (pending_imports): New. |
| (declare_module): Adjust test condition. |
| (name_pending_imports): New. |
| (preprocess_module): Reimplement using pending_imports. |
| (preprocessed_module): Move name-getting to name_pending_imports. |
| * name-lookup.c (append_imported_binding_slot): Assert module |
| ordering is increasing. |
| |
| 2021-02-19 Nathan Sidwell <nathan@acm.org> |
| |
| * module.cc (note_cmis): New. |
| (struct module_state): Add inform_read_p bit. |
| (module_state::do_import): Inform of CMI location, if enabled. |
| (init_modules): Canonicalize note_cmis entries. |
| (handle_module_option): Handle -flang-info-module-read=FOO. |
| |
| 2021-02-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96926 |
| * call.c (perfect_conversion_p): Limit rvalueness |
| test to reference bindings. |
| |
| 2021-02-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96926 |
| * call.c (perfect_conversion_p): New. |
| (perfect_candidate_p): New. |
| (add_candidates): Ignore templates after a perfect non-template. |
| |
| 2021-02-18 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99023 |
| * module.cc (canonicalize_header_name): Use |
| cpp_probe_header_unit. |
| (maybe_translate_include): Fix note_includes comparison. |
| (init_modules): Fix note_includes string termination. |
| |
| 2021-02-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99132 |
| * cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Use |
| cp_get_callee_fndecl_nofold instead of cp_get_callee_fndecl to check |
| for immediate function calls. |
| |
| 2021-02-17 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99023 |
| * module.cc (struct macro_export): Add GTY markers. |
| (macro_exports): Likewise, us a va_gc Vector. |
| |
| 2021-02-17 Jakub Jelinek <jakub@redhat.com> |
| |
| PR sanitizer/99106 |
| * init.c (build_zero_init_1): For flexible array members just return |
| NULL_TREE instead of returning empty CONSTRUCTOR with non-complete |
| ARRAY_TYPE. |
| |
| 2021-02-17 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99116 |
| * name-lookup.c (do_pushdecl): Don't peek under template_parm |
| bindings here ... |
| (set_identifier_type_value_with_scope): ... or here. |
| (do_pushtag): Only set_identifier_type_value_with_scope at |
| non-class template parm scope, and use parent scope. |
| |
| 2021-02-17 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99071 |
| * name-lookup.c (maybe_record_mergeable_decl): Deref the correct |
| pointer. |
| |
| 2021-02-17 Patrick Palka <ppalka@redhat.com> |
| |
| PR debug/96997 |
| PR c++/94034 |
| * tree.c (build_aggr_init_expr): Revert r10-7718 change. |
| |
| 2021-02-12 Nathan Sidwell <nathan@acm.org> |
| |
| * module.cc (module_state::write_cluster): Check bindings for |
| imported using-decls. |
| |
| 2021-02-12 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99040 |
| * module.cc (trees_in::decl_value): Call add_module_namespace_decl |
| for new namespace-scope entities. |
| (module_state::read_cluster): Don't call add_module_decl here. |
| * name-lookup.h (add_module_decl): Rename to ... |
| (add_module_namespace_decl): ... this. |
| * name-lookup.c (newbinding_bookkeeping): Move into ... |
| (do_pushdecl): ... here. Its only remaining caller. |
| (add_module_decl): Rename to ... |
| (add_module_namespace_decl): ... here. Add checking-assert for |
| circularity. Don't call newbinding_bookkeeping, just extern_c |
| checking and incomplete var checking. |
| |
| 2021-02-12 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99039 |
| PR c++/99040 |
| * cp-tree.h (CPTI_GLOBAL_TYPE): Delete. |
| (global_type_node): Delete. |
| (IDENTIFIER_TYPE_VALUE): Delete. |
| (IDENTIFIER_HAS_TYPE_VALUE): Delete. |
| (get_type_value): Delete. |
| * name-lookup.h (identifier_type_value): Delete. |
| * name-lookup.c (check_module_override): Don't |
| SET_IDENTIFIER_TYPE_VALUE here. |
| (do_pushdecl): Nor here. |
| (identifier_type_value_1, identifier_type_value): Delete. |
| (set_identifier_type_value_with_scope): Only |
| SET_IDENTIFIER_TYPE_VALUE for local and class scopes. |
| (pushdecl_nanmespace_level): Remove shadow stack nadgering. |
| (do_pushtag): Use REAL_IDENTIFIER_TYPE_VALUE. |
| * call.c (check_dtor_name): Use lookup_name. |
| * decl.c (cxx_init_decl_processing): Drop global_type_node. |
| * decl2.c (cplus_decl_attributes): Don't SET_IDENTIFIER_TYPE_VALUE |
| here. |
| * init.c (get_type_value): Delete. |
| * pt.c (instantiate_class_template_1): Don't call pushtag or |
| SET_IDENTIFIER_TYPE_VALUE here. |
| (tsubst): Assert never an identifier. |
| (dependent_type_p): Drop global_type_node assert. |
| * typeck.c (error_args_num): Don't use IDENTIFIER_HAS_TYPE_VALUE |
| to determine ctorness. |
| |
| 2021-02-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/97742 |
| * parser.c (cp_parser_requirement_seq): Stop iterating after reaching |
| CPP_EOF. |
| |
| 2021-02-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97246 |
| PR c++/94546 |
| * pt.c (extract_fnparm_pack): Check DECL_PACK_P here. |
| (register_parameter_specializations): Not here. |
| |
| 2021-02-11 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/95888 |
| * pt.c (lookup_template_class_1): Pass tf_none to tsubst when looking |
| for the partial instantiation. |
| |
| 2021-02-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/99033 |
| * init.c (build_zero_init_1): Handle zero initialiation of |
| flexible array members like initialization of [0] arrays. |
| Use integer_minus_onep instead of comparison to integer_minus_one_node |
| and integer_zerop instead of comparison against size_zero_node. |
| Formatting fixes. |
| |
| 2021-02-11 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99063 |
| * semantics.c (finish_do_stmt): Check for unexpanded parameter packs. |
| |
| 2021-02-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/97582 |
| * name-lookup.c (op_unqualified_lookup): Handle an ambiguous |
| lookup result by discarding it if the first element is a |
| class-scope declaration, otherwise return it. |
| (push_operator_bindings): Handle an ambiguous lookup result by |
| doing push_local_binding on each element in the list. |
| |
| 2021-02-11 Marek Polacek <polacek@redhat.com> |
| |
| * parser.c (cp_parser_selection_statement): Use vec_free. |
| |
| 2021-02-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98988 |
| PR c++/99031 |
| * constexpr.c: Include cgraph.h. |
| (cxx_eval_call_expression): Call varpool_node::finalize_decl on |
| heap artificial vars. |
| (cxx_eval_outermost_constant_expr): Remove varpool nodes for |
| heap artificial vars. |
| |
| 2021-02-10 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/99030 |
| * pt.c (tsubst_copy) [VAR_DECL]: For a DECL_LOCAL_DECL_P T is the |
| answer if there's no local specialization. |
| |
| 2021-02-09 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98944 |
| * module.cc (module_state::is_rooted): Rename to ... |
| (module_state::has_location): ... here. Adjust callers. |
| (module_state::read_partitions): Adjust validity check. |
| Don't overwrite a known location. |
| |
| 2021-02-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96905 |
| * pt.c (mark_decl_instantiated): Exit early if consteval. |
| |
| 2021-02-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98326 |
| PR c++/20408 |
| * cp-gimplify.c (simple_empty_class_p): Don't touch an invisiref |
| parm. |
| |
| 2021-02-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98994 |
| PR c++/97566 |
| * constexpr.c (cxx_eval_store_expression): Only skip empty fields in |
| RECORD_TYPE. |
| |
| 2021-02-08 Nathan Sidwell <nathan@acm.org> |
| |
| * decl.c (start_cleanup_fn): Push function into |
| namespace. |
| |
| 2021-02-08 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98531 |
| * cp-tree.h (push_abi_namespace, pop_abi_namespace): Declare. |
| * decl.c (push_abi_namespace, pop_abi_namespace): Moved |
| from rtti.c, add default namespace arg. |
| (check_redeclaration_exception_specification): Allow a lazy |
| builtin's eh spec to differ from an lready-declared user |
| declaration. |
| (declare_global_var): Use push/pop_abi_namespace. |
| (get_atexit_node): Push the fndecl into a namespace. |
| * rtti.c (push_abi_namespace, pop_abi_namespace): Moved to |
| decl.c. |
| |
| 2021-02-08 Marek Polacek <polacek@redhat.com> |
| |
| * cp-tree.h (CLASSTYPE_TI_TEMPLATE): Fix typo. |
| |
| 2021-02-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98947 |
| * call.c (build_conditional_expr_1): Don't call mark_lvalue_use |
| on arg2/arg3. |
| * expr.c (mark_use) <case MODIFY_EXPR>: Don't check read_p when |
| issuing the -Wvolatile warning. Only set TREE_THIS_VOLATILE if |
| a warning was emitted. |
| |
| 2021-02-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/96462 |
| * name-lookup.c (lookup_using_decl): Hoist the destructor check. |
| |
| 2021-02-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/97878 |
| * decl.c (check_array_initializer): For structured bindings, require |
| the array type to be complete. |
| |
| 2021-02-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98717 |
| * constraint.cc (build_concept_check_arguments): Remove assert. |
| (build_concept_check): Allow empty args. |
| |
| 2021-02-04 Tom Greenslade (thomgree) <thomgree@cisco.com> |
| |
| PR c++/90926 |
| * call.c (can_convert_array): Extend to handle all valid aggregate |
| initializers of an array; including by string literals, not just by |
| brace-init-list. |
| (build_aggr_conv): Call can_convert_array more often, not just in |
| brace-init-list case. |
| * typeck2.c (array_string_literal_compatible_p): New function. |
| (digest_init_r): call array_string_literal_compatible_p |
| * cp-tree.h: (array_string_literal_compatible_p): Declare. |
| |
| 2021-02-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98802 |
| * pt.c (do_class_deduction): No aggregate guide if any_dguides_p. |
| |
| 2021-02-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/95192 |
| * pt.c (tsubst_attribute): Handle error. |
| (apply_late_template_attributes): Return false on error. |
| (tsubst_function_decl): Check its return value. |
| (tsubst_decl): Likewise. |
| (push_template_decl): Assert current_template_parms. |
| (tsubst_template_decl): Set current_template_parms. |
| |
| 2021-02-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98951 |
| * call.c (struct z_candidate): Mark rewritten and reversed as const. |
| (struct NonPublicField): Mark operator() as const. |
| (struct NonTrivialField): Likewise. |
| |
| 2021-02-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98926 |
| PR c++/98570 |
| * pt.c (spec_hasher::equal): Set processing_template_decl. |
| * Make-lang.in (check-g++-strict-gc): Add --param |
| hash-table-verification-limit=10000. |
| |
| 2021-02-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98899 |
| * parser.c (cp_parser_class_specifier_1): Use any possible |
| DEFPARSE_INSTANTIATIONS to update DEFERRED_NOEXCEPT_PATTERN. |
| (cp_parser_save_noexcept): Initialize DEFPARSE_INSTANTIATIONS. |
| * pt.c (tsubst_exception_specification): Stash new_specs into |
| DEFPARSE_INSTANTIATIONS. |
| * tree.c (fixup_deferred_exception_variants): Use |
| UNPARSED_NOEXCEPT_SPEC_P. |
| |
| 2021-02-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98929 |
| PR c++/96199 |
| * error.c (dump_expr): Ignore dummy object. |
| * pt.c (tsubst_baselink): Handle dependent scope. |
| |
| 2021-02-01 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98295 |
| * constexpr.c (cxx_eval_array_reference): Also set |
| new_ctx.object when setting new_ctx.ctor. |
| |
| 2021-02-01 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98355 |
| * parser.c (cp_parser_has_attribute_expression): Use |
| uses_template_parms instead of type_dependent_expression_p. |
| |
| 2021-02-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98570 |
| * cp-tree.h: Declare it. |
| * pt.c (comparing_dependent_aliases): New flag. |
| (template_args_equal, spec_hasher::equal): Set it. |
| (dependent_alias_template_spec_p): Assert that we don't |
| get non-types other than error_mark_node. |
| (instantiate_alias_template): SET_TYPE_STRUCTURAL_EQUALITY |
| on complex alias specializations. Set TYPE_DEPENDENT_P here. |
| (tsubst_decl): Not here. |
| * module.cc (module_state::read_cluster): Set |
| comparing_dependent_aliases instead of |
| comparing_specializations. |
| * tree.c (cp_tree_equal): Remove comparing_specializations |
| module handling. |
| * typeck.c (structural_comptypes): Adjust. |
| (comptypes): Remove comparing_specializations handling. |
| |
| 2021-01-29 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98843 |
| * module.cc (module_state_config): Add num_entities field. |
| (module_state::read_entities): The entity_ary span is |
| already allocated. |
| (module_state::write_config): Write num_entities. |
| (module_state::read_config): Read num_entities. |
| (module_state::write): Set config's num_entities. |
| (module_state::read_initial): Allocate the entity ary |
| span here. |
| (module_state::read_language): Do not set entity_lwm |
| here. |
| |
| 2021-01-29 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/96137 |
| * parser.c (cp_parser_class_name): If parser->scope is |
| error_mark_node, return it, otherwise continue. |
| |
| 2021-01-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98841 |
| * typeck.c (build_x_indirect_ref): For *this, return current_class_ref. |
| |
| 2021-01-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/33661 |
| PR c++/98847 |
| * decl.c (cp_finish_decl): For register vars with asmspec in templates |
| call set_user_assembler_name and set DECL_HARD_REGISTER. |
| * pt.c (tsubst_expr): When instantiating DECL_HARD_REGISTER vars, |
| pass asmspec_tree to cp_finish_decl. |
| |
| 2021-01-28 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98770 |
| * module.cc (trees_out::decl_value): Swap is_typedef & TYPE_NAME |
| check order. |
| (trees_in::decl_value): Do typedef frobbing only when installing |
| a new typedef, adjust is_matching_decl call. Swap is_typedef |
| & TYPE_NAME check. |
| (trees_in::is_matching_decl): Add is_typedef parm. Adjust variable |
| names and deal with typedef checking. |
| |
| 2021-01-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97874 |
| * name-lookup.c (lookup_using_decl): Clean up handling |
| of dependency and inherited constructors. |
| (finish_nonmember_using_decl): Handle DECL_DEPENDENT_P. |
| * pt.c (tsubst_expr): Handle DECL_DEPENDENT_P. |
| |
| 2021-01-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97474 |
| * call.c (type_passed_as): Don't mark invisiref restrict. |
| |
| 2021-01-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97566 |
| PR c++/98463 |
| * class.c (layout_class_type): An empty field gets size 0. |
| (is_empty_field): New. |
| (check_bases): Check it. |
| * cp-tree.h (is_empty_field): Declare it. |
| * constexpr.c (cxx_eval_store_expression): Check it. |
| (cx_check_missing_mem_inits): Likewise. |
| * init.c (perform_member_init): Likewise. |
| * typeck2.c (process_init_constructor_record): Likewise. |
| |
| 2021-01-25 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/98646 |
| * cvt.c (cp_fold_convert): Propagate TREE_NO_WARNING. |
| |
| 2021-01-25 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98463 |
| * constexpr.c (get_or_insert_ctor_field): Add check. |
| (cxx_eval_store_expression): Handle discontinuity of refs. |
| |
| 2021-01-23 Anthony Sharp <anthonysharp15@gmail.com> |
| |
| * call.c (complain_about_access): Altered function. |
| * cp-tree.h (complain_about_access): Changed parameters of function. |
| (get_parent_with_private_access): Declared new function. |
| * search.c (get_parent_with_private_access): Defined new function. |
| * semantics.c (enforce_access): Modified function. |
| * typeck.c (complain_about_unrecognized_member): Updated function |
| arguments in complain_about_access. |
| |
| 2021-01-23 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/97399 |
| * cp-tree.h (shared_member_p): Adjust declaration. |
| * parser.c (cp_parser_init_declarator): If the storage class |
| specifier is sc_static, pass true for static_p to |
| cp_parser_declarator. |
| (cp_parser_direct_declarator): Don't do inject_this_parm when |
| the declarator is a friend. |
| * search.c (shared_member_p): Change return type to bool and |
| adjust function body accordingly. Return false for a dependent |
| USING_DECL instead of aborting. |
| * semantics.c (finish_qualified_id_expr): Rely on shared_member_p |
| even when type-dependent. |
| |
| 2021-01-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/96623 |
| * parser.c (inject_parm_decls): Remove a redundant assignment. |
| (cp_parser_class_specifier_1): Clear current_class_{ptr,ref} |
| before calling inject_parm_decls. |
| |
| 2021-01-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98744 |
| * call.c (make_base_init_ok): Use DECL_HAS_VTT_PARM_P. |
| |
| 2021-01-22 Jakub Jelinek <jakub@redhat.com> |
| |
| PR sanitizer/95693 |
| * init.c (build_zero_init_1): Revert the 2018-03-06 change to |
| return build_zero_cst for reference types. |
| * typeck2.c (process_init_constructor_record): Instead call |
| build_zero_cst here during error recovery instead of build_zero_init. |
| |
| 2021-01-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98545 |
| * mangle.c (write_member_name): Emit abi_warn_or_compat_version_crosses |
| warnings regardless of abi_version_at_least. |
| (write_expression): When the expression is a dependent name |
| and an operator name, write "on" before writing its name. |
| |
| 2021-01-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/97966 |
| * pt.c (instantiate_class_template_1): Instantiate members |
| marked with attribute used only after we're done instantiating |
| the class. |
| |
| 2021-01-21 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/71879 |
| * semantics.c (finish_decltype_type): Set up a cp_unevaluated |
| sentinel at the start of the function. Remove a now-redundant |
| manual adjustment of cp_unevaluated_operand. |
| |
| 2021-01-21 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98624 |
| * module.cc (depset::hash::find_dependencies): Add |
| module arg. |
| (trees_out::core_vals): Check state before calling |
| write_location. |
| (sort_cluster, module_state::write): Adjust |
| find_dependencies call. |
| |
| 2021-01-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98672 |
| * constexpr.c (check_for_return_continue_data): Add break_stmt member. |
| (check_for_return_continue): Also look for BREAK_STMT. Handle |
| SWITCH_STMT by ignoring break_stmt from its body. |
| (potential_constant_expression_1) <case FOR_STMT>, |
| <case WHILE_STMT>: If the condition isn't constant true, check if |
| the loop body can contain a return stmt. |
| <case SWITCH_STMT>: Adjust check_for_return_continue_data initializer. |
| <case IF_STMT>: If recursion with tf_none is successful, |
| merge *jump_target from the branches - returns with highest priority, |
| breaks or continues lower. If then branch is potentially constant and |
| doesn't return, check the else branch if it could return, break or |
| continue. |
| |
| 2021-01-21 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98530 |
| * name-lookup.c (lookup_class_binding): Rearrange a stat-hack. |
| |
| 2021-01-20 Nathan Sidwell <nathan@acm.org> |
| |
| * module.cc (bytes_in::i, bytes_in::wi): Avoid left shift of |
| signed type. |
| |
| 2021-01-20 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/95434 |
| * pt.c (tsubst) <case TEMPLATE_TYPE_PARM>: If tsubsting |
| CLASS_PLACEHOLDER_TEMPLATE yields a TEMPLATE_TEMPLATE_PARM, |
| adjust to its TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL. |
| |
| 2021-01-20 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/82613 |
| * parser.c (cp_parser_class_head): Defer access checking when |
| parsing the base-clause until all bases are seen and attached |
| to the class type. |
| * pt.c (instantiate_class_template): Likewise when substituting |
| into dependent bases. |
| |
| 2021-01-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98742 |
| * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_DETACH>: If |
| error_operand_p, remove clause without further checking. Check |
| for non-NULL TYPE_NAME. |
| |
| 2021-01-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98659 |
| * pt.c (maybe_instantiate_noexcept): Return false if FN is |
| error_mark_node. |
| |
| 2021-01-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98687 |
| * name-lookup.c (push_using_decl_bindings): New, broken out of... |
| (finish_nonmember_using_decl): ...here. |
| * name-lookup.h (push_using_decl_bindings): Update declaration. |
| * pt.c (tsubst_expr): Update the call to push_using_decl_bindings. |
| |
| 2021-01-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/41437 |
| PR c++/58993 |
| * search.c (friend_accessible_p): If scope is a hidden friend |
| defined inside a dependent class, consider access from the |
| class. |
| * parser.c (cp_parser_late_parsing_for_member): Don't push a |
| dk_no_check access state. |
| |
| 2021-01-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98333 |
| * parser.c (cp_parser_class_specifier_1): Perform late-parsing |
| of NSDMIs before late-parsing of noexcept-specifiers. |
| |
| 2021-01-19 Nathan Sidwell <nathan@acm.org> |
| |
| * module.cc (identifier): Merge overloads. |
| |
| 2021-01-19 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98624 |
| * module.cc (trees_out::write_location): Make static. |
| |
| 2021-01-16 Kwok Cheung Yeung <kcy@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_clause_detach): New. |
| (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DETACH. |
| (OMP_TASK_CLAUSE_MASK): Add mask for PRAGMA_OMP_CLAUSE_DETACH. |
| * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_DETACH clause. |
| * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_DETACH clause. |
| Prevent use of detach with mergeable and overriding the data sharing |
| mode of the event handle. |
| |
| 2021-01-15 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98538 |
| * tree.c (cp_build_qualified_type_real): Propagate an array's |
| dependentness to the copy, if known. |
| |
| 2021-01-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/98642 |
| * call.c (unsafe_return_slot_p): Return int. |
| (init_by_return_slot_p): Split out from... |
| (unsafe_copy_elision_p): ...here. |
| (unsafe_copy_elision_p_opt): New name for old meaning. |
| (build_over_call): Adjust. |
| (make_safe_copy_elision): New. |
| * typeck2.c (split_nonconstant_init_1): Elide copy from safe |
| list-initialization. |
| * cp-tree.h: Adjust. |
| |
| 2021-01-15 Jason Merrill <jason@redhat.com> |
| |
| * call.c (base_ctor_for, make_base_init_ok): New. |
| (build_over_call): Use make_base_init_ok. |
| |
| 2021-01-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/63707 |
| * tree.c (build_vec_init_expr): Don't call build_vec_init_elt |
| if we got a CONSTRUCTOR. |
| |
| 2021-01-15 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98591 |
| * lang-specs.h: Fix handling of -fmodule-only with -fsyntax-only. |
| |
| 2021-01-14 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.c (process_init_constructor_record): Use fldtype |
| variable consistently. |
| |
| 2021-01-14 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98372 |
| * tree.c (cp_tree_equal): Correct map_context logic. |
| |
| 2021-01-13 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98231 |
| * name-lookup.c (push_using_decl_bindings): New. |
| * name-lookup.h (push_using_decl_bindings): Declare. |
| * pt.c (tsubst_expr): Call push_using_decl_bindings. |
| |
| 2021-01-13 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/98626 |
| * module.cc (module_add_import_initializers): Pass a |
| zero-element argument vector. |
| |
| 2021-01-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98611 |
| * tree.c (cp_walk_subtrees) <case TEMPLATE_TYPE_PARM>: Visit |
| the template of a CTAD placeholder. |
| |
| 2021-01-12 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98620 |
| * typeck2.c (process_init_constructor_record): Don't emit |
| -Wmissing-field-initializers warnings in unevaluated contexts. |
| |
| 2021-01-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98481 |
| * class.c (find_abi_tags_r): Set *walk_subtrees to 2 instead of 1 |
| for types. |
| (mark_abi_tags_r): Likewise. |
| * decl2.c (min_vis_r): Likewise. |
| * tree.c (cp_walk_subtrees): If *walk_subtrees_p is 2, look through |
| typedefs. |
| |
| 2021-01-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98551 |
| * constexpr.c (cxx_eval_call_expression): Check CLASS_TYPE_P |
| instead of AGGREGATE_TYPE_P before calling replace_result_decl. |
| |
| 2021-01-08 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98515 |
| * semantics.c (check_accessibility_of_qualified_id): Punt if |
| we're checking access of a scoped non-static member inside a |
| class template. |
| |
| 2021-01-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98329 |
| * pt.c (tsubst_copy) <case BIT_CAST_EXPR>: Don't call |
| cp_build_bit_cast here, instead just build_min a BIT_CAST_EXPR and set |
| its location. |
| (tsubst_copy_and_build): Handle BIT_CAST_EXPR. |
| |
| 2021-01-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/98441 |
| * decl.c (grokdeclarator): Move the !funcdecl_p check inside the |
| !late_return_type block. |
| |
| 2021-01-07 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (cxx_bind_parameters_in_call): Add comment. |
| (cxx_eval_store_expression): Add comment. |
| |
| 2021-01-07 Jason Merrill <jason@redhat.com> |
| |
| * call.c (has_next): Factor out from... |
| (next_conversion): ...here. |
| (strip_standard_conversion): And here. |
| (is_subseq): And here. |
| (build_conv): Check it. |
| (standard_conversion): Don't call build_conv |
| for ck_identity. |
| |
| 2021-01-06 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/95768 |
| * error.c (dump_expr): Call c_pretty_printer::unary_expression. |
| |
| 2021-01-05 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.c (unify) <case TEMPLATE_PARM_INDEX>: After walking into |
| the type of the NTTP, substitute into the type again. If the |
| type is still dependent, don't unify the NTTP. |
| |
| 2021-01-05 Jakub Jelinek <jakub@redhat.com> |
| |
| * Make-lang.in (cc1plus-checksum, cc1plus$(exeext): Add |
| $(CODYLIB) after $(BACKEND). |
| |
| 2021-01-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98469 |
| * constexpr.c (cxx_eval_constant_expression) <case BIT_CAST_EXPR>: |
| Punt if lval is true. |
| * semantics.c (cp_build_bit_cast): Call get_target_expr_sfinae on |
| the result if it has a class type. |
| |
| 2021-01-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/82099 |
| * pt.c (resolve_overloaded_unification): Call |
| maybe_instantiate_noexcept after instantiating the function |
| decl. |
| |
| 2021-01-05 Nathan Sidwell <nathan@acm.org> |
| |
| * parser.c (cp_parser_module_declaration): Alter diagnostic |
| text to say where is permissable. |
| |
| 2021-01-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
| |
| PR c++/98316 |
| * Make-lang.in (cc1plus$(exeext)): Add $(CODYLIB), $(NETLIBS). |
| |
| 2021-01-02 Jan Hubicka <jh@suse.cz> |
| |
| * cp-tree.h (cp_tree_c_finish_parsing): Declare. |
| * decl2.c (c_parse_final_cleanups): Call cp_tree_c_finish_parsing. |
| * tree.c (cp_tree_c_finish_parsing): New function. |
| |
| 2021-01-01 Jakub Jelinek <jakub@redhat.com> |
| |
| * ChangeLog-2020: Rotate ChangeLog. New file. |
| |
| |
| Copyright (C) 2021 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. |