| 2021-12-20 Patrick Palka <ppalka@redhat.com> |
| |
| * call.c (build_new_method_call): Set |
| BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P on the pruned baselink. |
| * cp-tree.h (BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P): Define. |
| * pt.c (filter_memfn_lookup): New subroutine of tsubst_baselink. |
| (tsubst_baselink): Use filter_memfn_lookup on the new lookup |
| result when BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P is set on the |
| old baselink. Remove redundant BASELINK_P check. |
| * search.c (build_baselink): Set |
| BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P appropriately. |
| |
| 2021-12-20 Patrick Palka <ppalka@redhat.com> |
| |
| * call.c (build_new_method_call): For a non-dependent call |
| expression inside a template, returning a templated tree |
| whose overload set contains just the selected function. |
| * semantics.c (finish_call_expr): Likewise. |
| |
| 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. |
| |
| 2021-12-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/94376 |
| * lambda.c (lambda_capture_field_type): Strip location wrappers |
| before checking for a capture proxy. |
| (is_capture_proxy): Assert that we don't see a location wrapper. |
| (mark_const_cap_r): Don't call is_constant_capture_proxy on a |
| location wrapper. |
| |
| 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-17 Marek Polacek <polacek@redhat.com> |
| |
| PR c/103649 |
| * parser.c (cp_parser_declaration): Don't warn for attribute_ignored_p. |
| (cp_parser_std_attribute): Skip parsing of the attribute |
| arguments when the attribute is ignored. |
| |
| 2021-12-17 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103749 |
| * decl.c (lookup_and_check_tag): Give an error when a class was |
| declared as template but no template header has been provided. |
| * pt.c (do_class_deduction): Don't deduce CLASSTYPE_ERRONEOUS |
| types. |
| |
| 2021-12-17 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/100127 |
| * coroutines.cc (coro_rewrite_function_body): Handle initial |
| await expressions that try to produce a reference value. |
| |
| 2021-12-17 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/100772 |
| * coroutines.cc (morph_fn_to_coro): Convert function parms |
| from reference before constructing any operator-new args |
| list. |
| |
| 2021-12-17 Jason Merrill <jason@redhat.com> |
| |
| * constraint.cc (deduce_concept_introduction): Adjust comment. |
| |
| 2021-12-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103681 |
| * cp-tree.h (struct lang_type): Add non_pod_aggregate. |
| (CLASSTYPE_NON_POD_AGGREGATE): New. |
| * class.c (check_field_decls): Set it. |
| (check_bases_and_members): Check it. |
| (check_non_pod_aggregate): New. |
| (enum eoc_mode): New. |
| (end_of_class): Always include non-empty fields. |
| Add eoc_nv_or_dsize mode. |
| (include_empty_classes, layout_class_type): Adjust. |
| |
| 2021-12-16 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/99980 |
| * parser.c (cp_parser_single_declaration): Maybe pass |
| CP_PARSER_FLAGS_DELAY_NOEXCEPT down to cp_parser_init_declarator. |
| |
| 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-16 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/51577 |
| PR c++/83035 |
| PR c++/100465 |
| * call.c (add_operator_candidates): Add lookups parameter. |
| Use it to avoid performing a second unqualified lookup when |
| instantiating a dependent operator expression. |
| (build_new_op): Add lookups parameter and pass it appropriately. |
| * constraint.cc (finish_constraint_binary_op): Use |
| build_min_nt_loc instead of build_x_binary_op. |
| * coroutines.cc (build_co_await): Adjust call to build_new_op. |
| * cp-objcp-common.c (cp_common_init_ts): Mark |
| DEPENDENT_OPERATOR_TYPE appropriately. |
| * cp-tree.def (DEPENDENT_OPERATOR_TYPE): Define. |
| * cp-tree.h (WILDCARD_TYPE_P): Accept DEPENDENT_OPERATOR_TYPE. |
| (FOLD_EXPR_OP_RAW): New, renamed from ... |
| (FOLD_EXPR_OP): ... this. Change this to return the tree_code directly. |
| (DEPENDENT_OPERATOR_TYPE_SAVED_LOOKUPS): Define. |
| (templated_operator_saved_lookups): Define. |
| (build_new_op): Add lookups parameter. |
| (build_dependent_operator_type): Declare. |
| (build_x_indirect_ref): Add lookups parameter. |
| (build_x_binary_op): Likewise. |
| (build_x_unary_op): Likewise. |
| (build_x_compound_expr): Likewise. |
| (build_x_modify_expr): Likewise. |
| * cxx-pretty-print.c (get_fold_operator): Adjust after |
| FOLD_EXPR_OP change. |
| * decl.c (start_preparsed_function): Don't call |
| push_operator_bindings. |
| * decl2.c (grok_array_decl): Adjust calls to build_new_op. |
| * method.c (do_one_comp): Likewise. |
| (build_comparison_op): Likewise. |
| * module.cc (trees_out::type_node): Handle DEPENDENT_OPERATOR_TYPE. |
| (trees_in::tree_node): Likewise. |
| * name-lookup.c (lookup_name): Revert r11-2876 change. |
| (op_unqualified_lookup): Remove. |
| (maybe_save_operator_binding): Remove. |
| (discard_operator_bindings): Remove. |
| (push_operator_bindings): Remove. |
| * name-lookup.h (maybe_save_operator_binding): Remove. |
| (push_operator_bindings): Remove. |
| (discard_operator_bindings): Remove. |
| * parser.c (cp_parser_unary_expression): Adjust calls to build_x_*. |
| (cp_parser_binary_expression): Likewise. |
| (cp_parser_assignment_expression): Likewise. |
| (cp_parser_expression): Likewise. |
| (do_range_for_auto_deduction): Likewise. |
| (cp_convert_range_for): Likewise. |
| (cp_parser_perform_range_for_lookup): Likewise. |
| (cp_parser_template_argument): Likewise. |
| (cp_parser_omp_for_cond): Likewise. |
| (cp_parser_omp_for_incr): Likewise. |
| (cp_parser_omp_for_loop_init): Likewise. |
| (cp_convert_omp_range_for): Likewise. |
| (cp_finish_omp_range_for): Likewise. |
| * pt.c (fold_expression): Adjust after FOLD_EXPR_OP change. Pass |
| templated_operator_saved_lookups to build_x_*. |
| (tsubst_omp_for_iterator): Adjust call to build_x_modify_expr. |
| (tsubst_expr) <case COMPOUND_EXPR>: Pass |
| templated_operator_saved_lookups to build_x_*. |
| (tsubst_copy_and_build) <case INDIRECT_REF>: Likewise. |
| <case tcc_unary>: Likewise. |
| <case tcc_binary>: Likewise. |
| <case MODOP_EXPR>: Likewise. |
| <case COMPOUND_EXPR>: Likewise. |
| (dependent_type_p_r): Return true for DEPENDENT_OPERATOR_TYPE. |
| * ptree.c (cxx_print_type): Handle DEPENDENT_OPERATOR_TYPE. |
| * semantics.c (finish_increment_expr): Adjust call to |
| build_x_unary_op. |
| (finish_unary_op_expr): Likewise. |
| (handle_omp_for_class_iterator): Adjust calls to build_x_*. |
| (finish_omp_cancel): Likewise. |
| (finish_unary_fold_expr): Use build_dependent_operator_type. |
| (finish_binary_fold_expr): Likewise. |
| * tree.c (cp_free_lang_data): Don't call discard_operator_bindings. |
| * typeck.c (rationalize_conditional_expr): Adjust call to |
| build_x_binary_op. |
| (op_unqualified_lookup): Define. |
| (build_dependent_operator_type): Define. |
| (build_x_indirect_ref): Add lookups parameter and use |
| build_dependent_operator_type. |
| (build_x_binary_op): Likewise. |
| (build_x_array_ref): Likewise. |
| (build_x_unary_op): Likewise. |
| (build_x_compound_expr_from_list): Adjust call to |
| build_x_compound_expr. |
| (build_x_compound_expr_from_vec): Likewise. |
| (build_x_compound_expr): Add lookups parameter and use |
| build_dependent_operator_type. |
| (cp_build_modify_expr): Adjust call to build_new_op. |
| (build_x_modify_expr): Add lookups parameter and use |
| build_dependent_operator_type. |
| * typeck2.c (build_x_arrow): Adjust call to build_new_op. |
| |
| 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-15 Martin Liska <mliska@suse.cz> |
| |
| PR c++/103713 |
| * tree.c (maybe_warn_parm_abi): Fix warning word splitting. |
| |
| 2021-12-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/103704 |
| * semantics.c (finish_omp_target_clauses_r): For OMP_CLAUSEs |
| just walk subtrees. |
| |
| 2021-12-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/103408 |
| * constraint.cc (type_deducible_p): Remove workaround for |
| non-templated requires-expressions. |
| (normalize_placeholder_type_constraints): Likewise. |
| * cp-tree.h (current_template_depth): Define. |
| (PROCESSING_REAL_TEMPLATE_DECL): Inspect current_template_depth |
| instead of the magnitude of processing_template_decl. |
| * decl.c (start_decl): Likewise. |
| (grokfndecl): Likewise. |
| (grokvardecl): Likewise. |
| (grokdeclarator): Likewise. |
| * friend.c (make_friend_class): Likewise. Calculate |
| friend_depth differently when called at instantiation time |
| instead of parse time. |
| (do_friend): Likewise. |
| * parser.c (cp_parser_requires_clause_expression): Remove |
| workaround for lambdas inside constraints. |
| (cp_parser_constraint_expression): Likewise. |
| (cp_parser_requires_expression): Likewise. |
| (synthesize_implicit_template_parm): Add to current_template_parms |
| before calling process_template_parm. |
| * pt.c (inline_needs_template_parms): Inspect |
| current_template_depth instead of the magnitude of |
| processing_template_decl. |
| (push_inline_template_parms_recursive): Likewise. |
| (maybe_begin_member_template_processing): Likewise. |
| (begin_template_parm_list): Likewise. |
| (process_template_parm): Likewise. |
| (end_template_parm_list): Likewise. |
| (push_template_decl): Likewise. |
| (add_inherited_template_parms): Likewise. |
| (instantiate_class_template_1): Don't adjust |
| processing_template_decl around the call to make_friend_class. |
| adjust_processing_template_decl to adjust_template_depth. Set |
| current_template_parms instead of processing_template_decl when |
| adjust_template_depth. |
| (make_auto_1): Inspect current_template_depth instead of the |
| magnitude of processing_template_decl. |
| (splice_late_return_type): Likewise. |
| * semantics.c (fixup_template_type): Likewise. |
| |
| 2021-12-14 Patrick Palka <ppalka@redhat.com> |
| |
| * call.c (build_new_op): Use releasing_vec for arglist. Declare |
| conv in the scope it's used. |
| |
| 2021-12-14 Patrick Palka <ppalka@redhat.com> |
| |
| * cp-tree.h (COMPOUND_EXPR_OVERLOADED): Remove. |
| * pt.c (build_non_dependent_expr): Don't inspect the flag. |
| * tree.c (build_min_non_dep): Don't set the flag. |
| |
| 2021-12-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * error.c: Define INCLUDE_MEMORY instead of |
| INCLUDE_UNIQUE_PTR. |
| * lex.c: Likewise. |
| * name-lookup.c: Likewise. |
| (class namespace_limit_reached): Use std::unique_ptr instead of |
| gnu::unique_ptr. |
| (suggest_alternatives_for): Use std::move instead of gnu::move. |
| (suggest_alternatives_in_other_namespaces): Likewise. |
| * parser.c: Define INCLUDE_MEMORY instead of INCLUDE_UNIQUE_PTR. |
| |
| 2021-12-09 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103401 |
| * parser.c (cp_parser_decltype): Clear |
| auto_is_implicit_function_template_parm_p. |
| (cp_parser_type_id_1): Give errors only when !cp_parser_simulate_error. |
| (cp_parser_parameter_declaration): Clear |
| auto_is_implicit_function_template_parm_p after parsing the |
| decl-specifier-seq. |
| (cp_parser_sizeof_operand): Clear |
| auto_is_implicit_function_template_parm_p. |
| |
| 2021-12-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR pch/71934 |
| * module.cc (nop): Add another void * argument. |
| * name-lookup.c (resort_member_name_cmp): Pass the same pointer twice |
| to resort_data.new_value. |
| |
| 2021-12-08 Chung-Lin Tang <cltang@codesourcery.com> |
| |
| * parser.c (struct omp_dim): New struct type for use inside |
| cp_parser_omp_var_list_no_open. |
| (cp_parser_omp_var_list_no_open): Allow multiple levels of array and |
| component accesses in array section base-pointer expression. |
| (cp_parser_omp_all_clauses): Set 'allow_deref' to true in call to |
| cp_parser_omp_var_list for to/from clauses. |
| * semantics.c (handle_omp_array_sections_1): Extend allowed range |
| of base-pointer expressions involving INDIRECT/MEM/ARRAY_REF and |
| POINTER_PLUS_EXPR. |
| (handle_omp_array_sections): Adjust pointer map generation of |
| references. |
| (finish_omp_clauses): Extend allowed ranged of expressions |
| involving INDIRECT/MEM/ARRAY_REF and POINTER_PLUS_EXPR. |
| |
| 2021-12-08 Chung-Lin Tang <cltang@codesourcery.com> |
| |
| PR middle-end/92120 |
| * cp-tree.h (finish_omp_target): New declaration. |
| (finish_omp_target_clauses): Likewise. |
| * parser.c (cp_parser_omp_clause_map): Adjust call to |
| cp_parser_omp_var_list_no_open to set 'allow_deref' argument to true. |
| (cp_parser_omp_target): Factor out code, adjust into calls to new |
| function finish_omp_target. |
| * pt.c (tsubst_expr): Add call to finish_omp_target_clauses for |
| OMP_TARGET case. |
| * semantics.c (handle_omp_array_sections_1): Add handling to create |
| 'this->member' from 'member' FIELD_DECL. Remove case of rejecting |
| 'this' when not in declare simd. |
| (handle_omp_array_sections): Likewise. |
| (finish_omp_clauses): Likewise. Adjust to allow 'this[]' in OpenMP |
| map clauses. Handle 'A->member' case in map clauses. Remove case of |
| rejecting 'this' when not in declare simd. |
| (struct omp_target_walk_data): New struct for walking over |
| target-directive tree body. |
| (finish_omp_target_clauses_r): New function for tree walk. |
| (finish_omp_target_clauses): New function. |
| (finish_omp_target): New function. |
| |
| 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-04 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h (is_byte_access_type_not_plain_char): Declare. |
| * tree.c (is_byte_access_type_not_plain_char): New function. |
| * constexpr.c (clear_uchar_or_std_byte_in_mask): New function. |
| (cxx_eval_bit_cast): Don't error about padding bits if target |
| type is unsigned char or std::byte, instead return no clearing |
| ctor. Use clear_uchar_or_std_byte_in_mask. |
| |
| 2021-12-03 Jason Merrill <jason@redhat.com> |
| |
| * error.c (current_dump_scope): New variable. |
| (dump_scope): Check it. |
| (dump_function_decl): Set it. |
| |
| 2021-12-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103403 |
| * cp-gimplify.c (cp_fold): Don't recurse if maybe_undo_parenthesized_ref |
| doesn't change its argument. |
| * pt.c (do_auto_deduction): Don't strip REFERENCE_REF_P trees if they |
| are REF_PARENTHESIZED_P. Use stripped_init when checking for |
| id-expression. |
| * semantics.c (force_paren_expr): Set REF_PARENTHESIZED_P on |
| REFERENCE_REF_P trees too. |
| (maybe_undo_parenthesized_ref): Remove dead code. |
| |
| 2021-12-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/94490 |
| * pt.c (expand_integer_pack): Call |
| instantiate_non_dependent_expr_sfinae. |
| |
| 2021-12-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103408 |
| * cxx-pretty-print.c (pp_cxx_parameter_mapping): Print "<unnamed>" |
| rather than crash on an unnamed template parameter. |
| |
| 2021-12-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/103310 |
| * constexpr.c (cxx_eval_binary_expression): Use |
| fold_binary_initializer_loc if manifestly cxeval. |
| |
| 2021-11-30 Jason Merrill <jason@redhat.com> |
| |
| * cp-gimplify.c (genericize_if_stmt): Always build a COND_EXPR. |
| |
| 2021-11-30 Richard Biener <rguenther@suse.de> |
| |
| * logic.cc (cnf_size_r): Remove unreachable and inconsistently |
| placed gcc_unreachable ()s. |
| * pt.c (iterative_hash_template_arg): Remove unreachable |
| gcc_unreachable and return. |
| |
| 2021-11-30 Thomas Schwinge <thomas@codesourcery.com> |
| |
| * semantics.c (finish_omp_clauses): Remove "gang reduction on an |
| orphan loop" checking. |
| |
| 2021-11-30 Cesar Philippidis <cesar@codesourcery.com> |
| Thomas Schwinge <thomas@codesourcery.com> |
| |
| * semantics.c (finish_omp_clauses): Emit an error on orphan |
| OpenACC gang reductions. |
| |
| 2021-11-30 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-gimplify.c (cp_fold_r): Perform folding of |
| std::source_location::current() calls here... |
| (cp_fold): ... rather than here. |
| |
| 2021-11-30 Richard Biener <rguenther@suse.de> |
| |
| * parser.c (cp_parser_postfix_expression): Remove |
| unreachable code. |
| * pt.c (tsubst_expr): Remove unreachable breaks. |
| |
| 2021-11-29 Eric Gallager <egallager@gcc.gnu.org> |
| |
| PR other/103021 |
| * Make-lang.in: Use ETAGS variable in TAGS target. |
| |
| 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-11-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102753 |
| * cp-tree.h (struct ptrmem_cst): Add locus member. |
| (PTRMEM_CST_LOCATION): Define. |
| * tree.c (make_ptrmem_cst): Set PTRMEM_CST_LOCATION to input_location. |
| (cp_expr_location): Return PTRMEM_CST_LOCATION for PTRMEM_CST. |
| * typeck.c (build_x_unary_op): Overwrite PTRMEM_CST_LOCATION for |
| PTRMEM_CST instead of calling maybe_wrap_with_location. |
| (cp_build_addr_expr_1): Don't diagnose taking address of |
| immediate functions here. Instead when taking their address make |
| sure the returned ADDR_EXPR has EXPR_LOCATION set. |
| (expand_ptrmemfunc_cst): Copy over PTRMEM_CST_LOCATION to ADDR_EXPR's |
| EXPR_LOCATION. |
| (convert_for_assignment): Use cp_expr_loc_or_input_loc instead of |
| EXPR_LOC_OR_LOC. |
| * pt.c (tsubst_copy): Use build1_loc instead of build1. Ensure |
| ADDR_EXPR of immediate function has EXPR_LOCATION set. |
| * cp-gimplify.c (cp_fold_r): Diagnose taking address of immediate |
| functions here. For consteval if don't walk THEN_CLAUSE. |
| (cp_genericize_r): Move evaluation of calls to |
| std::source_location::current from here to... |
| (cp_fold): ... here. Don't assert calls to immediate functions must |
| be source_location_current_p, instead only constant evaluate |
| calls to source_location_current_p. |
| |
| 2021-11-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101180 |
| * pt.c (apply_late_template_attributes): Return early if there are no |
| dependent attributes. |
| |
| 2021-11-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102611 |
| * cp-tree.h (build_op_subscript): Implement P2128R6 |
| - Multidimensional subscript operator. Declare. |
| (class releasing_vec): Add release method. |
| (grok_array_decl): Remove bool argument, add vec<tree, va_gc> ** |
| and tsubst_flags_t arguments. |
| (build_min_non_dep_op_overload): Declare another overload. |
| * parser.c (cp_parser_parenthesized_expression_list_elt): New function. |
| (cp_parser_postfix_open_square_expression): Mention C++23 syntax in |
| function comment. For C++23 parse zero or more than one initializer |
| clauses in expression list, adjust grok_array_decl caller. |
| (cp_parser_parenthesized_expression_list): Use |
| cp_parser_parenthesized_expression_list_elt. |
| (cp_parser_builtin_offsetof): Adjust grok_array_decl caller. |
| * decl.c (grok_op_properties): For C++23 don't check number |
| of arguments of operator[]. |
| * decl2.c (grok_array_decl): Remove decltype_p argument, add |
| index_exp_list and complain arguments. If index_exp is NULL, |
| handle *index_exp_list as the subscript expression list. |
| * tree.c (build_min_non_dep_op_overload): New overload. |
| * call.c (add_operator_candidates, build_over_call): Adjust comments |
| for removal of build_new_op_1. |
| (build_op_subscript): New function. |
| * pt.c (tsubst_copy_and_build_call_args): New function. |
| (tsubst_copy_and_build) <case ARRAY_REF>: If second |
| operand is magic CALL_EXPR with ovl_op_identifier (ARRAY_REF) |
| as CALL_EXPR_FN, tsubst CALL_EXPR arguments including expanding |
| pack expressions in it and call grok_array_decl instead of |
| build_x_array_ref. |
| <case CALL_EXPR>: Use tsubst_copy_and_build_call_args. |
| * semantics.c (handle_omp_array_sections_1): Adjust grok_array_decl |
| caller. |
| |
| 2021-11-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103347 |
| * cp-tree.h (struct cp_declarator): Add a location_t member. |
| (maybe_warn_cpp0x): Add a location_t parameter with a default argument. |
| (loc_or_input_loc): New. |
| * decl.c (grokdeclarator): Use loc_or_input_loc. Pass init_loc down |
| to maybe_warn_cpp0x. |
| * error.c (maybe_warn_cpp0x): Add a location_t parameter. Use it. |
| * parser.c (make_declarator): Initialize init_loc. |
| (cp_parser_member_declaration): Set init_loc. |
| (cp_parser_condition): Likewise. |
| (cp_parser_init_declarator): Likewise. |
| (cp_parser_parameter_declaration): Likewise. |
| |
| 2021-11-24 Jason Merrill <jason@redhat.com> |
| |
| * call.c |
| * decl.c |
| * name-lookup.c: |
| Use auto_cond_timevar instead of timevar_cond_start/stop. |
| Remove wrapper functions. |
| |
| 2021-11-23 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/96507 |
| * typeck.c (warn_for_null_address): Handle reference members. |
| |
| 2021-11-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/19808 |
| * init.c (emit_mem_initializers): Don't add is_really_empty_class |
| members into uninitialized. |
| |
| 2021-11-23 Jakub Jelinek <jakub@redhat.com> |
| |
| * semantics.c (clone_omp_udr): Don't initialize |
| id.transform_lang_insert_block. |
| * optimize.c (clone_body): Likewise. |
| |
| 2021-11-22 Jason Merrill <jason@redhat.com> |
| |
| * typeck.c (build_x_unary_op): Set address location. |
| (convert_member_func_to_ptr): Handle location wrapper. |
| * pt.c (convert_nontype_argument): Likewise. |
| |
| 2021-11-22 Jason Merrill <jason@redhat.com> |
| |
| * typeck.c (check_return_expr): Only strip location wrapper during |
| NRV handling. |
| |
| 2021-11-22 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101731 |
| * parser.c (cp_parser_late_parsing_oacc_routine): Set |
| parser->oacc_routine->fndecl_seen here, rather than ... |
| (cp_finalize_oacc_routine): ... here. Don't error if |
| parser->oacc_routine->fndecl_seen is set for FUNCTION_DECLs. |
| |
| 2021-11-22 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/103349 |
| * constexpr.c (potential_constant_expression_1): Punt on OMP_MASKED. |
| |
| 2021-11-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101180 |
| * pt.c (apply_late_template_attributes): Temporarily override |
| current_optimize_pragma, optimization_current_node, |
| current_target_pragma and scope_chain->omp_declare_target_attribute, |
| so that cplus_decl_attributes doesn't add implicit attributes. |
| |
| 2021-11-19 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/33925 |
| PR c/102867 |
| * typeck.c (warn_for_null_address): Suppress warnings for code |
| resulting from macro expansion. |
| |
| 2021-11-19 Martin Liska <mliska@suse.cz> |
| |
| Revert: |
| 2021-11-19 Martin Liska <mliska@suse.cz> |
| |
| * parser.c (add_debug_begin_stmt): Use option directly. |
| |
| 2021-11-19 Patrick Palka <ppalka@redhat.com> |
| |
| * tree.c (cp_walk_subtrees) <case *_CAST_EXPR>: Don't explicitly |
| walk the operands. |
| |
| 2021-11-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/94376 |
| * lambda.c (lambda_capture_field_type): Simplify by handling the |
| is_this case first. When capturing by-value a capture proxy, |
| consider the type of the corresponding field instead. |
| |
| 2021-11-19 Richard Biener <rguenther@suse.de> |
| |
| PR c++/103326 |
| * pt.c (tsubst_copy): Handle VECTOR_CST. |
| |
| 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-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/19808 |
| PR c++/96121 |
| * init.c (perform_member_init): Remove a forward declaration. |
| Walk the initializer using find_uninit_fields_r. New parameter |
| to track uninitialized fields. If a member is initialized, |
| remove it from the hash set. |
| (perform_target_ctor): Return the initializer. |
| (struct find_uninit_data): New class. |
| (find_uninit_fields_r): New function. |
| (find_uninit_fields): New function. |
| (emit_mem_initializers): Keep and initialize a set holding fields |
| that are not initialized. When handling delegating constructors, |
| walk the constructor tree using find_uninit_fields_r. Also when |
| initializing base clases. Pass uninitialized down to |
| perform_member_init. |
| |
| 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-11-18 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/103049 |
| * semantics.c (finish_compound_literal): Accept C++23 auto{x}. |
| * typeck2.c (build_functional_cast_1): Accept C++23 auto(x). |
| |
| 2021-11-18 Patrick Palka <ppalka@redhat.com> |
| |
| * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: Disable the |
| -fpermissive fallback for C++20 template-id ADL, but keep the |
| diagnostic. |
| |
| 2021-11-18 Jan Hubicka <hubicka@ucw.cz> |
| |
| * decl.c (finish_function): Update use of decl_replaceable_p. |
| |
| 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-11-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102670 |
| * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: When looking |
| for an identifier callee in the koenig_p case, also look through |
| TEMPLATE_ID_EXPR. Use tsubst_copy to substitute through the |
| template arguments of the template-id. |
| |
| 2021-11-18 Matthias Kretz <m.kretz@gsi.de> |
| |
| * constexpr.c (cxx_eval_constant_expression): Handle PAREN_EXPR |
| via cxx_eval_constant_expression. |
| * cp-objcp-common.c (names_builtin_p): Handle |
| RID_BUILTIN_ASSOC_BARRIER. |
| * cp-tree.h: Adjust TREE_LANG_FLAG documentation to include |
| PAREN_EXPR in REF_PARENTHESIZED_P. |
| (REF_PARENTHESIZED_P): Add PAREN_EXPR. |
| * parser.c (cp_parser_postfix_expression): Handle |
| RID_BUILTIN_ASSOC_BARRIER. |
| * pt.c (tsubst_copy_and_build): If the PAREN_EXPR is not a |
| parenthesized initializer, build a new PAREN_EXPR. |
| * semantics.c (force_paren_expr): Simplify conditionals. Set |
| REF_PARENTHESIZED_P on PAREN_EXPR. |
| (maybe_undo_parenthesized_ref): Test PAREN_EXPR for |
| REF_PARENTHESIZED_P. |
| |
| 2021-11-18 Martin Liska <mliska@suse.cz> |
| |
| * parser.c (add_debug_begin_stmt): Use option directly. |
| |
| 2021-11-16 Jason Merrill <jason@redhat.com> |
| |
| * ptree.c (cxx_print_xnode): Handle PTRMEM_CST. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (struct lang_decl_fn): Add implicit_constexpr. |
| (decl_implicit_constexpr_p): New. |
| * class.c (type_maybe_constexpr_destructor): Use |
| TYPE_HAS_TRIVIAL_DESTRUCTOR and maybe_constexpr_fn. |
| (finalize_literal_type_property): Simplify. |
| * constexpr.c (is_valid_constexpr_fn): Check for dtor. |
| (maybe_save_constexpr_fundef): Try to set DECL_DECLARED_CONSTEXPR_P |
| on inlines. |
| (cxx_eval_call_expression): Use maybe_constexpr_fn. |
| (maybe_constexpr_fn): Handle flag_implicit_constexpr. |
| (var_in_maybe_constexpr_fn): Use maybe_constexpr_fn. |
| (potential_constant_expression_1): Likewise. |
| (decl_implicit_constexpr_p): New. |
| * decl.c (validate_constexpr_redeclaration): Allow change with |
| -fimplicit-constexpr. |
| (grok_special_member_properties): Use maybe_constexpr_fn. |
| * error.c (dump_function_decl): Don't print 'constexpr' |
| if it's implicit. |
| * Make-lang.in (check-c++-all): Update. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.c (split_nonconstant_init_1): Handle flexarrays better. |
| |
| 2021-11-15 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (OMP_TARGET_CLAUSE_MASK): Add |
| PRAGMA_OMP_CLAUSE_THREAD_LIMIT. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| * call.c (perform_implicit_conversion_flags): Use the location of |
| the argument. |
| * lambda.c (build_lambda_object): Set location on the TARGET_EXPR. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (maybe_save_constexpr_fundef): Also check whether the |
| body of a constructor is potentially constant. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| * semantics.c (is_this_parameter): Check DECL_HAS_VALUE_EXPR_P |
| instead of is_capture_proxy. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/70690 |
| * init.c (build_vec_init): Check default_init_uninitialized_part in |
| C++20. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (maybe_constant_value): Don't evaluate |
| in an unevaluated operand unless manifestly const-evaluated. |
| (fold_non_dependent_expr_template): Likewise. |
| * decl.c (compute_array_index_type_loc): This context is |
| manifestly constant-evaluated. |
| |
| 2021-11-15 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (cxx_eval_thunk_call): Error instead of ICE |
| on vbase thunk to constexpr function. |
| |
| 2021-11-11 Patrick Palka <ppalka@redhat.com> |
| |
| * parser.c (cp_parser_template_argument_list): Use auto_vec |
| instead of manual memory management. |
| |
| 2021-11-11 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_num_teams): Parse optional |
| lower-bound and store it into OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR. |
| Use OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR instead of |
| OMP_CLAUSE_NUM_TEAMS_EXPR. |
| (cp_parser_omp_target): For OMP_CLAUSE_NUM_TEAMS evaluate before |
| combined target teams even lower-bound expression. |
| * semantics.c (finish_omp_clauses): Handle |
| OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR of OMP_CLAUSE_NUM_TEAMS clause. |
| * pt.c (tsubst_omp_clauses): Likewise. |
| (tsubst_expr): For OMP_CLAUSE_NUM_TEAMS evaluate before |
| combined target teams even lower-bound expression. |
| |
| 2021-11-09 Marek Polacek <polacek@redhat.com> |
| |
| * class.c (default_init_uninitialized_part): Use |
| next_initializable_field. |
| * method.c (walk_field_subobs): Skip unnamed bit-fields. |
| |
| 2021-11-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/103114 |
| * parser.c (cp_parser_userdef_numeric_literal): Use fold_build2 |
| with COMPLEX_EXPR arg instead of build_complex, use build_zero_cst |
| instead of fold_convert from integer_zero_node. |
| |
| 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-11-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100652 |
| * pt.c (push_template_decl): Check for bare parameter packs in |
| the argument list of a variable template partial specialization. |
| |
| 2021-11-09 Aldy Hernandez <aldyh@redhat.com> |
| |
| * ptree.c (cxx_print_xnode): Add more space to pfx array. |
| |
| 2021-11-04 Jason Merrill <jason@redhat.com> |
| |
| * call.c (build_array_conv): Use range-for. |
| (build_complex_conv): Likewise. |
| * constexpr.c (clear_no_implicit_zero) |
| (reduced_constant_expression_p): Likewise. |
| * decl.c (cp_complete_array_type): Likewise. |
| * decl2.c (mark_vtable_entries): Likewise. |
| * pt.c (iterative_hash_template_arg): |
| (invalid_tparm_referent_p, unify) |
| (type_dependent_expression_p): Likewise. |
| * typeck.c (build_ptrmemfunc_access_expr): Likewise. |
| |
| 2021-11-03 Joseph Myers <joseph@codesourcery.com> |
| |
| PR c/103031 |
| * cvt.c (convert_init): New function. |
| |
| 2021-11-02 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * decl.c: Include langhooks-def.h. |
| (cxx_simulate_record_decl): New function. |
| * cp-objcp-common.h (cxx_simulate_record_decl): Declare. |
| (LANG_HOOKS_SIMULATE_RECORD_DECL): Override. |
| |
| 2021-10-29 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102820 |
| * semantics.c (maybe_zero_constructor_nelts): New function. |
| (finish_compound_literal): Implement DR2351 - void{}. |
| If type is cv void and compound_literal has no elements, return |
| void_node. If type is cv void and compound_literal might have no |
| elements after expansion, handle it like other dependent compound |
| literals. |
| |
| 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-10-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102780 |
| * 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. |
| |
| 2021-10-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102854 |
| * semantics.c (handle_omp_for_class_iterator, |
| finish_omp_for): Adjust c_omp_check_loop_iv_exprs caller. |
| |
| 2021-10-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102753 |
| * constexpr.c (cxx_eval_outermost_constant_expr): Perform |
| find_immediate_fndecl discovery if is_consteval or |
| in_immediate_context () rather than if is_consteval, t != r |
| and not in immediate function's body. |
| |
| 2021-10-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102753 |
| * cp-tree.h (saved_scope): Document that consteval_if_p member |
| is also set while processing immediate invocation. |
| (in_immediate_context): Declare. |
| * call.c (in_immediate_context): New function. |
| (immediate_invocation_p): Use it. |
| (struct in_consteval_if_p_temp_override): New class. |
| (build_over_call): Temporarily set in_consteval_if_p for processing |
| immediate invocation arguments. |
| * typeck.c (cp_build_addr_expr_1): Diagnose taking address of |
| an immediate method. Use t instead of TREE_OPERAND (arg, 1). |
| Use in_immediate_context function. |
| * constexpr.c (find_immediate_fndecl): Handle PTRMEM_CST |
| which refers to immediate function decl. |
| |
| 2021-10-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/102617 |
| * parser.c (cp_parser_for): Maybe call cp_parser_init_statement |
| twice. Warn about range-based for loops with initializer here. |
| (cp_parser_init_statement): Don't duplicate code. Allow |
| alias-declaration in init-statement. |
| |
| 2021-10-22 Eric Gallager <egallager@gcc.gnu.org> |
| |
| PR other/102663 |
| * Make-lang.in: Add dummy c++.install-dvi target. |
| |
| 2021-10-20 Jason Merrill <jason@redhat.com> |
| |
| * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): |
| Pass true for declarator_p. |
| (cp_parser_nested_name_specifier_opt): Only look through |
| TYPENAME_TYPE if check_dependency_p is false. |
| |
| 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-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-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/51851 |
| PR c++/101402 |
| PR c++/102033 |
| PR c++/102034 |
| PR c++/102039 |
| PR c++/102044 |
| * pt.c (determine_specialization): Remove redundant code. |
| (fn_type_unification): Check for mismatched length. |
| (type_unification_real): Ignore terminal void. |
| (get_bindings): Don't stop at void_list_node. |
| * class.c (resolve_address_of_overloaded_function): Likewise. |
| |
| 2021-10-15 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (cxx_bind_parameters_in_call): Replace |
| new_call parameter with fun. |
| (cxx_eval_call_expression): Call it before instantiation. |
| (cxx_eval_outermost_constant_expr): Only instantiate fns |
| when manifestly_const_eval. |
| * typeck2.c (check_narrowing): This context is manifestly |
| constant-evaluated. |
| |
| 2021-10-14 Kwok Cheung Yeung <kcy@codesourcery.com> |
| |
| * decl.c (omp_declare_variant_finalize_one): Change call from |
| c_omp_mark_declare_variant to omp_mark_declare_variant. |
| * parser.c (cp_finish_omp_declare_variant): Change call from |
| c_omp_check_context_selector to omp_check_context_selector. |
| |
| 2021-10-09 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_structured_block): Remove disallow_omp_attrs |
| argument. |
| (cp_parser_omp_structured_block_sequence): New function. |
| (cp_parser_omp_scan_loop_body): Use it. |
| (cp_parser_omp_sections_scope): Likewise. |
| |
| 2021-10-08 Martin Liska <mliska@suse.cz> |
| |
| * constexpr.c (maybe_warn_about_constant_value): Use new macro |
| OPTION_SET_P. |
| * decl.c (redeclaration_error_message): Likewise. |
| (cxx_init_decl_processing): Likewise. |
| |
| 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> |
| |
| PR c++/61355 |
| * pt.c (convert_template_argument): Perform array/function to |
| pointer conversion on the substituted type of an NTTP. |
| |
| 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-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/102482 |
| * init.c (maybe_warn_list_ctor): Do not warn for a reference to |
| a non-const std::initializer_list. |
| |
| 2021-10-06 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102612 |
| * parser.c (cp_parser_jump_statement): Implement C++23 P2242R3. |
| Allow goto expressions in constexpr function bodies for C++23. |
| Adjust error message for older standards to mention it. |
| * decl.c (start_decl): Allow static and thread_local declarations |
| in constexpr function bodies for C++23. Adjust error message for |
| older standards to mention it. |
| * constexpr.c (ensure_literal_type_for_constexpr_object): Allow |
| declarations of variables with non-literal type in constexpr function |
| bodies for C++23. Adjust error message for older standards to mention |
| it. |
| (cxx_eval_constant_expression) <case DECL_EXPR>: Diagnose declarations |
| of initialization of static or thread_local vars. |
| (cxx_eval_constant_expression) <case GOTO_EXPR>: Diagnose goto |
| statements for C++23. |
| (potential_constant_expression_1) <case DECL_EXPR>: Swap the |
| CP_DECL_THREAD_LOCAL_P and TREE_STATIC checks. |
| (potential_constant_expression_1) <case LABEL_EXPR>: Allow labels for |
| C++23. Adjust error message for older standards to mention it. |
| |
| 2021-10-06 Jakub Jelinek <jakub@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/98712 |
| PR c++/102490 |
| * cp-tree.h (maybe_synthesize_method): Declare. |
| * method.c (genericize_spaceship): Use |
| LOOKUP_NORMAL | LOOKUP_NONVIRTUAL | LOOKUP_DEFAULTED instead of |
| LOOKUP_NORMAL for flags. |
| (comp_info): Remove defining member. Add complain, code, retcat. |
| (comp_info::comp_info): Adjust. |
| (do_one_comp): Split out from build_comparison_op. Use |
| LOOKUP_NORMAL | LOOKUP_NONVIRTUAL | LOOKUP_DEFAULTED instead of |
| LOOKUP_NORMAL for flags. |
| (build_comparison_op): Add defining argument. Adjust comp_info |
| construction. Use defining instead of info.defining. Assert that |
| if defining, ctype is a complete type. Walk base binfos. |
| (synthesize_method, maybe_explain_implicit_delete, |
| explain_implicit_non_constexpr): Adjust build_comparison_op callers. |
| (maybe_synthesize_method): New function. |
| * class.c (check_bases_and_members): Don't call defaulted_late_check |
| for sfk_comparison. |
| (finish_struct_1): Call it here instead after class has been |
| completed. |
| * pt.c (maybe_instantiate_noexcept): Call maybe_synthesize_method |
| instead of synthesize_method. |
| |
| 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 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102547 |
| * constexpr.c (potential_constant_expression_1): Handle |
| NONTYPE_ARGUMENT_PACK. |
| |
| 2021-10-05 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98930 |
| * pt.c (has_value_dependent_address): Return true for a static |
| local variable from a function template. |
| |
| 2021-10-04 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/97573 |
| * typeck.c (cp_build_binary_op): Call do_warn_array_compare. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/101765 |
| * coroutines.cc (register_local_var_uses): Emit a sorry if |
| we encounter a VLA in the coroutine local variables. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/99710 |
| * coroutines.cc (await_statement_walker): Report an error if |
| an await expression is found in a handler body. |
| |
| 2021-10-03 John Eivind Helset <jehelset@gmail.com> |
| |
| PR c++/100673 |
| * coroutines.cc (build_co_await): Guard against NULL |
| await_suspend types. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/101133 |
| * coroutines.cc (build_co_await): Mark co_await_expr trees |
| with TREE_SIDE_EFFECTS, also mark any containing expression. |
| (finish_co_await_expr): Mark type-dependent co_await_expr |
| trees with TREE_SIDE_EFFECTS. |
| |
| 2021-10-03 Iain Sandoe <iain@sandoe.co.uk> |
| |
| PR c++/99575 |
| * coroutines.cc (build_co_await): Strip NOPs from |
| candidate awaiter expressions before testing to see |
| if they need a temporary. |
| |
| 2021-10-01 Martin Sebor <msebor@redhat.com> |
| |
| PR c/102103 |
| * typeck.c (warn_for_null_address): Enhance. |
| (cp_build_binary_op): Call it also for member pointers. |
| |
| 2021-10-01 qingzhe huang <nickhuang99@hotmail.com> |
| |
| PR c++/101783 |
| * tree.c (cp_build_qualified_type_real): Exclude typedef from |
| error. |
| |
| 2021-10-01 Jakub Jelinek <jakub@redhat.com> |
| Richard Biener <rguenther@suse.de> |
| |
| PR sanitizer/102515 |
| * typeck.c (cp_build_binary_op): Call ubsan_instrument_division |
| for division even for SANITIZE_SI_OVERFLOW. |
| |
| 2021-10-01 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_order): Set |
| OMP_CLAUSE_ORDER_REPRODUCIBLE for explicit reproducible: modifier. |
| |
| 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-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-09-30 Patrick Palka <ppalka@redhat.com> |
| |
| * parser.c (cp_parser_trait_expr): Call nreverse on the reversed |
| list of trailing arguments. |
| |
| 2021-09-30 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/95567 |
| * method.c (build_comparison_op): Skip DECL_VIRTUAL_P fields. |
| |
| 2021-09-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99909 |
| * pt.c (coerce_template_template_parms): Keep |
| processing_template_decl set around the call to unify as well. |
| |
| 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-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. |
| |
| 2021-09-23 Michel Morin <mimomorin@gmail.com> |
| |
| * parser.c (cp_keyword_starts_decl_specifier_p): Do not |
| handle RID_ATTRIBUTE. |
| (cp_parser_constructor_declarator_p): Remove now-redundant |
| checks. |
| (cp_parser_lambda_declarator_opt): Likewise. |
| |
| 2021-09-23 Michel Morin <mimomorin@gmail.com> |
| |
| PR c++/77565 |
| * parser.c (cp_keyword_starts_decl_specifier_p): Handle more |
| decl-specifiers (typedef/inline/cv/explicit/virtual/friend). |
| |
| 2021-09-23 Patrick Palka <ppalka@redhat.com> |
| |
| * ptree.c (cxx_print_decl): Dump the DECL_TEMPLATE_RESULT of |
| a TEMPLATE_DECL. Dump the DECL_TEMPLATE_INFO rather than just |
| printing its pointer value. |
| |
| 2021-09-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102413 |
| * parser.c (cp_parser_omp_directive_args): Diagnose if omp::directive |
| is not followed by a balanced token sequence starting with open paren. |
| |
| 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-09-22 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_allocate): Parse allocate clause |
| modifiers. |
| * semantics.c (finish_omp_clauses) <OMP_CLAUSE_ALLOCATE>: Perform |
| semantic analysis of OMP_CLAUSE_ALLOCATE_ALIGN. |
| * pt.c (tsubst_omp_clauses) <case OMP_CLAUSE_ALLOCATE>: Handle |
| also OMP_CLAUSE_ALLOCATE_ALIGN. |
| |
| 2021-09-22 Barrett Adair <barrettellisadair@gmail.com> |
| |
| * pt.c (find_parm_usage_r): New walk_tree callback to find func |
| parms. |
| (any_template_arguments_need_structural_equality_p): New special |
| case. |
| |
| 2021-09-21 wangpc <pc.wang@linux.alibaba.com> |
| |
| * decl.c (start_decl_1): Move verify_type_context to ... |
| (cp_finish_decl): ... to here. |
| |
| 2021-09-18 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_order): Parse unconstrained |
| and reproducible modifiers. |
| (OMP_DISTRIBUTE_CLAUSE_MASK): Add order clause. |
| |
| 2021-09-18 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_default): Handle private and |
| firstprivate arguments, adjust diagnostics on unknown argument. |
| * cp-gimplify.c (cxx_omp_finish_clause): Handle OMP_CLAUSE_PRIVATE. |
| |
| 2021-09-18 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (dependentish_scope_p): Declare. |
| * pt.c (dependentish_scope_p): New. |
| * parser.c (cp_parser_lookup_name): Return a TYPENAME_TYPE |
| for lookup of a type in a dependent object. |
| (cp_parser_template_id): Handle TYPENAME_TYPE. |
| (cp_parser_template_name): If we're looking for a type, |
| a name followed by < names a template. |
| |
| 2021-09-18 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h: Fix typo in LANG_FLAG list. |
| |
| 2021-09-17 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h (finish_omp_atomic): Add r and weak arguments. |
| * parser.c (cp_parser_omp_atomic): Update function comment for |
| OpenMP 5.1 atomics, parse OpenMP 5.1 atomics and fail, compare and |
| weak clauses. |
| * semantics.c (finish_omp_atomic): Add r and weak arguments, handle |
| them, handle COND_EXPRs. |
| * pt.c (tsubst_expr): Adjust for COND_EXPR forms that |
| finish_omp_atomic can now produce. |
| |
| 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-09-16 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * coroutines.cc (await_statement_walker): Code cleanups. |
| |
| 2021-09-16 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (cxx_eval_outermost_constant_expr): Use |
| protected_set_expr_location. |
| |
| 2021-09-15 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101904 |
| * call.c (build_user_type_conversion_1): Add tf_conv to complain. |
| (add_candidates): When in a SFINAE context, instead of adding a |
| candidate to bad_fns just mark it unviable. |
| |
| 2021-09-15 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (parsing_function_declarator): Declare. |
| * name-lookup.c (set_decl_context_in_fn): Use it. |
| * parser.c (cp_parser_direct_declarator): Use it. |
| (parsing_function_declarator): New. |
| |
| 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 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/102050 |
| * decl.c (grok_special_member_properties): Set |
| TYPE_HAS_COPY_CTOR, TYPE_HAS_DEFAULT_CONSTRUCTOR |
| and TYPE_HAS_LIST_CTOR independently from each other. |
| |
| 2021-09-15 Jason Merrill <jason@redhat.com> |
| |
| * decl.c (cxx_init_decl_processing): Only warn about odd |
| interference sizes if they were specified with --param. |
| |
| 2021-09-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/48396 |
| * cp-tree.h (enum cp_tree_index): Remove CPTI_TYPE_INFO_PTR_TYPE. |
| (type_info_ptr_type): Remove. |
| * rtti.c (init_rtti_processing): Don't predeclare std::type_info. |
| (typeid_ok_p): Check for null const_type_info_type_node. |
| (type_info_ptr_type, get_void_tinfo_ptr): New fns. |
| (get_tinfo_decl_dynamic, get_tinfo_ptr): Use them. |
| (ptr_initializer, ptm_initializer, get_pseudo_ti_init): Use them. |
| (get_tinfo_desc): Use const_ptr_type_node. |
| |
| 2021-09-15 Jason Merrill <jason@redhat.com> |
| |
| * parser.c (cp_parser_template_name): Move object type. |
| (cp_parser_pre_parsed_nested_name_specifier): Likewise. |
| |
| 2021-09-15 Jason Merrill <jason@redhat.com> |
| |
| * parser.c (cp_parser_unqualified_id): Only complain about ~A<T> in |
| a declarator. |
| |
| 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-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-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-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-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102305 |
| * method.c (is_xible_helper): Call complete_type on to. |
| |
| 2021-09-14 Jason Merrill <jason@redhat.com> |
| |
| * decl.c (cxx_init_decl_processing): Don't warn if L1 cache line |
| size is smaller than maxalign. |
| |
| 2021-09-13 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (maybe_warn_about_constant_value): |
| Complain about std::hardware_destructive_interference_size. |
| (cxx_eval_constant_expression): Call it. |
| * decl.c (cxx_init_decl_processing): Check |
| --param *-interference-size values. |
| |
| 2021-09-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101764 |
| * cp-tree.h (PACK_EXPANSION_FORCE_EXTRA_ARGS_P): New accessor |
| macro. |
| * pt.c (has_extra_args_mechanism_p): New function. |
| (find_parameter_pack_data::found_extra_args_tree_p): New data |
| member. |
| (find_parameter_packs_r): Set ppd->found_extra_args_tree_p |
| appropriately. |
| (make_pack_expansion): Set PACK_EXPANSION_FORCE_EXTRA_ARGS_P if |
| ppd.found_extra_args_tree_p. |
| (use_pack_expansion_extra_args_p): Return true if there were |
| unsubstituted packs and PACK_EXPANSION_FORCE_EXTRA_ARGS_P. |
| (tsubst_pack_expansion): Pass the pack expansion to |
| use_pack_expansion_extra_args_p. |
| |
| 2021-09-10 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_atomic): Allow acq_rel on atomic read/write |
| and acq_rel/acquire clauses on update. |
| * semantics.c (finish_omp_atomic): Adjust c_finish_omp_atomic caller. |
| |
| 2021-09-08 Richard Biener <rguenther@suse.de> |
| |
| PR c++/102228 |
| * cp-tree.h (ANON_AGGR_TYPE_FIELD): New define. |
| * decl.c (fixup_anonymous_aggr): Wipe RTTI info put in |
| place on invalid code. |
| * decl2.c (reset_type_linkage): Guard CLASSTYPE_TYPEINFO_VAR |
| access. |
| * module.cc (trees_in::read_class_def): Likewise. Reconstruct |
| ANON_AGGR_TYPE_FIELD. |
| * semantics.c (finish_member_declaration): Populate |
| ANON_AGGR_TYPE_FIELD for anon aggregate typed members. |
| * typeck.c (lookup_anon_field): Remove DFS search and return |
| ANON_AGGR_TYPE_FIELD directly. |
| |
| 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-09-07 Marcel Vollweiler <marcel@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_flush): Parse 'seq_cst' clause on 'flush' |
| directive. |
| * semantics.c (finish_omp_flush): Handle MEMMODEL_SEQ_CST. |
| |
| 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-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-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-09-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101904 |
| * call.c (build_this_conversion): New function, split out from |
| add_function_candidate. |
| (add_function_candidate): New parameter shortcut_bad_convs. |
| Document it. Use build_this_conversion. Stop at the first bad |
| argument conversion when shortcut_bad_convs is true. |
| (add_template_candidate_real): New parameter shortcut_bad_convs. |
| Use build_this_conversion to check the 'this' conversion before |
| attempting deduction. When the rejection reason code is |
| rr_bad_arg_conversion, pass -1 instead of 0 as the viable |
| parameter to add_candidate. Pass 'convs' to add_candidate. |
| (add_template_candidate): New parameter shortcut_bad_convs. |
| (add_template_conv_candidate): Pass false as shortcut_bad_convs |
| to add_template_candidate_real. |
| (add_candidates): Prefer to shortcut bad conversions during |
| overload resolution under the assumption that we'll eventually |
| see a strictly viable candidate. If this assumption turns out |
| to be false, re-process the non-strictly viable candidates |
| without shortcutting those bad conversions. |
| |
| 2021-09-03 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (limit_bad_template_recursion): Suppress -Wunused for decls |
| we decide not to instantiate. |
| |
| 2021-09-03 Jakub Jelinek <jakub@redhat.com> |
| |
| PR target/102024 |
| * class.c (build_base_field): Use SET_DECL_FIELD_ABI_IGNORED |
| instead of writing to DECL_FIELD_ABI_IGNORED. |
| (layout_class_type): Likewise. In the place where zero-width |
| bitfields used to be removed, use |
| SET_DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD on those fields instead. |
| |
| 2021-09-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * call.c (build_over_call): Handle unavailable state in addition to |
| deprecation. |
| * class.c (type_build_ctor_call): Likewise. |
| (type_build_dtor_call): Likewise. |
| * cp-tree.h: Rename cp_warn_deprecated_use to |
| cp_handle_deprecated_or_unavailable. |
| * decl.c (duplicate_decls): Merge unavailability. |
| (grokdeclarator): Handle unavailability in addition to deprecation. |
| (type_is_unavailable): New. |
| (grokparms): Handle unavailability in addition to deprecation. |
| * decl.h (enum deprecated_states): Add |
| UNAVAILABLE_DEPRECATED_SUPPRESS. |
| * decl2.c (cplus_decl_attributes): Propagate unavailability to |
| templates. |
| (cp_warn_deprecated_use): Rename to ... |
| (cp_handle_deprecated_or_unavailable): ... this and amend to handle |
| the unavailable case. It remains a warning in the case of deprecation |
| but becomes an error in the case of unavailability. |
| (cp_warn_deprecated_use_scopes): Handle unavailability. |
| (mark_used): Likewise. |
| * parser.c (cp_parser_template_name): Likewise. |
| (cp_parser_template_argument): Likewise. |
| (cp_parser_parameter_declaration_list): Likewise. |
| * typeck.c (build_class_member_access_expr): Likewise. |
| (finish_class_member_access_expr): Likewise. |
| * typeck2.c (build_functional_cast_1): Likewise. |
| |
| 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-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-08-31 Jason Merrill <jason@redhat.com> |
| |
| * coroutines.cc (flatten_await_stmt): Fix copyo. |
| * decl.c (reshape_init_class): Simplify. |
| * module.cc (module_state::read_language): Add null check. |
| * parser.c (build_range_temp): Avoid type_uses_auto. |
| (cp_parser_class_specifier_1): Add null check. |
| |
| 2021-08-31 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/12672 |
| * call.c (rejection_reason::call_varargs_p): Rename this |
| previously unused member to ... |
| (rejection_reason::least_p): ... this. |
| (arity_rejection): Add least_p parameter. |
| (add_template_candidate_real): When there are explicit |
| template arguments, check that the arity of the call agrees with |
| the arity of the function before attempting deduction. |
| (print_arity_information): Add least_p parameter. |
| (print_z_candidate): Adjust call to print_arity_information. |
| |
| 2021-08-31 Martin Sebor <msebor@redhat.com> |
| |
| * parser.c (cp_parser_selection_statement): Use direct initialization |
| instead of copy. |
| |
| 2021-08-31 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (explain_invalid_constexpr_fn): Use iloc_sentinel. |
| |
| 2021-08-31 Jason Merrill <jason@redhat.com> |
| |
| PR c++/92193 |
| * cp-tree.h (FNDECL_MANIFESTLY_CONST_EVALUATED): New. |
| * constexpr.c (cxx_eval_call_expression): Set it. |
| * pt.c (neglectable_inst_p): Check it. |
| |
| 2021-08-31 Marcel Vollweiler <marcel@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_clause_device): Parse device-modifiers 'device_num' |
| and 'ancestor' in 'target device' clauses. |
| * semantics.c (finish_omp_clauses): Error handling. Constant device ids must |
| evaluate to '1' if 'ancestor' is used. |
| |
| 2021-08-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96286 |
| * cp-tree.h (struct lang_type): Add erroneous bit-field. |
| (CLASSTYPE_ERRONEOUS): New. |
| * pt.c (limit_bad_template_recursion): Check it. |
| (instantiate_class_template_1): Set it. |
| |
| 2021-08-30 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (cxx_eval_outermost_constant_expr): Copy |
| expr location to result. |
| |
| 2021-08-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101460 |
| * cp-tree.h (cxx_constant_value_sfinae): Declare. |
| * constexpr.c (cxx_constant_value_sfinae): New. |
| * pt.c (fold_targs_r, maybe_fold_fn_template_args): New. |
| (tsubst_copy_and_build) [CALL_EXPR]: Call |
| maybe_fold_fn_template_args. |
| |
| 2021-08-30 Jason Merrill <jason@redhat.com> |
| |
| * parser.c (cp_parser_simple_requirement): Warn about missing |
| requires. |
| |
| 2021-08-27 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.c (build_x_arrow): Do set TREE_TYPE when operand is |
| a dependent pointer. |
| |
| 2021-08-25 Andrew Pinski <apinski@marvell.com> |
| |
| PR c++/66590 |
| * cp-objcp-common.c (cxx_block_may_fallthru): Handle |
| CLEANUP_STMT for the case which will be try/finally. |
| |
| 2021-08-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/102019 |
| * init.c (build_value_init_noctor): Ignore unnamed zero-width |
| bitfields. |
| |
| 2021-08-23 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_num_tasks, |
| cp_parser_omp_clause_grainsize): Parse the optional strict: modifier. |
| |
| 2021-08-20 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_handle_statement_omp_attributes): Determine if |
| PRAGMA_OMP_ERROR directive is C_OMP_DIR_STANDALONE. |
| (cp_parser_omp_error): New function. |
| (cp_parser_pragma): Handle PRAGMA_OMP_ERROR. |
| |
| 2021-08-20 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_depend_sink): Reject spurious |
| comma at the end of list. Don't parse closing paren here... |
| (cp_parser_omp_clause_depend): ... but here instead. |
| |
| 2021-08-19 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101803 |
| * cp-tree.h (CONSTRUCTOR_IS_PAREN_INIT): Clarify comment. |
| |
| 2021-08-19 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_requires): Don't call cp_lexer_nth_token_is |
| and optionally consume token if current token is CPP_EOF, |
| CPP_PRAGMA_EOL or CPP_CLOSE_PAREN. |
| |
| 2021-08-19 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_nothing): Use cp_parser_require_pragma_eol |
| instead of cp_parser_skip_to_pragma_eol. |
| |
| 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-08-18 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101883 |
| * pt.c (convert_template_argument): Pass LOOKUP_IMPLICIT to |
| do_auto_deduction. |
| |
| 2021-08-18 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_nothing): New function. |
| (cp_parser_pragma): Handle PRAGMA_OMP_NOTHING. |
| |
| 2021-08-18 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_ordered): Return true instead of |
| false after emitting errors that the directive is not allowed in |
| pragma_stmt context. |
| (cp_parser_omp_target_update): Likewise. |
| (cp_parser_omp_cancellation_point): Change return type from void to |
| bool, return false if the directive should be ignored in pragma_stmt |
| contexts. |
| (cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data): |
| Change return type from tree to bool, return false if the |
| directive should be ignored in pragma_stmt contexts. |
| (cp_parser_omp_target): Adjust callers of cp_parser_omp_target_*_data, |
| return their result directly. |
| (cp_parser_pragma): For PRAGMA_OMP_CANCELLATION_POINT return what |
| cp_parser_omp_cancellation_point returned. Return true instead of |
| false after emitting errors that the directive is not allowed in |
| pragma_stmt context. |
| |
| 2021-08-17 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101539 |
| * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_LAYOUT_COMPATIBLE. |
| (enum cp_built_in_function): Add CP_BUILT_IN_IS_CORRESPONDING_MEMBER. |
| (fold_builtin_is_corresponding_member, next_common_initial_seqence, |
| layout_compatible_type_p): Declare. |
| * parser.c (cp_parser_primary_expression): Handle |
| RID_IS_LAYOUT_COMPATIBLE. |
| (cp_parser_trait_expr): Likewise. |
| * cp-objcp-common.c (names_builtin_p): Likewise. |
| * constraint.cc (diagnose_trait_expr): Handle |
| CPTK_IS_LAYOUT_COMPATIBLE. |
| * decl.c (cxx_init_decl_processing): Register |
| __builtin_is_corresponding_member builtin. |
| * constexpr.c (cxx_eval_builtin_function_call): Handle |
| CP_BUILT_IN_IS_CORRESPONDING_MEMBER builtin. |
| * semantics.c (is_corresponding_member_union, |
| is_corresponding_member_aggr, fold_builtin_is_corresponding_member): |
| New functions. |
| (trait_expr_value): Handle CPTK_IS_LAYOUT_COMPATIBLE. |
| (finish_trait_expr): Likewise. |
| * typeck.c (next_common_initial_seqence, layout_compatible_type_p): |
| New functions. |
| * cp-gimplify.c (cp_gimplify_expr): Fold |
| CP_BUILT_IN_IS_CORRESPONDING_MEMBER. |
| (cp_fold): Likewise. |
| * tree.c (builtin_valid_in_constant_expr_p): Handle |
| CP_BUILT_IN_IS_CORRESPONDING_MEMBER. |
| * cxx-pretty-print.c (pp_cxx_trait_expression): Handle |
| CPTK_IS_LAYOUT_COMPATIBLE. |
| * class.c (remove_zero_width_bit_fields): Remove. |
| (layout_class_type): Don't call it. |
| |
| 2021-08-17 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (OMP_SCOPE_CLAUSE_MASK): Define. |
| (cp_parser_omp_scope): New function. |
| (cp_parser_omp_construct, cp_parser_pragma): Handle PRAGMA_OMP_SCOPE. |
| * pt.c (tsubst_expr): Handle OMP_SCOPE. |
| |
| 2021-08-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_name): Parse filter clause name. |
| (cp_parser_omp_clause_filter): New function. |
| (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FILTER. |
| (OMP_MASKED_CLAUSE_MASK): Define. |
| (cp_parser_omp_masked): New function. |
| (cp_parser_omp_parallel): Handle parallel masked. |
| (cp_parser_omp_construct, cp_parser_pragma): Handle PRAGMA_OMP_MASKED. |
| * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_FILTER. |
| * pt.c (tsubst_omp_clauses): Likewise. |
| (tsubst_expr): Handle OMP_MASKED. |
| |
| 2021-08-12 Sergei Trofimovich <siarheit@google.com> |
| |
| PR c++/101219 |
| * pt.c (tsubst_copy_and_build): Use build_ptrmemfunc_access_expr |
| to construct ptrmemfunc expression instantiation. |
| |
| 2021-08-12 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_clause_proc_bind): Accept |
| 'primary' as alias for 'master'. |
| |
| 2021-08-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h (omp_declare_target_attr): New type. |
| (struct saved_scope): Change type of omp_declare_target_attribute |
| from int to vec<omp_declare_target_attr, va_gc> * and move it. |
| * parser.c (cp_parser_omp_declare_target): Instead of |
| incrementing scope_chain->omp_declare_target_attribute, push |
| a struct containing parser->lexer->in_omp_attribute_pragma to |
| the vector. |
| (cp_parser_omp_end_declare_target): Instead of decrementing |
| scope_chain->omp_declare_target_attribute, pop a structure |
| from it. Diagnose mismatching declare target vs. |
| end declare target syntax. |
| * semantics.c (finish_translation_unit): Use vec_safe_length |
| and vec_safe_truncate on scope_chain->omp_declare_target_attributes. |
| * decl2.c (cplus_decl_attributes): Use vec_safe_length |
| on scope_chain->omp_declare_target_attributes. |
| |
| 2021-08-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_lambda_body): Add temp overrides |
| for parser->{omp_declare_simd,oacc_routine,omp_attrs_forbidden_p}. |
| (cp_parser_statement): Restore parser->omp_attrs_forbidden_p for |
| cp_parser_declaration_statement. |
| (cp_parser_default_argument): Add temp override for |
| parser->omp_attrs_forbidden_p. |
| (cp_parser_late_parsing_omp_declare_simd): Diagnose declare simd |
| or declare variant in attribute syntax on a declaration immediately |
| following an OpenMP construct in pragma syntax. |
| |
| 2021-08-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/94162 |
| * method.c (cat_tag_for): Return cc_last for !CLASS_TYPE_P |
| or for classes not in std namespace. |
| |
| 2021-08-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * name-lookup.c (finish_using_directive): Diagnose omp::directive |
| or omp::sequence attributes on using-directive. |
| |
| 2021-08-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_block_declaration): Call |
| cp_parser_using_directive for C++11 attributes followed by |
| using namespace tokens. |
| (cp_parser_using_directive): Parse C++11 attributes at the start |
| of the directive rather than at the end, only parse GNU attributes |
| at the end. |
| |
| 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> |
| |
| 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 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101786 |
| * decl2.c (var_defined_without_dynamic_init): Return true for |
| DECL_DECLARED_CONSTINIT_P with complete type and trivial destructor. |
| |
| 2021-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/79501 |
| * parser.c (maybe_adjust_declarator_for_dguide): New, split |
| out from ... |
| (cp_parser_init_declarator): ... here. |
| (cp_parser_member_declaration): Use it. |
| |
| 2021-08-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/89062 |
| * parser.c (cp_parser_parameter_declaration_list): Don't call |
| grokdeclarator if cp_parser_error_occurred. |
| (cp_parser_parameter_declaration): Simulate an error if we see |
| the beginning of a CTAD form, i.e. if we see an opening brace |
| after the decl-specifier-seq and the type is a CTAD placeholder. |
| |
| 2021-08-10 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_member_declaration): Move odsd declaration |
| before cp_parser_using_declaration call to avoid errors with |
| GCC 4.8 to 6. |
| |
| 2021-08-10 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.h (struct cp_omp_declare_simd_data): Remove |
| in_omp_attribute_pragma and clauses members, add loc and attribs. |
| (struct cp_oacc_routine_data): Remove loc member, add clauses |
| member. |
| * parser.c (cp_finalize_omp_declare_simd): New function. |
| (cp_parser_handle_statement_omp_attributes): Mention in |
| function comment the function is used also for |
| attribute-declaration. |
| (cp_parser_handle_directive_omp_attributes): New function. |
| (cp_parser_statement): Don't call |
| cp_parser_handle_statement_omp_attributes if statement doesn't |
| have attribute-specifier-seq at the beginning at all or if |
| if those attributes don't appertain to the statement. |
| (cp_parser_simple_declaration): Call |
| cp_parser_handle_directive_omp_attributes and |
| cp_finalize_omp_declare_simd. |
| (cp_parser_explicit_instantiation): Likewise. |
| (cp_parser_init_declarator): Initialize prefix_attributes |
| only after parsing declarators. |
| (cp_parser_direct_declarator): Call |
| cp_parser_handle_directive_omp_attributes and |
| cp_finalize_omp_declare_simd. |
| (cp_parser_member_declaration): Likewise. |
| (cp_parser_single_declaration): Likewise. |
| (cp_parser_omp_declare_simd): Don't initialize |
| data.in_omp_attribute_pragma, instead initialize |
| data.attribs[0] and data.attribs[1]. |
| (cp_finish_omp_declare_variant): Remove |
| in_omp_attribute_pragma argument, instead use |
| parser->lexer->in_omp_attribute_pragma. |
| (cp_parser_late_parsing_omp_declare_simd): Adjust |
| cp_finish_omp_declare_variant caller. Handle attribute-syntax |
| declare simd/variant. |
| |
| 2021-08-06 Tamar Christina <tamar.christina@arm.com> |
| |
| * cp-objcp-common.h (cxx_simulate_enum_decl): Pass vec<> by pointer. |
| * decl.c (cxx_simulate_enum_decl): Likewise. |
| |
| 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-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-31 Jason Merrill <jason@redhat.com> |
| |
| PR c++/96636 |
| * decl.c (fixup_anonymous_aggr): Clear TYPE_NEEDS_CONSTRUCTING |
| after error. |
| |
| 2021-07-31 Jason Merrill <jason@redhat.com> |
| |
| * ptree.c (cxx_print_type) [TYPE_PACK_EXPANSION]: Also print |
| PACK_EXPANSION_PATTERN. |
| |
| 2021-07-31 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_declaration): Handle OpenMP directives |
| in attribute-declaration. |
| |
| 2021-07-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101539 |
| * cp-tree.h (enum cp_trait_kind): Add |
| CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF. |
| (enum cp_built_in_function): Add |
| CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS. |
| (fold_builtin_is_pointer_inverconvertible_with_class): Declare. |
| * parser.c (cp_parser_primary_expression): Handle |
| RID_IS_POINTER_INTERCONVERTIBLE_BASE_OF. |
| (cp_parser_trait_expr): Likewise. |
| * cp-objcp-common.c (names_builtin_p): Likewise. |
| * constraint.cc (diagnose_trait_expr): Handle |
| CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF. |
| * decl.c (cxx_init_decl_processing): Register |
| __builtin_is_pointer_interconvertible_with_class builtin. |
| * constexpr.c (cxx_eval_builtin_function_call): Handle |
| CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS builtin. |
| * semantics.c (pointer_interconvertible_base_of_p, |
| first_nonstatic_data_member_p, |
| fold_builtin_is_pointer_inverconvertible_with_class): New functions. |
| (trait_expr_value): Handle CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF. |
| (finish_trait_expr): Likewise. Formatting fix. |
| * cp-gimplify.c (cp_gimplify_expr): Fold |
| CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS. Call |
| fndecl_built_in_p just once. |
| (cp_fold): Likewise. |
| * tree.c (builtin_valid_in_constant_expr_p): Handle |
| CP_BUILT_IN_IS_POINTER_INTERCONVERTIBLE_WITH_CLASS. Call |
| fndecl_built_in_p just once. |
| * cxx-pretty-print.c (pp_cxx_trait_expression): Handle |
| CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF. |
| |
| 2021-07-30 Jason Merrill <jason@redhat.com> |
| |
| * class.c (finish_struct_anon): Improve comment. |
| * decl.c (fixup_anonymous_aggr): Reject anonymous struct |
| with bases. |
| |
| 2021-07-30 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_statement): Rollback attributes not just |
| when std_attrs is non-NULL, but whenever |
| cp_parser_std_attribute_spec_seq parsed any tokens. |
| |
| 2021-07-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/101582 |
| * parser.c (cp_parser_skip_std_attribute_spec_seq): Add a forward |
| declaration. |
| (cp_parser_declaration): Parse empty-declaration and |
| attribute-declaration. |
| (cp_parser_toplevel_declaration): Don't parse empty-declaration here. |
| |
| 2021-07-28 Martin Sebor <msebor@redhat.com> |
| |
| * init.c: Include new header. |
| |
| 2021-07-27 Marek Polacek <polacek@redhat.com> |
| |
| DR 1512 |
| PR c++/99701 |
| * cp-gimplify.c (cp_fold): Remove {LE,LT,GE,GT_EXPR} from |
| a switch. |
| * typeck.c (cp_build_binary_op): Reject ordered comparison |
| of two null pointers. |
| |
| 2021-07-26 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.h (struct cp_lexer): Add orphan_p member. |
| * parser.c (cp_parser_statement): Don't change in_omp_attribute_pragma |
| upon restart from CPP_PRAGMA handling. Fix up condition when a lexer |
| should be destroyed and adjust saved_tokens if it records tokens from |
| the to be destroyed lexer. |
| (cp_parser_omp_section_scan): New function. |
| (cp_parser_omp_scan_loop_body): Use it. If |
| parser->lexer->in_omp_attribute_pragma, allow optional comma |
| after scan. |
| (cp_parser_omp_sections_scope): Use cp_parser_omp_section_scan. |
| |
| 2021-07-23 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.h (struct cp_parser): Add omp_attrs_forbidden_p member. |
| * parser.c (cp_parser_handle_statement_omp_attributes): Diagnose |
| mixing of attribute and pragma syntax directives when seeing |
| omp::directive if parser->omp_attrs_forbidden_p or if attribute syntax |
| directives are followed by OpenMP pragma. |
| (cp_parser_statement): Clear parser->omp_attrs_forbidden_p after |
| the cp_parser_handle_statement_omp_attributes call. |
| (cp_parser_omp_structured_block): Add disallow_omp_attrs argument, |
| if true, set parser->omp_attrs_forbidden_p. |
| (cp_parser_omp_scan_loop_body, cp_parser_omp_sections_scope): Pass |
| false as disallow_omp_attrs to cp_parser_omp_structured_block. |
| (cp_parser_omp_parallel, cp_parser_omp_task): Set |
| parser->omp_attrs_forbidden_p. |
| |
| 2021-07-21 Thomas Schwinge <thomas@codesourcery.com> |
| Joseph Myers <joseph@codesourcery.com> |
| Cesar Philippidis <cesar@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_clause_name): Handle 'nohost'. |
| (cp_parser_oacc_all_clauses): Handle 'PRAGMA_OACC_CLAUSE_NOHOST'. |
| (OACC_ROUTINE_CLAUSE_MASK): Add 'PRAGMA_OACC_CLAUSE_NOHOST'. |
| * pt.c (tsubst_omp_clauses): Handle 'OMP_CLAUSE_NOHOST'. |
| * semantics.c (finish_omp_clauses): Likewise. |
| |
| 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-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-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> |
| |
| DR 960 |
| PR c++/99664 |
| * search.c (check_final_overrider): Compare TYPE_REF_IS_RVALUE |
| when the return types are references. |
| |
| 2021-07-16 Marek Polacek <polacek@redhat.com> |
| |
| * typeck2.c (check_narrowing): Don't suppress the pedantic error |
| in system headers. |
| |
| 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-15 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. |
| |
| 2021-07-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/88252 |
| * cp-tree.h (TEMPLATE_TYPE_PARM_FOR_CLASS): Remove. |
| * pt.c (push_template_decl): Remove TEMPLATE_TYPE_PARM_FOR_CLASS |
| handling. |
| (redeclare_class_template): Likewise. |
| (forwarding_reference_p): Define. |
| (maybe_adjust_types_for_deduction): Use it instead. Add 'tparms' |
| parameter. |
| (unify_one_argument): Pass tparms to |
| maybe_adjust_types_for_deduction. |
| (try_one_overload): Likewise. |
| (unify): Likewise. |
| (rewrite_template_parm): Remove TEMPLATE_TYPE_PARM_FOR_CLASS |
| handling. |
| |
| 2021-07-14 Jason Merrill <jason@redhat.com> |
| |
| * class.c (struct find_final_overrider_data): Use auto_vec. |
| (find_final_overrider): Remove explicit release. |
| * coroutines.cc (process_conditional): Use auto_vec. |
| * cp-gimplify.c (struct cp_genericize_data): Use auto_vec. |
| (cp_genericize_tree): Remove explicit release. |
| * parser.c (cp_parser_objc_at_property_declaration): Use |
| auto_delete_vec. |
| * semantics.c (omp_reduction_lookup): Use auto_vec. |
| |
| 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. |
| |
| 2021-07-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/79501 |
| PR c++/100983 |
| * decl.c (grokfndecl): Don't require that deduction guides are |
| declared at namespace scope. Check that class-scope deduction |
| guides have the same access as the member class template. |
| (grokdeclarator): Pretend class-scope deduction guides are static. |
| * search.c (lookup_member): Don't use a BASELINK for (class-scope) |
| deduction guides. |
| |
| 2021-07-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/82110 |
| * init.c (build_aggr_init): Return error_mark_node if |
| expand_aggr_init_1 returns false. |
| (expand_default_init): Change return type to bool. Return false |
| on error, true on success. |
| (expand_aggr_init_1): Likewise. |
| |
| 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 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-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-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-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-08 Martin Sebor <msebor@redhat.com> |
| |
| PR bootstrap/101372 |
| * module.cc (identifier): Suppress warning. |
| (module_state::read_macro_maps): Remove warning suppression. |
| (module_state::install_macros): Ditto. |
| |
| 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-08 Martin Sebor <msebor@redhat.com> |
| |
| PR bootstrap/101374 |
| * module.cc (module_state::read_macro_maps): Temporarily disable |
| -Warray-bounds. |
| (module_state::install_macros): Same. |
| |
| 2021-07-06 Martin Sebor <msebor@redhat.com> |
| |
| * error.c (cp_printer): Remove support for %G and %K. |
| |
| 2021-07-02 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.h (struct cp_lexer): Add in_omp_attribute_pragma member. |
| (struct cp_omp_declare_simd_data): Likewise. |
| * cp-tree.h (enum cp_tree_index): Add CPTI_OMP_IDENTIFIER. |
| (omp_identifier): Define. |
| * parser.c (cp_parser_skip_to_pragma_eol): Handle |
| in_omp_attribute_pragma CPP_PRAGMA_EOL followed by CPP_EOF. |
| (cp_parser_require_pragma_eol): Likewise. |
| (struct cp_omp_attribute_data): New type. |
| (cp_parser_handle_statement_omp_attributes): New function. |
| (cp_parser_statement): Handle OpenMP directives in statement's |
| attribute-specifier-seq. |
| (cp_parser_omp_directive_args, cp_parser_omp_sequence_args): New |
| functions. |
| (cp_parser_std_attribute): Handle omp::directive and omp::sequence |
| attributes. |
| (cp_parser_omp_all_clauses): If in_omp_attribute_pragma, allow |
| a comma also before the first clause. |
| (cp_parser_omp_allocate): Likewise. |
| (cp_parser_omp_atomic): Likewise. |
| (cp_parser_omp_depobj): Likewise. |
| (cp_parser_omp_flush): Likewise. |
| (cp_parser_omp_ordered): Likewise. |
| (cp_parser_omp_declare_simd): Save in_omp_attribute_pragma |
| into struct cp_omp_declare_simd_data. |
| (cp_finish_omp_declare_variant): Add in_omp_attribute_pragma |
| argument. If set, allow a comma also before match clause. |
| (cp_parser_late_parsing_omp_declare_simd): If in_omp_attribute_pragma, |
| allow a comma also before the first clause. Adjust |
| cp_finish_omp_declare_variant caller. |
| (cp_parser_omp_declare_target): If in_omp_attribute_pragma, allow |
| a comma also before the first clause. |
| (cp_parser_omp_declare_reduction_exprs): Likewise. |
| (cp_parser_omp_requires): Likewise. |
| * decl.c (initialize_predefined_identifiers): Initialize |
| omp_identifier. |
| * decl2.c (cplus_decl_attributes): Reject omp::directive and |
| omp::sequence attributes. |
| |
| 2021-07-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/101297 |
| * parser.c (cp_parser_omp_atomic): Consume comma only if it |
| appears before a CPP_NAME. |
| |
| 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-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-01 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/96204 |
| * pt.c (finish_template_variable): Pass the partially |
| instantiated template and its args to instantiate_template. |
| (instantiate_class_template_1): No need to call |
| push_nested_class and pop_nested_class around the call to |
| most_specialized_partial_spec. |
| (instantiate_template_1): Pass the partially instantiated |
| template to lookup_template_variable. |
| (most_specialized_partial_spec): Use push_access_scope_guard |
| to set the access scope appropriately. Use |
| deferring_access_check_sentinel to force access to get checked |
| immediately. |
| (instantiate_decl): Just pass the VAR_DECL to |
| most_specialized_partial_spec. |
| |
| 2021-06-30 Patrick Palka <ppalka@redhat.com> |
| |
| * constraint.cc (get_normalized_constraints_from_decl): Use |
| push_access_scope_guard instead of push_nested_class_guard. |
| * cp-tree.h (struct push_nested_class_guard): Replace with ... |
| (struct push_access_scope_guard): ... this. |
| * pt.c (push_access_scope): When the argument corresponds to |
| a class type, push the class instead of its context. |
| (pop_access_scope): Adjust accordingly. |
| |
| 2021-06-30 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/100975 |
| DR 2397 |
| * decl.c (create_array_type_for_decl): Allow array of auto. |
| |
| 2021-06-29 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (instantiate_decl): Only consider partial specializations of |
| actual variable templates. |
| |
| 2021-06-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/96204 |
| * pt.c (instantiate_class_template_1): Enter the scope of the |
| type when calling most_specialized_partial_spec. |
| |
| 2021-06-26 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-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-25 Martin Sebor <msebor@redhat.com> |
| |
| * call.c (build_over_call): Replace direct uses of TREE_NO_WARNING |
| with warning_suppressed_p, suppress_warning, and copy_no_warning, or |
| nothing if not necessary. |
| (set_up_extended_ref_temp): Same. |
| * class.c (layout_class_type): Same. |
| * constraint.cc (constraint_satisfaction_value): Same. |
| * coroutines.cc (finish_co_await_expr): Same. |
| (finish_co_yield_expr): Same. |
| (finish_co_return_stmt): Same. |
| (build_actor_fn): Same. |
| (coro_rewrite_function_body): Same. |
| (morph_fn_to_coro): Same. |
| * cp-gimplify.c (genericize_eh_spec_block): Same. |
| (gimplify_expr_stmt): Same. |
| (cp_genericize_r): Same. |
| (cp_fold): Same. |
| * cp-ubsan.c (cp_ubsan_instrument_vptr): Same. |
| * cvt.c (cp_fold_convert): Same. |
| (convert_to_void): Same. |
| * decl.c (wrapup_namespace_globals): Same. |
| (grokdeclarator): Same. |
| (finish_function): Same. |
| (require_deduced_type): Same. |
| * decl2.c (no_linkage_error): Same. |
| (c_parse_final_cleanups): Same. |
| * except.c (expand_end_catch_block): Same. |
| * init.c (build_new_1): Same. |
| (build_new): Same. |
| (build_vec_delete_1): Same. |
| (build_vec_init): Same. |
| (build_delete): Same. |
| * method.c (defaultable_fn_check): Same. |
| * parser.c (cp_parser_fold_expression): Same. |
| (cp_parser_primary_expression): Same. |
| * pt.c (push_tinst_level_loc): Same. |
| (tsubst_copy): Same. |
| (tsubst_omp_udr): Same. |
| (tsubst_copy_and_build): Same. |
| * rtti.c (build_if_nonnull): Same. |
| * semantics.c (maybe_convert_cond): Same. |
| (finish_return_stmt): Same. |
| (finish_parenthesized_expr): Same. |
| (cp_check_omp_declare_reduction): Same. |
| * tree.c (build_cplus_array_type): Same. |
| * typeck.c (build_ptrmemfunc_access_expr): Same. |
| (cp_build_indirect_ref_1): Same. |
| (cp_build_function_call_vec): Same. |
| (warn_for_null_address): Same. |
| (cp_build_binary_op): Same. |
| (unary_complex_lvalue): Same. |
| (cp_build_modify_expr): Same. |
| (build_x_modify_expr): Same. |
| (convert_for_assignment): Same. |
| |
| 2021-06-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98832 |
| * pt.c (maybe_aggr_guide): Handle alias templates appropriately. |
| |
| 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-06-24 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_omp_split_clauses): Pass C_ORT_OMP_TARGET instead of |
| C_ORT_OMP for clauses on target construct. |
| (OMP_TARGET_CLAUSE_MASK): Add in_reduction clause. |
| (cp_parser_omp_target): For non-combined target add |
| map (always, tofrom:) clauses for OMP_CLAUSE_IN_REDUCTION. Pass |
| C_ORT_OMP_TARGET to finish_omp_clauses. |
| * semantics.c (handle_omp_array_sections_1): Adjust ort handling |
| for addition of C_ORT_OMP_TARGET and simplify, mapping clauses are |
| never present on C_ORT_*DECLARE_SIMD. |
| (handle_omp_array_sections): Likewise. |
| (finish_omp_clauses): Likewise. Handle OMP_CLAUSE_IN_REDUCTION |
| on C_ORT_OMP_TARGET, set OMP_CLAUSE_MAP_IN_REDUCTION on |
| corresponding map clauses. |
| * pt.c (tsubst_expr): Pass C_ORT_OMP_TARGET instead of C_ORT_OMP for |
| clauses on target construct. |
| |
| 2021-06-23 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/101174 |
| * pt.c (push_access_scope): For artificial deduction guides, |
| set the access scope to that of the constructor. |
| (pop_access_scope): Likewise. |
| (build_deduction_guide): Don't set DECL_CONTEXT on the guide. |
| |
| 2021-06-23 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/86439 |
| * call.c (print_error_for_call_failure): Constify 'args' parameter. |
| (perform_dguide_overload_resolution): Define. |
| * cp-tree.h: (perform_dguide_overload_resolution): Declare. |
| * pt.c (do_class_deduction): Use perform_dguide_overload_resolution |
| instead of build_new_function_call. Don't use tf_decltype or |
| set cp_unevaluated_operand. Remove unnecessary NULL_TREE tests. |
| |
| 2021-06-21 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/67302 |
| * typeck.c (check_return_expr): Call maybe_undo_parenthesized_ref |
| sooner, before the NRVO handling. |
| |
| 2021-06-21 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/80431 |
| * tree.c (bot_replace): Use convert_to_base to build the |
| conversion to the (morally) virtual base. |
| |
| 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-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101106 |
| * decl.c (duplicate_decls): Make 'deleted after first declaration' |
| pedwarn on by default. |
| |
| 2021-06-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101029 |
| * init.c (build_vec_init): Preserve the type of base. |
| |
| 2021-06-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101078 |
| PR c++/91706 |
| * pt.c (tsubst_baselink): Update binfos in non-dependent case. |
| |
| 2021-06-15 Robin Dapp <rdapp@linux.ibm.com> |
| |
| * decl.c (duplicate_decls): Likewise. |
| |
| 2021-06-14 Tobias Burnus <tobias@codesourcery.com> |
| |
| PR c/100913 |
| * parser.c (cp_parser_omp_clause_affinity): No need to set iterator |
| var in the error case. |
| |
| 2021-06-13 Trevor Saunders <tbsaunde@tbsaunde.org> |
| |
| * constexpr.c (cxx_eval_call_expression): Iterate over vec<> |
| with range based for. |
| (cxx_eval_store_expression): Likewise. |
| (cxx_eval_loop_expr): Likewise. |
| * decl.c (wrapup_namespace_globals): Likewise. |
| (cp_finish_decl): Likewise. |
| (cxx_simulate_enum_decl): Likewise. |
| * parser.c (cp_parser_postfix_expression): Likewise. |
| |
| 2021-06-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/101029 |
| * init.c (build_vec_init): Shortcut [0] case. |
| |
| 2021-06-12 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (lookup_template_class_1): Shortcut current_class_type. |
| |
| 2021-06-11 Patrick Palka <ppalka@redhat.com> |
| |
| DR 1227 |
| PR c++/96560 |
| * pt.c (tsubst_arg_types): Rearrange so that we substitute into |
| TYPE_ARG_TYPES in forward order while short circuiting |
| appropriately. Adjust formatting. |
| |
| 2021-06-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/100974 |
| * cp-tree.h (struct saved_scope): Add consteval_if_p |
| member. Formatting fix for the discarded_stmt comment. |
| (in_consteval_if_p, IF_STMT_CONSTEVAL_P): Define. |
| * parser.c (cp_parser_lambda_expression): Temporarily disable |
| in_consteval_if_p when parsing lambda body. |
| (cp_parser_selection_statement): Parse consteval if. |
| * decl.c (struct named_label_entry): Add in_consteval_if member. |
| (level_for_consteval_if): New function. |
| (poplevel_named_label_1, check_previous_goto_1, check_goto): Handle |
| consteval if. |
| * constexpr.c (cxx_eval_builtin_function_call): Clarify in comment |
| why CP_BUILT_IN_IS_CONSTANT_EVALUATED needs to *non_constant_p |
| for !ctx->manifestly_const_eval. |
| (cxx_eval_conditional_expression): For IF_STMT_CONSTEVAL_P evaluate |
| condition as if it was __builtin_is_constant_evaluated call. |
| (potential_constant_expression_1): For IF_STMT_CONSTEVAL_P always |
| recurse on both branches. |
| * cp-gimplify.c (genericize_if_stmt): Genericize IF_STMT_CONSTEVAL_P |
| as the else branch. |
| * pt.c (tsubst_expr) <case IF_STMT>: Copy IF_STMT_CONSTEVAL_P. |
| Temporarily set in_consteval_if_p when recursing on |
| IF_STMT_CONSTEVAL_P then branch. |
| (tsubst_lambda_expr): Temporarily disable |
| in_consteval_if_p when instantiating lambda body. |
| * call.c (immediate_invocation_p): Return false when |
| in_consteval_if_p. |
| |
| 2021-06-11 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/100995 |
| * constexpr.c (maybe_constexpr_fn): New. |
| * cp-tree.h (maybe_constexpr_fn): Declare. |
| * semantics.c (find_std_constant_evaluated_r): New. |
| (maybe_warn_for_constant_evaluated): New. |
| (finish_if_stmt_cond): Call it. |
| |
| 2021-06-10 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/67829 |
| * pt.c (unify) <case BOUND_TEMPLATE_TEMPLATE_PARM>: When |
| the TEMPLATE_DECL of a BOUND_TEMPLATE_TEMPLATE_PARM argument is |
| a template template parameter, adjust to the |
| TEMPLATE_TEMPLATE_PARAMETER before falling through. |
| |
| 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-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> |
| |
| * parser.c (cp_parser_string_literal): Adjust diagnostic. |
| |
| 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 |
| * name-lookup.c (get_class_binding): Keep a BASELINK. |
| (set_inherited_value_binding_p): Adjust. |
| * lambda.c (is_lambda_ignored_entity): Adjust. |
| * pt.c (lookup_template_function): Copy a BASELINK before |
| modifying it. |
| |
| 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-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100102 |
| * init.c (build_offset_ref): Return the BASELINK for a static |
| member function. |
| |
| 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-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-04 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100893 |
| * pt.c (convert_template_argument): Strip top-level cv-quals |
| on the substituted type of a non-type template parameter. |
| |
| 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-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/100872 |
| * name-lookup.c (maybe_save_operator_binding): Add op_attr after all |
| ATTR_IS_DEPENDENT attributes in the DECL_ATTRIBUTES list rather than |
| to the start. |
| |
| 2021-06-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100592 |
| * decl.c (make_typename_type): After calling |
| lookup_template_class, adjust the result to its TYPE_NAME and |
| then consider the tf_keep_type_decl flag. |
| |
| 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-03 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/100859 |
| * semantics.c (handle_omp_array_sections_1): For |
| OMP_CLAUSE_{AFFINITY,DEPEND} handle FIELD_DECL base using |
| finish_non_static_data_member and allow this as base. |
| (finish_omp_clauses): Move OMP_CLAUSE_AFFINITY |
| after depend only cases. Let this be diagnosed by !lvalue_p |
| case for OMP_CLAUSE_{AFFINITY,DEPEND} and remove useless |
| assert. |
| * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_AFFINITY. |
| |
| 2021-06-02 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-06-01 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/65816 |
| * init.c (expand_aggr_init_1): Check |
| type_has_non_user_provided_default_constructor instead of |
| type_has_user_provided_constructor. |
| |
| 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++/94492 |
| * decl2.c (cp_warn_deprecated_use): Check warning_enabled_at. |
| |
| 2021-05-31 Richard Biener <rguenther@suse.de> |
| |
| PR c++/88601 |
| * cp-objcp-common.c (names_builtin_p): Handle |
| RID_BUILTIN_SHUFFLEVECTOR. |
| * cp-tree.h (build_x_shufflevector): Declare. |
| * parser.c (cp_parser_postfix_expression): Handle |
| RID_BUILTIN_SHUFFLEVECTOR. |
| * pt.c (tsubst_copy_and_build): Handle IFN_SHUFFLEVECTOR. |
| * typeck.c (build_x_shufflevector): Build either a lowered |
| VEC_PERM_EXPR or an unlowered shufflevector via a temporary |
| internal function IFN_SHUFFLEVECTOR. |
| |
| 2021-05-28 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (build_data_member_initialization): Use tsi_range. |
| (build_constexpr_constructor_member_initializers): Likewise. |
| (constexpr_fn_retval, cxx_eval_statement_list): Likewise. |
| (potential_constant_expression_1): Likewise. |
| * coroutines.cc (await_statement_expander): Likewise. |
| (await_statement_walker): Likewise. |
| * module.cc (trees_out::core_vals): Likewise. |
| * pt.c (tsubst_expr): Likewise. |
| * semantics.c (set_cleanup_locs): Likewise. |
| |
| 2021-05-28 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-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR middle-end/99928 |
| * semantics.c (handle_omp_array_sections): Copy |
| OMP_CLAUSE_MAP_IMPLICIT. |
| (finish_omp_clauses): Move not just OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT |
| marked clauses last, but also OMP_CLAUSE_MAP_IMPLICIT. Add |
| map_firstprivate_head bitmap, set it for GOMP_MAP_FIRSTPRIVATE_POINTER |
| maps and silently remove OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT if it is |
| present too. For OMP_CLAUSE_MAP_IMPLICIT silently remove the clause |
| if present in map_head, map_field_head or map_firstprivate_head |
| bitmaps. |
| |
| 2021-05-28 Tobias Burnus <tobias@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_clause_affinity): New. |
| (cp_parser_omp_clause_name, cp_parser_omp_var_list_no_open, |
| cp_parser_omp_all_clauses, OMP_TASK_CLAUSE_MASK): Handle affinity |
| clause. |
| * semantics.c (handle_omp_array_sections_1, handle_omp_array_sections, |
| finish_omp_clauses): Likewise. |
| |
| 2021-05-27 Matthias Kretz <kretz@kde.org> |
| |
| PR c++/100716 |
| * error.c (dump_template_bindings): Include code to print |
| "[with" and ']', conditional on whether anything is printed at |
| all. This is tied to whether a semicolon is needed to separate |
| multiple template parameters. If the template argument repeats |
| the template parameter (T = T), then skip the parameter. |
| (dump_substitution): Moved code to print "[with" and ']' to |
| dump_template_bindings. |
| (dump_function_decl): Partial revert of PR50828, which masked |
| TFF_TEMPLATE_NAME for all of dump_function_decl. Now |
| TFF_TEMPLATE_NAME is masked for the scope of the function and |
| only carries through to dump_function_name. |
| (dump_function_name): Avoid calling dump_template_parms if |
| TFF_TEMPLATE_NAME is set. |
| |
| 2021-05-27 Matthias Kretz <kretz@kde.org> |
| |
| PR c++/100763 |
| * error.c: Call dump_scope when printing a typedef. |
| |
| 2021-05-27 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/99893 |
| * tree.c (cp_walk_subtrees) <case STATIC_ASSERT>: New case. |
| |
| 2021-05-27 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-05-27 Patrick Palka <ppalka@redhat.com> |
| |
| DR 1315 |
| PR c++/67593 |
| PR c++/96555 |
| * pt.c (process_partial_specialization): Don't error on a |
| non-simple non-type template argument that involves template |
| parameters. |
| (for_each_template_parm_r): Don't walk TRAIT_EXPR, PLUS_EXPR, |
| MULT_EXPR, or SCOPE_REF when include_nondeduced_p is false. |
| |
| 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-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100368 |
| * tree.c (build_target_expr_with_type): Don't call force_rvalue |
| on CALL_EXPR initializer. Simplify now that bot_manip is no |
| longer a caller. |
| (bot_manip): Use force_target_expr instead of |
| build_target_expr_with_type. |
| |
| 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-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-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR middle-end/99928 |
| * semantics.c (finish_omp_clauses): Move firstprivate clauses with |
| OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT to the end of the chain. Don't error |
| if a decl is mentioned both in map clause and in such firstprivate |
| clause unless OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT_TARGET is also set. |
| |
| 2021-05-20 Jason Merrill <jason@redhat.com> |
| |
| * call.c (reference_binding): Check for designator. |
| (implicit_conversion_1, build_special_member_call): Likewise. |
| * decl.c (reshape_init_r): Likewise. |
| * pt.c (do_class_deduction): Likewise. |
| * typeck2.c (digest_init_r): Likewise. |
| |
| 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 Jonathan Wakely <jwakely@redhat.com> |
| |
| * call.c (maybe_warn_array_conv): Use new warning option. |
| * decl.c (mark_inline_variable, grokdeclarator): Likewise. |
| * error.c (maybe_warn_cpp0x): Likewise. |
| * parser.c (cp_parser_primary_expression) |
| (cp_parser_unqualified_id) |
| (cp_parser_pseudo_destructor_name) |
| (cp_parser_lambda_introducer) |
| (cp_parser_lambda_declarator_opt) |
| (cp_parser_selection_statement) |
| (cp_parser_init_statement) |
| (cp_parser_decomposition_declaration) |
| (cp_parser_function_specifier_opt) |
| (cp_parser_static_assert) |
| (cp_parser_namespace_definition) |
| (cp_parser_using_declaration) |
| (cp_parser_asm_definition) |
| (cp_parser_ctor_initializer_opt_and_function_body) |
| (cp_parser_initializer_list) |
| (cp_parser_type_parameter_key) |
| (cp_parser_member_declaration) |
| (cp_parser_try_block) |
| (cp_parser_std_attribute_spec): Likewise. |
| * pt.c (check_template_variable): Likewise. |
| |
| 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> |
| |
| * pt.c (build_deduction_guide): Treat the implicit deduction guide |
| as a member of the class. |
| |
| 2021-05-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/100596 |
| * cp-tree.h (any_non_type_attribute_p): Remove. |
| * decl.c (grokdeclarator): Turn an error into a warning and only |
| warn for standard attributes. |
| * decl2.c (any_non_type_attribute_p): Remove. |
| * parser.c (cp_parser_elaborated_type_specifier): Turn an error |
| into a warning and only warn for standard attributes. |
| (cp_parser_member_declaration): Likewise. |
| |
| 2021-05-19 Martin Liska <mliska@suse.cz> |
| |
| PR testsuite/100658 |
| * mangle.c (write_encoding): Fix typos. |
| |
| 2021-05-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR middle-end/99928 |
| * parser.c (cp_parser_omp_master): Set OMP_MASTER_COMBINED on |
| master when combined with taskloop. |
| (cp_parser_omp_parallel): Don't set OMP_PARALLEL_COMBINED on |
| parallel master when not combined with taskloop. |
| |
| 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 Marek Polacek <polacek@redhat.com> |
| |
| * class.c (classtype_has_non_deleted_copy_ctor): Remove. |
| * constraint.cc (contains_wildcard_p): Likewise. |
| (get_template_head_requirements): Likewise. |
| (check_constrained_friend): Likewise. |
| (subsumes_constraints): Likewise. |
| * cp-tree.h (classtype_has_non_deleted_copy_ctor): Likewise. |
| (push_void_library_fn): Likewise. |
| (get_pattern_parm): Likewise. |
| (get_template_parms_at_level): Likewise. |
| (lambda_return_type): Likewise. |
| (get_template_head_requirements): Likewise. |
| (check_constrained_friend): Likewise. |
| (subsumes_constraints): Likewise. |
| * decl.c (push_void_library_fn): Likewise. |
| * lambda.c (lambda_return_type): Likewise. |
| * pt.c (get_template_parms_at_level): Likewise. |
| (get_pattern_parm): Likewise. |
| |
| 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 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-17 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/100635 |
| * call.c (convert_like_internal): Print different diagnostic if |
| the lvalue reference is const. |
| |
| 2021-05-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/95870 |
| * pt.c (enclosing_instantiation_of): Just compare |
| DECL_SOURCE_LOCATION. |
| (regenerate_decl_from_template): Copy DECL_SOURCE_LOCATION. |
| |
| 2021-05-14 Marek Polacek <polacek@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/99032 |
| * cp-tree.h (any_non_type_attribute_p): Declare. |
| * decl.c (grokdeclarator): Diagnose when an attribute appertains to |
| a friend declaration that is not a definition. |
| * decl2.c (any_non_type_attribute_p): New. |
| * parser.c (cp_parser_decl_specifier_seq): Diagnose standard attributes |
| in the middle of decl-specifiers. |
| (cp_parser_elaborated_type_specifier): Diagnose when an attribute |
| appertains to a friend declaration that is not a definition. |
| (cp_parser_member_declaration): Likewise. |
| |
| 2021-05-12 Marek Polacek <polacek@redhat.com> |
| |
| * pt.c (tsubst_copy_and_build): Add warn_int_in_bool_context |
| sentinel. |
| |
| 2021-05-12 Marcel Vollweiler <marcel@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_clause_map): Support map-type-modifier |
| 'close'. |
| |
| 2021-05-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100517 |
| * typeck.c (build_reinterpret_cast_1): Check intype on |
| cast to vector. |
| |
| 2021-05-11 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/51577 |
| * name-lookup.c (maybe_save_operator_binding): Unconditionally |
| enable for all function templates, not just generic lambdas. |
| Handle compound-assignment operator expressions. |
| * typeck.c (build_x_compound_expr): Call maybe_save_operator_binding |
| in the type-dependent case. |
| (build_x_modify_expr): Likewise. Move declaration of 'op' closer |
| to its first use. |
| |
| 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-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. |
| |
| 2021-05-10 Martin Liska <mliska@suse.cz> |
| |
| * decl.c (duplicate_decls): Use startswith |
| function instead of strncmp. |
| (cxx_builtin_function): Likewise. |
| (omp_declare_variant_finalize_one): Likewise. |
| (grokfndecl): Likewise. |
| * error.c (dump_decl_name): Likewise. |
| * mangle.c (find_decomp_unqualified_name): Likewise. |
| (write_guarded_var_name): Likewise. |
| (decl_tls_wrapper_p): Likewise. |
| * parser.c (cp_parser_simple_type_specifier): Likewise. |
| (cp_parser_tx_qualifier_opt): Likewise. |
| * pt.c (template_parm_object_p): Likewise. |
| (dguide_name_p): Likewise. |
| |
| 2021-05-10 Martin Liska <mliska@suse.cz> |
| |
| PR c++/99616 |
| * decl.c (grokdeclarator): Remove redundant NULL check. |
| |
| 2021-05-07 Jason Merrill <jason@redhat.com> |
| |
| * tree.c (rvalue): Assert expr is not a class lvalue. |
| |
| 2021-05-07 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (build_stub_object): Declare. |
| * method.c (build_stub_object): No longer static. |
| * call.c (can_convert): Use it. |
| * tree.c (build_dummy_object): Adjust comment. |
| * typeck.c (cp_build_binary_op): Wrap SPACESHIP_EXPR in a |
| TARGET_EXPR. |
| |
| 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-05-04 Tobias Burnus <tobias@codesourcery.com> |
| |
| * semantics.c (finish_omp_reduction_clause): Accept float + complex |
| for || and && reductions. |
| |
| 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-05-03 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/68942 |
| PR c++/100344 |
| * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: Set tf_conv |
| only when the callee is a FUNCTION_DECL. |
| |
| 2021-05-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/100055 |
| * decl.c (grokfndecl): Check current_template_parms. |
| |
| 2021-05-03 Marek Polacek <polacek@redhat.com> |
| |
| DR 1312 |
| * constexpr.c (cxx_eval_constant_expression): Don't check |
| integer_zerop. |
| |
| 2021-05-01 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (class ovl_iterator): Allow copying. Add op==. |
| (class ovl_range, class lkp_range): New. |
| * call.c (build_op_call_1, add_candidates): Use them. |
| (build_op_delete_call, has_trivial_copy_assign_p): Likewise. |
| (has_trivial_copy_p): Likewise. |
| * class.c (handle_using_decl, get_basefndecls): Likewise. |
| (maybe_warn_about_overly_private_class): Likewise. |
| (warn_hidden, add_implicitly_declared_members): Likewise. |
| (check_methods, clone_constructors_and_destructors): Likewise. |
| (type_has_user_nondefault_constructor): Likewise. |
| |
| 2021-04-29 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (cxx_fold_indirect_ref_1): Only set *empty_base if we |
| don't find a field. |
| |
| 2021-04-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/51344 |
| * decl2.c (grokfield): Call cplus_decl_attributes for friend. |
| (save_template_attributes): Use chainon. |
| * friend.c (do_friend): Remove attrlist parm. |
| * cp-tree.h (do_friend): Adjust. |
| * class.c (add_implicitly_declared_members): Adjust. |
| * decl.c (grokdeclarator): Adjust. |
| * pt.c (apply_late_template_attributes): Optimize. |
| |
| 2021-04-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97974 |
| * class.c (finish_struct_anon_r): Drop complain parm. |
| Remove non-field diagnostic. |
| (finish_struct_anon): Adjust. |
| * decl.c (fixup_anonymous_aggr): Move non-field diagnostic here. |
| |
| 2021-04-29 Jason Merrill <jason@redhat.com> |
| |
| * 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-04-29 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h: Clarify comments. |
| * pt.c (get_template_parm_object): Add assert. |
| * semantics.c (finish_compound_literal): Clear TREE_HAS_CONSTRUCTOR. |
| * tree.c (zero_init_expr_p): Check TREE_HAS_CONSTRUCTOR. |
| * typeck2.c (store_init_value): Likewise. |
| |
| 2021-04-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/68942 |
| * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: When KOENIG_P, |
| set tf_conv during the initial substitution into the function. |
| |
| 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-28 Jakub Jelinek <jakub@redhat.com> |
| |
| * module.cc: Remove #error that triggers if DEV-PHASE is empty. |
| |
| 2021-04-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/92145 |
| * class.c (classtype_has_depr_implicit_copy): Check DECL_CONTEXT |
| of operator=. |
| |
| 2021-04-27 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/88580 |
| * pt.c (tsubst_initializer_list): Correctly handle the case |
| where an argument inside a base initializer pack expansion is |
| itself a pack expansion. |
| |
| 2021-04-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/100209 |
| * constexpr.c (cxx_fold_indirect_ref): Try to canonicalize the |
| object/offset pair for a POINTER_PLUS_EXPR of a COMPONENT_REF |
| with a negative offset into one whose offset is nonnegative |
| before calling cxx_fold_indirect_ref_1. |
| |
| 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-24 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/87709 |
| * parser.c (cp_parser_type_id_1): If we see a template |
| placeholder, first try simulating an error before issuing |
| a real error. |
| |
| 2021-04-23 Patrick Palka <ppalka@redhat.com> |
| |
| PR c++/98767 |
| * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): |
| Adjust parameter list loop to iterate over 'types' instead of |
| 'args'. Output the trailing '...' for a variadic function. |
| Remove PARM_DECL support. |
| (pp_cxx_requires_expr): Pretty print the parameter list directly |
| instead of going through pp_cxx_parameter_declaration_clause. |
| |
| 2021-04-23 Patrick Palka <ppalka@redhat.com> |
| |
| DR 2374 |
| * decl.c (is_direct_enum_init): Check the implicit |
| convertibility requirement added by CWG 2374. |
| |
| 2021-04-23 Martin Liska <mliska@suse.cz> |
| |
| * cp-tree.h (STATIC_ASSERT): Prefer static assert. |
| * lex.c (init_operators): Remove run-time check. |
| |
| 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-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-21 Martin Liska <mliska@suse.cz> |
| |
| Revert: |
| 2021-04-21 Martin Liska <mliska@suse.cz> |
| |
| * error.c (dump_decl): Use flags in dump_generic_node call. |
| |
| 2021-04-21 Martin Liska <mliska@suse.cz> |
| |
| * error.c (dump_decl): Use flags in dump_generic_node call. |
| |
| 2021-04-21 Martin Liska <mliska@suse.cz> |
| |
| * error.c (dump_decl): Support anonymous labels. |
| |
| 2021-04-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/100109 |
| * pt.c (find_parameter_packs_r): Look into enum initializers. |
| |
| 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 |
| |
|