X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2Fcp%2FChangeLog;h=31b69bf725531e62bae070804c7015c620e37f9b;hb=65791f426fc950b0af4e6e2ef675c213e623b16f;hp=2b6e3b68b3c60876e8b1bc228623f590a36cc121;hpb=5c9c546b9d321b34fd02d2cab8d020297dd7686a;p=gcc.git diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2b6e3b68b3c..31b69bf7255 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,784 @@ +2017-12-01 Jakub Jelinek + + PR c/79153 + * cp-gimplify.c (genericize_switch_stmt): Emit LABEL_EXPR for the + break label into SWITCH_BODY instead of after it and set + SWITCH_BREAK_LABEL_P on it. + * parser.c (cp_parser_objc_expression): Add FALLTHRU comment to avoid + -Wimplicit-fallthrough warning. + +2017-11-30 Jason Merrill + + PR c++/82219 - bogus -Wignored-qualifiers with template + * pt.c (tsubst_copy_and_build) [STATIC_CAST_EXPR]: Suppress + -Wignored-qualifiers. + +2017-11-29 David Malcolm + + * parser.c (cp_parser_unary_expression): Generate a location for + "noexcept". + (cp_parser_trait_expr): Generate and return a location_t, + converting the return type from tree to cp_expr. + (cp_parser_static_assert): Pass location of the condition to + finish_static_assert, rather than that of the "static_assert" + token, where available. + +2017-11-29 Paolo Carlini + + PR c++/82293 + * lambda.c (nonlambda_method_basetype): Don't use LAMBDA_TYPE_P + on a null type. + +2017-11-29 Jason Merrill + + PR c++/82760 - memory corruption with aligned new. + * call.c (build_operator_new_call): Update *args if we add the + align_arg. + +2017-11-28 Jakub Jelinek + + PR sanitizer/81275 + * cp-tree.h (SWITCH_STMT_ALL_CASES_P): Define. + (SWITCH_STMT_NO_BREAK_P): Define. + (note_break_stmt, note_iteration_stmt_body_start, + note_iteration_stmt_body_end): Declare. + * decl.c (struct cp_switch): Add has_default_p, break_stmt_seen_p + and in_loop_body_p fields. + (push_switch): Clear them. + (pop_switch): Set SWITCH_STMT_CANNOT_FALLTHRU_P if has_default_p + and !break_stmt_seen_p. Assert in_loop_body_p is false. + (note_break_stmt, note_iteration_stmt_body_start, + note_iteration_stmt_body_end): New functions. + (finish_case_label): Set has_default_p when both low and high + are NULL_TREE. + * parser.c (cp_parser_iteration_statement): Use + note_iteration_stmt_body_start and note_iteration_stmt_body_end + around parsing iteration body. + * pt.c (tsubst_expr): Likewise. + * cp-objcp-common.c (cxx_block_may_fallthru): Return false for + SWITCH_STMT which contains no BREAK_STMTs, contains a default: + CASE_LABEL_EXPR and where SWITCH_STMT_BODY isn't empty and + can't fallthru. + * semantics.c (finish_break_stmt): Call note_break_stmt. + * cp-gimplify.c (genericize_switch_stmt): Copy SWITCH_STMT_ALL_CASES_P + bit to SWITCH_ALL_CASES_P. Assert that if SWITCH_STMT_NO_BREAK_P then + the break label is not TREE_USED. + +2017-11-28 Julia Koval + Sebastian Peryt + + * Make-lang.in (cp/cp-array-notation.o, cp/cp-cilkplus.o): Delete. + * call.c (convert_for_arg_passing, build_cxx_call): Remove cilkplus. + * constexpr.c (potential_constant_expression_1): Ditto. + * cp-array-notation.c: Delete. + * cp-cilkplus.c: Ditto. + * cp-cilkplus.h: Ditto. + * cp-gimplify.c (cp_gimplify_expr, cp_fold_r, cp_genericize): Remove + cilkplus condition. + * cp-objcp-common.c (ARRAY_NOTATION_REF): Delete. + * cp-tree.h (cilkplus_an_triplet_types_ok_p): Delete. + * decl.c (grokfndecl, finish_function): Remove cilkplus condition. + * error.c (dump_decl, dump_expr): Remove ARRAY_NOTATION_REF condition. + * lambda.c (cp-cilkplus.h): Remove. + * parser.c (cp_parser_cilk_simd, cp_parser_cilk_for, + cp_parser_cilk_simd_vectorlength): Delete. + (cp_debug_parser, cp_parser_ctor_initializer_opt_and_function_body, + cp_parser_postfix_expression, + cp_parser_postfix_open_square_expression, + cp_parser_statement, cp_parser_jump_statement, + cp_parser_direct_declarator, + cp_parser_late_return_type_opt, cp_parser_gnu_attribute_list, + cp_parser_omp_clause_name, cp_parser_omp_clause_aligned, + cp_parser_omp_clause_linear, cp_parser_omp_all_clauses, + cp_parser_omp_flush, + cp_parser_omp_for_cond, cp_parser_omp_for_incr, + cp_parser_omp_for_loop_init, + cp_parser_omp_for_loop, + cp_parser_omp_declare_simd): Remove cilkplus support. + (CILK_SIMD_FN_CLAUSE_MASK, cp_parser_late_parsing_cilk_simd_fn_info, + cp_parser_cilk_grainsize): Remove. + (cp_parser_pragma, c_parse_file): Remove cilkplus support. + (cp_parser_cilk_simd_vectorlength, cp_parser_cilk_simd_linear, + cp_parser_cilk_simd_clause_name, cp_parser_cilk_simd_all_clauses, + cp_parser_cilk_simd, cp_parser_cilk_for): Remove. + * parser.h (IN_CILK_SIMD_FOR, IN_CILK_SPAWN): Remove. + * pt.c (tsubst_attribute, tsubst_expr, tsubst_copy_and_build): Remove + cilkplus support. + * semantics.c (finish_goto_stmt, begin_while_stmt, finish_do_body, + finish_init_stmt, finish_switch_cond, simplify_aggr_init_expr, + finish_omp_clauses, finish_omp_clauses, finish_omp_for): Remove + cilkplus + support. + * tree.c (lvalue_kind): Remove ARRAY_NOTATION_REF conditon. + * typeck.c (cp_build_array_ref, cp_build_compound_expr, + check_return_expr): Remove cilkplus support. + +2017-11-28 Jakub Jelinek + + * cp-gimplify.c (genericize_switch_stmt): Build SWITCH_EXPR using + build2_loc instead of build3_loc. + +2017-11-27 Martin Sebor + + PR c++/83058 + * init.c (warn_placement_new_too_small): Use offset_int instead of + HOST_WIDE_INT. + +2017-11-27 Jakub Jelinek + + PR c++/81888 + * parser.c (cp_parser_decomposition_declaration): Reject just + BRACE_ENCLOSED_INITIALIZER_P initializers with nelts != 1 rather + than all such CONSTRUCTORs, and only if is_direct_init is true. + +2017-11-27 Jason Merrill + + * pt.c (primary_template_specialization_p): Rename from + primary_template_instantiation_p. Don't check + DECL_TEMPLATE_INSTANTIATION. + * call.c, cp-tree.h, decl2.c: Adjust. + +2017-11-27 Jakub Jelinek + + PR c++/81675 + * cp-gimplify.c (cp_fold) : Don't return immediately + for VOID_TYPE_P COND_EXPRs, instead fold the operands and if op0 is + INTEGER_CST, ensure that both op1 and op2 are non-NULL and fall + through into normal folding, otherwise just rebuild x if any op + changed. + + * g++.dg/warn/pr81675.C: New test. + +2017-11-14 Boris Kolpackov + + * Make-lang.in (c++.install-plugin): Install backend import library. + +2017-11-23 Jakub Jelinek + + * parser.c (cp_parser_omp_declare): Change return type to bool from + void, return true for declare simd. + (cp_parser_pragma): Return cp_parser_omp_declare returned value + rather than always false. + +2017-11-23 Mike Stump + Eric Botcazou + + * pt.c (tsubst_expr) : Recurse on 3rd operand. + * semantics.c (finish_while_stmt_cond): Pass 3rd operand to + ANNOTATE_EXPR. + (finish_do_stmt): Likewise. + (finish_for_cond): Likewise. + +2017-11-22 Jakub Jelinek + + PR c++/82401 + * name-lookup.c (member_name_cmp): Return 0 if a == b. + +2017-11-22 David Malcolm + + PR c++/62170 + * error.c (type_to_string): Add leading comment. Add params + "postprocessed", "quote", and "show_color", using them to fix + quoting of the "aka" for types involving typedefs. + (arg_to_string): Update for new params to type_to_string. + (cxx_format_postprocessor::handle): Likewise. + (cp_printer): Convert penultimate param from bool to bool *. + Update call to type_to_string and calls to + defer_phase_2_of_type_diff. + +2017-11-22 Marek Polacek + + PR c++/60336 + PR middle-end/67239 + PR target/68355 + * class.c (layout_class_type): Set DECL_PADDING_P on padding. + * decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P. + (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. + +2017-11-21 Martin Liska + + * class.c (finalize_literal_type_property): Add quotes for + constexpr keyword. + (explain_non_literal_class): Likewise. + * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise. + (is_valid_constexpr_fn): Likewise. + (check_constexpr_ctor_body): Likewise. + (register_constexpr_fundef): Likewise. + (explain_invalid_constexpr_fn): Likewise. + (cxx_eval_builtin_function_call): Likewise. + (cxx_eval_call_expression): Likewise. + (cxx_eval_loop_expr): Likewise. + (potential_constant_expression_1): Likewise. + * decl.c (check_previous_goto_1): Likewise. + (check_goto): Likewise. + (grokfndecl): Likewise. + (grokdeclarator): Likewise. + * error.c (maybe_print_constexpr_context): Likewise. + * method.c (process_subob_fn): Likewise. + (defaulted_late_check): Likewise. + * parser.c (cp_parser_compound_statement): Likewise. + +2017-11-21 Marc Glisse + + * constexpr.c (cxx_eval_constant_expression, + potential_constant_expression_1): Handle POINTER_DIFF_EXPR. + * cp-gimplify.c (cp_fold): Likewise. + * error.c (dump_expr): Likewise. + * typeck.c (pointer_diff): Use POINTER_DIFF_EXPR. + +2017-11-21 Jakub Jelinek + + P0428R2 - familiar template syntax for generic lambdas + * parser.c (cp_parser_lambda_declarator_opt): Don't pedwarn + for cxx2a and above, reword pedwarn for C++14/C++17. + +2017-11-20 David Malcolm + + PR c/81404 + * name-lookup.c: Include "c-family/known-headers.h" + (lookup_name_fuzzy): Call get_cp_stdlib_header_for_name and + potentially return a new suggest_missing_header hint. + +2017-11-20 David Malcolm + + PR c++/72786 + * name-lookup.c (class macro_use_before_def): New class. + (lookup_name_fuzzy): Detect macro that were used before being + defined, and report them as such. + +2017-11-20 Jason Merrill + + * decl2.c (constrain_class_visibility): Don't warn about artificial + fields. + +2017-11-20 Jakub Jelinek + + P0329R4: Designated Initialization + * parser.c (cp_parser_initializer_clause): List in comment grammar + designated-initializer-list. + (cp_parser_initializer_list): Allow .identifier = without pedwarn for + C++2A, parse .identifier { ... }. Improve location_t argument to + pedwarn. Add pedwarn for [cst] = designators. Diagnose ... in + designated initializer list. Diagnose mixing designated and + non-designated initializer clauses for C++2A. Diagnose duplicated + identifiers in designators. + * name-lookup.h (search_anon_aggr): New declaration. + * name-lookup.c (fields_linear_search): Use search_anon_aggr. + (search_anon_aggr): New function. + * typeck2.c (process_init_constructor_record): Allow designator + to skip over some non-static data members. Handle anonymous + aggregates. Add diagnostics for designator order not matching + member declaration order. + +2017-11-20 David Malcolm + + * name-lookup.c: Define INCLUDE_UNIQUE_PTR before including system.h. + Include "c-family/name-hint.h" + (suggest_alternatives_for): Convert "fuzzy_name" from const char * + to name_hint, and rename to "hint". Pass location to + lookup_name_fuzzy. + (lookup_name_fuzzy): Convert return type from const char * + to name_hint. Add location_t param. + * parser.c: Define INCLUDE_UNIQUE_PTR before including system.h. + Include "c-family/name-hint.h" + (cp_parser_diagnose_invalid_type_name): Convert + "suggestion" from const char * to name_hint, and rename to "hint". + Pass location to lookup_name_fuzzy. + +2017-11-20 Nathan Sidwell + + PR c++/82878 + PR c++/78495 + * call.c (build_call_a): Don't set CALL_FROM_THUNK_P for inherited + ctor. + * cp-gimplify.c (cp_genericize_r): Restore THUNK dereference + inhibibition check removed in previous c++/78495 change. + +2017-11-20 Jakub Jelinek + + PR c++/82781 + * constexpr.c (cxx_eval_vector_conditional_expression): New function. + (cxx_eval_constant_expression) : Use it instead + of cxx_eval_conditional_expression. + +2017-11-19 Jakub Jelinek + + PR c/66618 + PR c/69960 + * cp-gimplify.c (c_fully_fold): Add LVAL argument, call + cp_fold_maybe_rvalue instead of cp_fold_rvalue and pass it !LVAL. + +2017-11-16 Jason Merrill + + PR c++/79092 - non-type args of different types are different + * tree.c (cp_tree_equal): Check the type of constants. + * pt.c (unify) [TEMPLATE_PARM_INDEX]: Handle UNIFY_ALLOW_INTEGER + when comparing to previously deduced argument. + (maybe_convert_nontype_argument): New. + (convert_nontype_argument): Call it. + (tsubst_copy_and_build): Handle partial instantiation of + IMPLICIT_CONV_EXPR. + (unify): Ignore type when deducing from array bound. + (dependent_type_p_r): Handle DEFERRED_NOEXCEPT. + (value_dependent_expression_p): Any type-dependent expression is + value-dependent. Handle IMPLICIT_CONV_EXPR. + * cp-tree.h (IMPLICIT_CONV_EXPR_NONTYPE_ARG): New. + * mangle.c (write_template_arg): Strip IMPLICIT_CONV_EXPR. + +2017-11-16 Nathan Sidwell + + PR c++/82836 + PR c++/82737 + * cp-objcp-common.h (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): + Override. + * cp-tree.h (overwrite_mangling): Declare. + * decl2.c (struct mangled_decl_hash): Entries are deletable. + (overwrite_mangling): New. + + PR c++/81060 + * decl.c (xref_tag_1): Push lambda into current scope. + * name-lookup.c (do_pushtag): Don't deal with ts_lambda here. + +2017-11-15 Nathan Sidwell + + PR c++/81574 + * lambda.c (lambda_capture_field_type): Function references are + always catured by reference. + +2017-11-15 Martin Liska + + * decl.c (begin_destructor_body): Use cp_build_fold_indirect_ref + instead of cp_build_indirect_ref. + +2017-11-15 Martin Liska + + * decl.c (begin_destructor_body): In case of VPTR sanitization + (with disabled recovery), zero vptr in order to catch virtual calls + after lifetime of an object. + +2017-11-14 Jason Merrill + + Use GTY((cache)) on some hash tables. + * decl.c (decomp_type_table): Use tree_cache_map. + * init.c (nsdmi_inst): Likewise. + * pt.c (defarg_ints): Likewise. + * cp-objcp-common.c (cp_get_debug_type): Likewise. + +2017-11-13 Jason Merrill + + Capture adjustments for P0588R1. + * semantics.c (process_outer_var_ref): Capture variables when + they are named; complain about non-capture uses when odr-used. + * expr.c (mark_use): Rvalue use looks through capture proxy. + * constexpr.c (potential_constant_expression_1): Improve error about + use of captured variable. + * lambda.c (need_generic_capture, dependent_capture_r) + (do_dependent_capture, processing_nonlambda_template): Remove. + * call.c (build_this): Remove uses of the above. + * decl.c (cp_finish_decl): Likewise. + * semantics.c (maybe_cleanup_point_expr) + (maybe_cleanup_point_expr_void, finish_goto_stmt) + (maybe_convert_cond): Likewise. + * typeck.c (check_return_expr): Likewise. + + Defer folding of *&. + * typeck.c (cp_build_fold_indirect_ref): New. + (cp_build_indirect_ref_1): Split out from cp_build_indirect_ref. + Add 'fold' parameter. + * cp-tree.h: Declare cp_build_fold_indirect_ref. + * call.c, class.c, cp-ubsan.c, decl.c, except.c, init.c, lambda.c, + parser.c, rtti.c, tree.c, typeck.c, typeck2.c: Use it. + * parser.c (do_range_for_auto_deduction): Use RO_UNARY_STAR. + (cp_convert_range_for): Likewise. + * typeck2.c (build_x_arrow): Use RO_ARROW. + + * cp-ubsan.c (cp_ubsan_check_member_access_r): Fix handling of + INDIRECT_REF of ADDR_EXPR. + + PR c++/82360 - ICE with static_cast in template. + * call.c (perform_direct_initialization_if_possible): Check + processing_template_decl. + * typeck.c (build_static_cast_1): Likewise. + +2017-11-13 Ville Voutilainen + + Remove the null check from placement new in all modes + * init.c (build_new_1): Don't do a null check for + a namespace-scope non-replaceable placement new + in any mode unless -fcheck-new is provided. + +2017-11-07 Boris Kolpackov + + * Make-lang.in (CP_PLUGIN_HEADERS): Add operators.def since included + in cp-tree.h. + +2017-11-07 Jakub Jelinek + + PR c++/82835 + * cp-gimplify.c (cxx_omp_clause_apply_fn): For methods pass i - 1 to + convert_default_arg instead of i. + +2017-11-06 Jason Merrill + + P0704R1 - fixing const-qualified pointers to members + * typeck2.c (build_m_component_ref): Also accept in lower stds with + a pedwarn. + +2017-11-06 Paolo Carlini + + PR c++/65579 + * decl2.c (finish_static_data_member_decl): If there's an initializer, + complete the type and re-apply the quals. + +2017-11-06 Martin Liska + + PR middle-end/82404 + * constexpr.c (cxx_eval_builtin_function_call): Handle + __builtin_unreachable call. + (get_function_named_in_call): Declare function earlier. + (constexpr_fn_retval): Skip __builtin_unreachable. + * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Rename to + ... + (cp_maybe_instrument_return): ... this. + (cp_genericize): Call the function unconditionally. + +2017-11-03 Nathan Sidwell + + PR c++/82710 + * decl.c (grokdeclarator): Protect MAYBE_CLASS things from paren + warning too. + +2017-11-02 Paolo Carlini + + PR c++/81957 + * pt.c (make_pack_expansion): Add tsubst_flags_t parameter. + (expand_integer_pack, convert_template_argument, coerce_template_parms, + gen_elem_of_pack_expansion_instantiation, tsubst_pack_expansion, + unify): Adjust calls. + * tree.c (cp_build_qualified_type_real): Likewise. + * cp-tree.h (make_pack_expansion): Adjust declaration. + +2017-11-02 Nathan Sidwell + + * cp-tree.h (IDENTIFIER_NEWDEL_OP_P): Restore, adjust. + (IDENTIFIER_NEW_OP_P): New. + * decl.c (grokdeclarator): Restore IDENTIFIER_NEWDEL_OP_P use. + * pt.c (push_template_decl_real): Likewise. + * typeck.c (check_return_expr): Use IDENTIFIER_NEW_OP_P. + + PR c++/82710 + * decl.c (grokdeclarator): Don't warn when parens protect a return + type from a qualified name. + +2017-11-01 Nathan Sidwell + + * cp-tree.h (enum cp_identifier_kind): Delete cik_newdel_op. + Renumber and reserve udlit value. + (IDENTIFIER_NEWDEL_OP_P): Delete. + (IDENTIFIER_OVL_OP_P): New. + (IDENTIFIER_ASSIGN_OP_P): Adjust. + (IDENTIFIER_CONV_OP_P): Adjust. + (IDENTIFIER_OVL_OP_INFO): Adjust. + (IDENTIFIER_OVL_OP_FLAGS): New. + * decl.c (grokdeclarator): Use IDENTIFIER_OVL_OP_FLAGS. + * lex.c (get_identifier_kind_name): Adjust. + (init_operators): Don't special case new/delete ops. + * mangle.c (write_unqualified_id): Use IDENTIFIER_OVL_OP_P. + * pt.c (push_template_decl_real): Use IDENTIFIER_OVL_OP_FLAGS. + * typeck.c (check_return_expr): Likewise. + + * cp-tree.h (assign_op_identifier, call_op_identifier): Use + compressed code. + (struct lang_decl_fn): Use compressed operator code. + (DECL_OVERLOADED_OPERATOR_CODE): Replace with ... + (DECL_OVERLOADED_OPERATOR_CODE_RAW): ... this. + (DECL_OVERLOADED_OPERATOR_CODE_IS): Use it. + * decl.c (duplicate_decls): Use DECL_OVERLOADED_OPERATOR_CODE_RAW. + (build_library_fn): Likewise. + (grok_op_properties): Likewise. + * mangle.c (write_unqualified_name): Likewise. + * method.c (implicitly_declare_fn): Likewise. + * typeck.c (check_return_expr): Use DECL_OVERLOADED_OPERATOR_IS. + + * cp-tree.h (IDENTIFIER_CP_INDEX): Define. + (enum ovl_op_flags): Add OVL_OP_FLAG_AMBIARY. + (enum ovl_op_code): New. + (struct ovl_op_info): Add ovl_op_code field. + (ovl_op_info): Size by OVL_OP_MAX. + (ovl_op_mapping, ovl_op_alternate): Declare. + (OVL_OP_INFO): Adjust for mapping array. + (IDENTIFIER_OVL_OP_INFO): New. + * decl.c (ambi_op_p, unary_op_p): Delete. + (grok_op_properties): Use IDENTIFIER_OVL_OP_INFO and + ovl_op_alternate. + * lex.c (ovl_op_info): Adjust and static initialize. + (ovl_op_mappings, ovl_op_alternate): Define. + (init_operators): Iterate over ovl_op_info array and init mappings + & alternate arrays. + * mangle.c (write_unqualified_id): Use IDENTIFIER_OVL_OP_INFO. + * operators.def (DEF_OPERATOR): Remove KIND parm. + (DEF_SIMPLE_OPERATOR): Delete. + (OPERATOR_TRANSITION): Expand if defined. + +2017-10-31 David Malcolm + + * pt.c (listify): Use %< and %> for description of #include. + +2017-10-31 David Malcolm + + * class.c (explain_non_literal_class): Use UNKNOWN_LOCATION rather + than 0. + * name-lookup.c (suggest_alternatives_for): Update for renaming of + inform_at_rich_loc. + (maybe_suggest_missing_header): Likewise. + (suggest_alternative_in_explicit_scope): Likewise. + * parser.c (cp_parser_diagnose_invalid_type_name): Likewise for + renaming of error_at_rich_loc. + (cp_parser_string_literal): Likewise. + (cp_parser_nested_name_specifier_opt): Likewise. + (cp_parser_cast_expression): Likewise for renaming of + warning_at_rich_loc. + (cp_parser_decl_specifier_seq): Likewise for renaming of + error_at_rich_loc and warning_at_rich_loc. + (cp_parser_elaborated_type_specifier): Likewise for renaming of + pedwarn_at_rich_loc. + (cp_parser_cv_qualifier_seq_opt): Likewise for renaming of + error_at_rich_loc. + (cp_parser_virt_specifier_seq_opt): Likewise. + (cp_parser_class_specifier_1): Likewise. + (cp_parser_class_head): Likewise. + (cp_parser_member_declaration): Likewise for renaming of + pedwarn_at_rich_loc, warning_at_rich_loc, and error_at_rich_loc. + (cp_parser_enclosed_template_argument_list): Likewise for renaming + of error_at_rich_loc. + (set_and_check_decl_spec_loc): Likewise. + * pt.c (listify): Likewise. + * rtti.c (typeid_ok_p): Likewise. + * semantics.c (process_outer_var_ref): Use UNKNOWN_LOCATION rather + than 0. + * typeck.c (access_failure_info::maybe_suggest_accessor): Update + for renaming of inform_at_rich_loc. + (finish_class_member_access_expr): Likewise for renaming of + error_at_rich_loc. + +2017-10-31 Nathan Sidwell + + * cp-tree.h (struct operator_name_info_t): Rename to ... + (struct ovl_op_info_t): ... here. Add tree_code field. + (operator_name_info, assignment_operator_name_info): Delete. + (ovl_op_info): Declare. + (OVL_OP_INFO): Adjust. + * decl.c (grok_op_properties): Use ovl_op_flags. + * lex.c (operator_name_info, assignment_operator_name_info): + Delete. + (ovl_op_info): Define. + (set_operator_ident): Adjust. + (init_operators): Set tree_code. + * mangle.c (write_unqualified_id): Adjust operator array scan. + + * lex.c (init_operators): Allow NULL operator name. Don't add + special cases. + * operators.def: Use NULL for mangling only operators. Move to + after regular operators but move assignment operators last. + + * cp-tree.h (enum ovl_op_flags): New. + (struct operator_name_info_t): Rename arity to flags. + * lex.c (set_operator_ident): New. + (init_operators): Use it. Adjust for flags. + * mangle.c (write_unqualified_id): Adjust for flags. + * operators.def: Replace arity with flags. + + * cp-tree.h (ovl_op_identifier): New. + (assign_op_identifier, call_op_identifier): Adjust. + (cp_operator_id, cp_assignment_operator_ide): Delete. + (SET_OVERLOADED_OPERATOR_CODE): Delete. + (OVL_OP_INFO): New. + * call.c (op_error): Use OVL_OP_INFO. + (build_conditional_expr_1): Use ovl_op_identifier. + (build_new_op_1): Use OVL_OP_INFO & ovl_op_identifier. + (build_op_delete_call): Likewise. + * class.c (type_requires_array_cookie): Use ovl_op_identifier. + * decl.c (duplicate_decls): Directly copy operator code. + (builtin_function_1): Do not set operator code. + (build_library_fn): Directly set operator code. + (push_cp_library_fn): Use ovl_op_identifier. + (grok_op_properties): Directly set operator code. + * decl2.c (maybe_warn_sized_delete): Use ovl_op_identifier. + * error.c (dump_expr): Use OVL_OP_INFO. + (op_to_string): Add assop arg. Use OVL_OP_INFO. + (assop_to_string): Delete. + (args_to_string): Adjust. + * init.c (build_new_1): Use ovl_op_identifier. + * mangle.c (write_unqualified_name): Use OVL_OP_INFO. + (write_expression): Likewise. + * method.c (synthesized_method_walk): Use ovl_op_identifier. + (implicitly_declare_fn): Use assign_op_identifier. Directly set + operator code. + * name-lookup.c (get_class_binding): Use assign_op_identifier. + * parser.c (cp_parser_operator): Use ovl_op_identifier. + (cp_parser_omp_clause_reduction): Likewise. + * semantics.c (omp_reduction_id): Likewise. + * typeck.c (cxx_sizeof_or_alignof_type): Use OVL_OP_INFO. + + * cp-tree.h (assign_op_identifier, call_op_identifier): Define. + (LAMBDA_FUNCTION_P): Use DECL_OVERLOADED_OPERATOR_IS. + (DECL_OVERLOADED_OPERATOR_P): Just retuurn true/false. + (DECL_OVERLOADED_OPERATOR_CODE, DECL_OVERLOADED_OPERATOR_IS): Define. + * call.c (add_function_candidate): Use + DECL_OVERLOADED_OPERATOR_IS. + (build_op_call_1): Use call_op_identifier & + DECL_OVERLOADED_OPERATOR_IS. + (build_over_call): Likewise. + (has_trivial_copy_assign_p): Use assign_op_identifier. + (build_special_member_call): Likewise. + * class.c (dfs_declare_virt_assop_and_dtor): Likewise. + (vbase_has_user_provided_move_assign, + classtype_has_move_assign_or_move_ctor_p): Likewise. + * decl.c (duplicate_decls): Use DECL_OVERLOADED_OPERATOR_CODE. + (grok_special_member_properties): Use assign_op_identifier. + (start_preparsed_function): Use DECL_OVERLOADED_OPERATOR_IS. + * decl2.c (mark_used): Use DECL_CONV_FN_P. + * dump.c (dump_access): Delete prototype. + (dump_op): Delete. + (cp_dump_tree): Don't call it. + * lambda.c (lambda_function): Use call_op_identifier. + (maybe_add_lambda_conv_op): Not an overloaded operator. Remove + unneeded braces. + * mangle.c (write_unqualified_name): Use DECL_OVERLOADED_OPERTOR_CODE. + * method.c (do_build_copy_assign): Use assign_op_identifier. + (synthesize_method): Use DECL_OVERLOADED_OPERATOR_IS. + (get_copy_assign): Use assign_op_identifier. + (synthesized_method_walk): Likewise. + (defaultable_fn_check): Use DECL_OVERLOADED_OPERATOR_IS. + * parser.c (cp_parser_lambda_declarator_opt): Use + call_op_identifier. + * semanitics.c (classtype_has_nothrow_assign_or_copy_p): Use + assign_op_identifier. + * tree.c (special_function_p): Use DECL_OVERLOADED_OPERATOR_IS. + * typeck.c (check_return_expr): Use DECL_OVERLOADED_OPERATOR_CODE. + (check_return_expr): Use assign_op_identifier. + +2017-10-30 Paolo Carlini + + PR c++/82085 + * pt.c (tsubst_copy_and_build, [INDIRECT_REF]): For a REFERENCE_REF_P, + unconditionally call convert_from_reference. + +2017-10-30 Nathan Sidwell + + * call.c (build_op_call_1): Test for FUNCTION_DECL in same manner + as a few lines earlier. + * cp-tree.h (PACK_EXPANSION_PATTERN): Fix white space. + * decl.c (grokfndecl): Fix indentation. + (compute_array_index_type): Use processing_template_decl_sentinel. + (grok_op_properties): Move warnings to end. Reorder other checks + to group similar entities. Tweak diagnostics. + * lex.c (unqualified_name_lookup_error): No need to check name is + not ERROR_MARK operator. + * parser.c (cp_parser_operator): Select operator code before + looking it up. + * typeck.c (check_return_expr): Fix indentation and line wrapping. + +2017-10-27 Paolo Carlini + + * pt.c (invalid_nontype_parm_type_p): Return a bool instead of an int. + +2017-10-26 Nathan Sidwell + + * decl.c (sort_labels): Restore function. + (pop_labels): Sort labels + (identify_goto): Add translation markup. + +2017-10-25 Nathan Sidwell + + Kill IDENTIFIER_LABEL_VALUE. + * cp-tree.h (lang_identifier): Delete label_value slot. + (IDENTIFIER_LABEL_VALUE, SET_IDENTIFIER_LABEL_VALUE): Delete. + (struct named_label_hasher): Rename to ... + (struct named_label_hash): ... here. Reimplement. + (struct language_function): Adjust x_named_labels. + * name-lookup.h (struct cp_label_binding): Delete. + (struct cp_binding_level): Delete shadowed_labels slot. + * decl.c (struct named_label_entry): Add name and outer slots. + (pop_label): Rename to ... + (check_label_used): ... here. Don't pop. + (note_label, sort_labels): Delete. + (pop_labels, pop_local_label): Reimplement. + (poplevel): Pop local labels as any other decl. Remove + shadowed_labels handling. + (named_label_hash::hash, named_label_hash::equal): New. + (make_label_decl): Absorb into ... + (lookup_label_1): ... here. Add making_local_p arg, reimplement. + (lookup_label, declare_local_label): Adjust. + (check_goto, define_label): Adjust. + * lex.c (make_conv_op_name): Don't clear IDENTIFIER_LABEL_VALUE. + * ptree.c (cxx_print_identifier): Don't print identifier binding. + + * decl.c (identifier_goto): Reduce duplication. + (check_previous_goto_1): Likewise. + (check_goto): Move var decls to initialization. + (check_omp_return, define_label_1, define_label): Likewise. + +2017-10-25 Jakub Jelinek + + PR libstdc++/81706 + * decl.c (duplicate_decls): Copy "omp declare simd" attributes from + newdecl to corresponding __builtin_ if any. + +2017-10-24 Paolo Carlini + + PR c++/82466 + * decl.c (duplicate_decls): Warn for built-in functions declared as + non-function, use OPT_Wbuiltin_declaration_mismatch. + + * decl.c (duplicate_decls): Avoid redundant '+' in warning_at. + +2017-10-24 Paolo Carlini + + PR c++/80991 + * pt.c (value_dependent_expression_p, [TRAIT_EXPR]): Handle + a TREE_LIST as TRAIT_EXPR_TYPE2. + +2017-10-24 Mukesh Kapoor + Paolo Carlini + + PR c++/82307 + * cvt.c (type_promotes_to): Implement C++17, 7.6/4, about unscoped + enumeration type whose underlying type is fixed. + +2017-10-23 Paolo Carlini + + PR c++/80449 + * semantics.c (finish_compound_literal): Check do_auto_deduction + return value for error_mark_node. + +2017-10-23 Jason Merrill + + PR c++/77369 - wrong noexcept handling in C++14 and below + * tree.c (strip_typedefs): Canonicalize TYPE_RAISES_EXCEPTIONS. + +2017-10-20 Nathan Sidwell + + * class.c (layout_class_type): Cleanup as-base creation, determine + mode here. + (finish_struct_1): ... not here. + +2017-10-19 Jakub Jelinek + + PR c++/82600 + * typeck.c (check_return_expr): Don't call + maybe_warn_about_returning_address_of_local in templates. + +2017-10-17 Nathan Sidwell + + PR c++/82560 + * call.c (build_over_call): Don't pass tf_no_cleanup to nested + calls. + + PR middle-end/82546 + * cp-objcp-common.c (cp_tree_size): Reformat. Adjust returns size + of TYPE nodes. + 2017-10-13 Jason Merrill PR c++/82357 - bit-field in template