diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-01-01 13:07:43 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-01-01 13:07:43 +0100 |
commit | cbe34bb5edd97015e38c483516492f171bf9f95d (patch) | |
tree | 9aa2984f8fe63467c9de13ed611b1d568f8b3db0 /gcc/cp | |
parent | ae12c0f06202bab513bd2d41a24f376970fbd0b6 (diff) | |
download | gcc-cbe34bb5edd97015e38c483516492f171bf9f95d.zip gcc-cbe34bb5edd97015e38c483516492f171bf9f95d.tar.gz gcc-cbe34bb5edd97015e38c483516492f171bf9f95d.tar.bz2 |
Update copyright years.
From-SVN: r243994
Diffstat (limited to 'gcc/cp')
57 files changed, 4445 insertions, 4436 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7aca3ac..f86dd33 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4387 +1,8 @@ -2016-12-24 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/78901 - * except.c (nothrow_libfn_p): Expect libc_name_p to return - const struct libc_name_struct *, if it returns NULL, return 0, - otherwise check c_ver and use flag_isoc99 or flag_isoc11. - * cfns.gperf: Add %struct-type and libc_name_struct definition. - For all C89 C library functions add , 89 after the name, add - C99 C library functions with , 99 and C11 C library functions - with , 11 suffix. - * cfns.h: Regenerated. - -2016-12-22 Jason Merrill <jason@redhat.com> - - PR c++/78906 - * pt.c (finish_template_variable): Use most_general_template. - - PR c++/78898 - PR c++/42329 - * pt.c (unify): Don't look for a class template from a non-class. - -2016-12-21 Jakub Jelinek <jakub@redhat.com> - - PR c++/72707 - * name-lookup.c (pushdecl_maybe_friend_1): Do check shadowing of - artificial x if it is an anonymous union variable. - - PR bootstrap/78817 - * typeck.c (cp_build_function_call_vec): If check_function_arguments - returns true, set TREE_NO_WARNING on CALL_EXPR. - * call.c (build_over_call): Likewise. - - PR c++/77830 - * constexpr.c (cxx_eval_array_reference): Perform out of bounds - verification even if lval is true, just allow one past the last - element in that case. - (cxx_eval_store_expression): Detect stores to out of bound - ARRAY_REF. - -2016-12-21 Jason Merrill <jason@redhat.com> - - Implement P0522R0, matching of template template arguments. - * pt.c (coerce_template_template_parms): Allow a template argument - that's less specialized than the parameter. - (unify_bound_ttp_args): Adjust parm's args to apply to arg's - template. - (coerce_template_args_for_ttp): Split out from - lookup_template_class_1. - (coerce_ttp_args_for_tta, store_defaulted_ttp) - (lookup_defaulted_ttp, add_defaults_to_ttp): New. - (process_partial_specialization): Set DECL_CONTEXT of - template template-parameters. - (coerce_template_parms): Only inform when complain. - (expand_template_argument_pack): Handle error_mark_node. - (convert_template_argument, template_args_equal, unify): Handle - any_targ_node. - * cp-tree.h (enum cp_tree_index): Add CPTI_ANY_TARG. - (any_targ_node): New. - * decl.c (cxx_init_decl_processing): Set it. - * name-lookup.c (consider_binding_level): Ignore names with embedded - spaces. - - PR c++/42329 - * pt.c (unify_bound_ttp_args): Split out from unify. - (try_class_unification): Handle BOUND_TEMPLATE_TEMPLATE_PARM. - (unify): Check for type/non-type mismatch early. - [BOUND_TEMPLATE_TEMPLATE_PARM]: Try get_template_base. - - * pt.c (coerce_template_parms): Consider variadic_args_p before - complaining about too many template arguments. - - * pt.c (process_partial_specialization): Use - get_partial_spec_bindings to check that the partial specialization - is more specialized than the primary template. - - * pt.c (convert_template_argument): Pass args to do_auto_deduction. - (mark_template_parm): Handle deducibility from type of non-type - argument here. - (for_each_template_parm_r): Not here. - - * ptree.c (cxx_print_type): Print args of - BOUND_TEMPLATE_TEMPLATE_PARM. - (cxx_print_decl): Print DECL_TEMPLATE_PARMS. - - PR c++/78767 - ICE with inherited constructor default argument - * method.c (strip_inheriting_ctors): Strip template as appropriate. - - PR c++/78749 - friend in anonymous namespace - * decl.c (wrapup_globals_for_namespace): Don't complain about friend - pseudo-template instantiations. - -2016-12-16 Richard Biener <rguenther@suse.de> - - PR c++/71694 - * cp-objcp-common.h (cp_unit_size_without_reusable_padding): Declare. - (LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define. - * cp-objcp-common.c (cp_unit_size_without_reusable_padding): New. - -2016-12-15 Jakub Jelinek <jakub@redhat.com> - - P0490R0 GB 20: decomposition declaration should commit to tuple - interpretation early - * decl.c (get_tuple_size): Make static. If inst is error_mark_node - or non-complete type, return NULL_TREE, otherwise if - lookup_qualified_name fails or doesn't fold into INTEGER_CST, return - error_mark_node. - (get_tuple_element_type, get_tuple_decomp_init): Make static. - (cp_finish_decomp): Pass LOC to get_tuple_size. If it returns - error_mark_node, complain and fail. - -2016-12-15 Nathan Sidwell <nathan@acm.org> - - PR c++/77585 - * pt.c (instantiate_decl): Push to class scope lambda resides - within when instantiating a generic lambda function. - -2016-12-14 Martin Sebor <msebor@redhat.com> - - PR c++/78774 - * pt.c (convert_template_argument): Avoid assuming operand type - is non-null since that of SCOPE_REF is not. - -2016-12-14 Martin Jambor <mjambor@suse.cz> - - * parser.c: Include omp-general.h and omp-offload.h instead of - omp-low.h. - (cp_parser_omp_simd): Adjusted calls to find_omp_clause to use its new - name. - (cp_parser_omp_target_update): Likewise. - (cp_parser_oacc_declare): Likewise. - (cp_parser_oacc_enter_exit_data): Likewise. - (cp_parser_oacc_update): Likewise. - (cp_finalize_oacc_routine): Adjusted call to get_oacc_fn_attrib, - build_oacc_routine_dims and replace_oacc_fn_attrib to use their new - names. - * semantics.c: Include omp-general insteda of omp-low.h. - (finish_omp_for): Adjusted calls to find_omp_clause to use its new - name. - (finish_omp_cancel): Likewise. - (finish_omp_cancellation_point): Likewise. - -2016-12-14 Marek Polacek <polacek@redhat.com> - - PR c++/72775 - * init.c (perform_member_init): Diagnose member initializer for - flexible array member. - -2016-12-14 Nathan Sidwell <nathan@acm.org> - - PR c++/78701 - * pt.c (type_unification_real): Check tsubst arg doesn't have - remaining template parms before converting it. - - PR c++/69481 - * cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use - TYPE_ALIAS_TEMPLATE_INFO for aliases. - -2016-12-13 Nathan Sidwell <nathan@acm.org> - - PR c++/69481 - * cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking. - (TYPE_ALIAS_TEMPLATE_INFO): New. - (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New. Use those macros. - * error.c (dump_alias_template_specialization): Adjust. - * pt.c (maybe_process_partial_specialization, - iterative_has_template_arg, find_parameter_packs_r, - alias_template_specialization_p, dependent_alias_template_spec_p, - get_underlying_template, lookup_template_class_1, unify): Adjust - template using decl access. - -2016-12-11 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/78637 - * parser.c (cp_parser_namespace_definition): Increment - nested_definition_count only if push_namespace succeeds. - -2016-12-08 Nathan Sidwell <nathan@acm.org> - - PR c++/78551 - * constexpr.c (extract_string_elt): New. Broken out of ... - (cxx_eval_array_reference): ... here. Call it. - (cxx_eval_store_expression): Convert init by STRING_CST into - CONSTRUCTOR, if needed. - -2016-12-08 Jakub Jelinek <jakub@redhat.com> - - P0003R5 - removal of dynamic exception specification from C++17 - * parser.c (cp_parser_exception_specification_opt): For C++17 - error out on throw ( type-id-list ), for C++11 and C++14 issue - -Wdeprecated warning on it. Formatting fix. Treat throw() - in C++17 as noexcept(true). - -2016-12-07 Martin Jambor <mjambor@suse.cz> - - PR c++/78589 - * error.c (dump_decl): Use dump_function_name to dump - !DECL_LANG_SPECIFIC function decls with no or self-referencing - abstract origin. - -2016-12-07 Nathan Sidwell <nathan@acm.org> - - * pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow - and avoid re-tsubsting type. - - * cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER & - CPTI_DECLTYPE_AUTO_IDENTIFIER. - (auto_identifier, decltype_auto_identifier): New. - *decl.c (initialize_predefined_identifiers): Add 'auto' and - 'decltype(auto)'. - (grokdeclarator): Use cached identifier. - * pt.c (make_decltype_auto, make_auto, make_constrained_auto, - is_auto): Likewise. - -2016-12-02 Jakub Jelinek <jakub@redhat.com> - - PR c++/78649 - * pt.c (tsubst_init): Don't call build_value_init if decl's type - is error_mark_node. - -2016-12-02 Cesar Philippidis <cesar@codesourcery.com> - James Norris <jnorris@codesourcery.com> - - * parser.c (cp_parser_oacc_enter_exit_data): Update diagnostics. - (cp_parser_pragma): Error when PRAGMA_OACC_{ENTER_DATA, - EXIT_DATA,WAIT} are not used in compound statements. - -2016-12-01 Jason Merrill <jason@redhat.com> - - * call.c (add_function_candidate): Also exclude inherited ctors - that take a type reference-related to the derived class. - - * call.c (add_function_candidate): Exclude inherited copy/move - ctors. - -2016-11-29 David Malcolm <dmalcolm@redhat.com> - - PR c++/77922 - * name-lookup.c (lookup_name_fuzzy): Filter out reserved words - that were filtered out by init_reswords. - -2016-11-28 Jakub Jelinek <jakub@redhat.com> - Jason Merrill <jason@redhat.com> - - PR c++/72808 - * decl.c (finish_enum_value_list): Call fixup_type_variants on - current_class_type after - insert_late_enum_def_into_classtype_sorted_fields. - -2016-11-28 Jakub Jelinek <jakub@redhat.com> - - PR c++/77591 - * typeck.c (maybe_warn_about_returning_address_of_local): Optimize - whats_returned through fold_for_warn. - -2016-11-27 Jason Merrill <jason@redhat.com> - - PR c++/77907 - * constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert. - -2016-11-24 Martin Liska <mliska@suse.cz> - - PR bootstrap/78493 - * parser.c (cp_parser_range_for): Use safe_push instead of quick_push. - -2016-11-23 Jakub Jelinek <jakub@redhat.com> - - PR c++/77907 - * cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor - and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR - with the object on lhs and maybe_constant_value returned expr on rhs. - - PR c++/71450 - * pt.c (tsubst_copy): Return error_mark_node when mark_used - fails, even when complain & tf_error. - - PR c++/77739 - * cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass - false as handle_invisiref_parm_p to cp_genericize_tree. - (struct cp_genericize_data): Add handle_invisiref_parm_p field. - (cp_genericize_r): Don't wrap is_invisiref_parm into references - if !wtd->handle_invisiref_parm_p. - (cp_genericize_tree): Add handle_invisiref_parm_p argument, - set wtd.handle_invisiref_parm_p to it. - (cp_genericize): Pass true as handle_invisiref_parm_p to - cp_genericize_tree. Formatting fix. - -2016-11-21 Bernd Edlinger <bernd.edlinger@hotmail.de> - - PR c++/71973 - * decl.c (duplicate_decls): Warn when a built-in function is redefined. - Don't overload builtin functions with C++ functions. - Handle const_tm_ptr_type_node like file_ptr_node. - Copy the TREE_NOTHROW flag unmodified to the old decl. - -2016-11-18 Jason Merrill <jason@redhat.com> - - PR objc++/78418 - ICE in string tests on darwin - * tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P. - -2016-11-18 Jakub Jelinek <jakub@redhat.com> - - PR c++/77285 - * mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call - check_abi_tags. - -2016-11-18 Jason Merrill <jason@redhat.com> - - PR c++/67631 - list-init and explicit conversions - * semantics.c (finish_compound_literal): Call digest_init_flags. - * typeck2.c (digest_init_flags): Add complain parm. - (store_init_value): Pass it. - -2016-11-18 Richard Sandiford <richard.sandiford@arm.com> - Alan Hayward <alan.hayward@arm.com> - David Sherwood <david.sherwood@arm.com> - - * class.c (finish_struct_bits): Use SET_DECL_MODE. - (build_base_field_1, layout_class_type, finish_struct_1): Likewise. - * decl.c (make_label_decl): Likewise. - * pt.c (tsubst_decl): Likewise. - -2016-11-17 Jason Merrill <jason@redhat.com> - - PR c++/78193 - inherited ctor regressions on sparc32. - * call.c (build_over_call): Don't set CALL_FROM_THUNK_P here. - (build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR. - (convert_like_real) [ck_rvalue]: Also pass non-addressable - types along directly. - -2016-11-17 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/55080 - * parser.c (cp_parser_non_integral_constant_expression): Issue a - pedwarn instead of an error for case NIC_FLOAT. - -2016-11-17 Jason Merrill <jason@redhat.com> - - PR c++/78124 - list-initialization and inherited ctor - * name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE. - - PR c++/78369 - {} as default argument - * call.c (build_special_member_call): Handle CONSTRUCTOR. - - PR c++/68377 - * parser.c (cp_parser_fold_expression): Check TREE_NO_WARNING. - -2016-11-16 Jason Merrill <jason@redhat.com> - - PR c++/78373 - * decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference. - * typeck2.c (store_init_value): Likewise. - - * decl.c (store_decomp_type, lookup_decomp_type): New. - (cp_finish_decomp): Call store_decomp_type. - * semantics.c (finish_decltype_type): Call lookup_decomp_type. - * cp-tree.h: Declare lookup_decomp_type. - -2016-11-15 Jakub Jelinek <jakub@redhat.com> - - * decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl, - set DECL_ASSEMBLER_NAME. - * parser.c (cp_parser_decomposition_declaration): Likewise - if returning error_mark_node. - * mangle.c (mangle_decomp): New function. - * cp-tree.h (mangle_decomp): New declaration. - -2016-11-15 Jason Merrill <jason@redhat.com> - - PR c++/78358 - * semantics.c (finish_decltype_type): Strip references for a tuple - decomposition. - * cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables. - - * decl2.c (decl_maybe_constant_var_p): References qualify. - * constexpr.c (non_const_var_error): Handle references. - * init.c (constant_value_1): Always check decl_constant_var_p. - * cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references. - * error.c (dump_decl_name): Split out from dump_decl. - -2016-11-14 Jason Merrill <jason@redhat.com> - - * tree.c (bitfield_p): New. - * cp-tree.h: Declare it. - * typeck.c (cxx_sizeof_expr, cxx_alignof_expr) - (cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD. - * decl.c (cp_finish_decomp): Look through reference. Always - SET_DECL_DECOMPOSITION_P. - * semantics.c (finish_decltype_type): Adjust decomposition handling. - -2016-11-13 Jakub Jelinek <jakub@redhat.com> - Jason Merrill <jason@redhat.com> - - Implement P0217R3 - C++17 structured bindings - * cp-tree.h (struct lang_decl_base): Add decomposition_p. - (DECL_DECOMPOSITION_P): New - (enum auto_deduction_context): Add adc_decomp_type. - (enum cp_declarator_kind): Add cdk_decomp. - * constexpr.c (cxx_eval_constant_expression): Look through - DECL_VALUE_EXPR. - (potential_constant_expression_1): Likewise. - * decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT. - (check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P. - (cp_finish_decl): Pass adc_decomp_type for decomposition. - (find_decomp_class_base, get_tuple_size, get_tuple_element_type) - (get_tuple_decomp_init, cp_finish_decomp): New. - (grokdeclarator): Handle decomposition. - * init.c (build_aggr_init): Handle decomposition array. - (build_vec_init): Handle initialization from { array }. - * name-lookup.c (add_function): Always wrap TEMPLATE_DECL in - OVERLOAD. - * parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp. - (function_declarator_p, strip_declarator_types) - (cp_parser_check_declarator_template_parameters): Likewise. - (cp_parser_range_for, cp_convert_range_for): Handle decomposition. - (cp_parser_simple_declaration): Parse decomposition. - (cp_parser_decomposition_declaration): New. - * pt.c (tsubst_decomp_names): New. - (subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition. - (do_auto_deduction): Handle adc_decomp_type. - * semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR. - * typeck.c (is_bitfield_expr_with_lowered_type): Likewise. - * tree.c (lvalue_kind): Likewise. - (cp_build_reference_type): Handle reference collapsing. - -2016-11-13 Jason Merrill <jason@redhat.com> - - * call.c (build_new_method_call_1): Include template arguments in - error message. - (print_error_for_call_failure): Likewise. - (build_new_function_call): Pass them in. - * name-lookup.c (supplement_binding_1): Don't complain about a - conflict with an erroneous declaration. - * error.c (dump_decl): Fix printing of alias declaration. - * decl.c (make_typename_type): Call cxx_incomplete_type_error. - * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. - * semantics.c (perform_koenig_lookup): Don't wrap an error in - TEMPLATE_ID_EXPR. - -2016-11-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - PR c/35503 - * parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict. - -2016-11-12 Jason Merrill <jason@redhat.com> - - CWG 2233 - * typeck.c (convert_arguments): Handle default arg followed by none. - - * constexpr.c (potential_constant_expression_1): REALPART_EXPR and - IMAGPART_EXPR can be lvalues. - - DR 374 - PR c++/56480 - * pt.c (check_specialization_namespace): Allow any enclosing - namespace. - (check_unqualified_spec_or_inst): New. - (check_explicit_specialization): Call it. - * parser.c (cp_parser_elaborated_type_specifier) - (cp_parser_class_head): Call it. - -2016-11-10 Jason Merrill <jason@redhat.com> - - PR c++/77337 - * pt.c (tsubst_friend_function): Don't set DECL_INITIAL. - (instantiate_decl): It's OK to defer a constexpr function. - * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check - DECL_LANG_SPECIFIC. - * decl2.c (decl_defined_p): Use it. No longer static. - * decl.c (redeclaration_error_message): Use decl_defined_p. - * constexpr.c (cxx_eval_call_expression): Set input_location around - call to instantiate_decl. - -2016-11-10 Jakub Jelinek <jakub@redhat.com> - - * mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for - public or external symbols. - -2016-11-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/78283 - * mangle.c (start_mangling): Reset G.need_cxx1z_warning. - -2016-11-09 Jason Merrill <jason@redhat.com> - - * parser.c (cp_parser_simple_type_specifier): Allow placeholder - for template template parameter. - (cp_parser_type_id_1): Improve diagnostic. - * decl.c (grokdeclarator): Handle class deduction diagnostics here. - * pt.c (splice_late_return_type): Not here. - (tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template. - (do_class_deduction): Handle non-class templates. - - Implement P0127R2, Declaring non-type parameters with auto. - * cp-tree.h (enum auto_deduction_context): Add adc_unify. - * decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type - parameter types. - * pt.c (do_auto_deduction): Add outer_targs parameter. - (convert_template_argument): Call do_auto_deduction. If adc_unify, - don't give up on dependent init. - (unify): Likewise. In C++17, walk into the type of a - TEMPLATE_PARM_INDEX. - (for_each_template_parm): Add any_fn parameter. - (struct pair_fn_data): Likewise. - (for_each_template_parm_r): Call it for any tree. In C++17, walk - into the type of a TEMPLATE_PARM_INDEX. - (zero_r, array_deduction_r, try_array_deduction): New. - (type_unification_real): Call try_array_deduction. - (get_partial_spec_bindings): Likewise. - -2016-11-07 Jason Merrill <jason@redhat.com> - - Implement P0012R1, Make exception specifications part of the type - system. - * cp-tree.h (enum tsubst_flags): Add tf_fndecl_type. - (flag_noexcept_type, ce_type): New. - * call.c (build_conv): Add ck_fnptr. - (enum conversion_kind): Change ck_tsafe to ck_fnptr. - (convert_like_real): Likewise. - (standard_conversion): Likewise. Allow function pointer - conversions for pointers to member functions. - (reference_compatible_p): Allow function pointer conversions. - (direct_reference_binding): Likewise. - (reference_binding): Reference-compatible is no longer a subset of - reference-related. - (is_subseq): Also strip ck_lvalue after next_conversion. - * class.c (instantiate_type): Check fnptr_conv_p. - (resolve_address_of_overloaded_function): Likewise. - * cvt.c (can_convert_tx_safety): Now static. - (noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New. - * decl.c (flag_noexcept_type): Define. - (cxx_init_decl_processing): Set it. - (bad_specifiers): Check it. - (grokdeclarator) [cdk_function]: Add exception-spec to type here. - * lambda.c (maybe_add_lambda_conv_op): Add exception-spec to - returned pointer. - * mangle.c (struct globals): Add need_cxx1z_warning. - (mangle_decl): Check it. - (write_exception_spec): New. - (write_function_type): Call it. - (canonicalize_for_substitution): Handle exception spec. - (write_type): Likewise. - (write_encoding): Set processing_template_decl across mangling of - partially-instantiated type. - * pt.c (determine_specialization): Pass tf_fndecl_type. - (tsubst_decl, fn_type_unification): Likewise. - (tsubst): Strip tf_fndecl_type, pass it to - tsubst_exception_specification. - (convert_nontype_argument_function): Handle function pointer - conversion. - (convert_nontype_argument): Likewise. - (unify, for_each_template_parm_r): Walk into noexcept-specifier. - * rtti.c (ptr_initializer): Encode noexcept. - * tree.c (canonical_eh_spec): New. - (build_exception_variant): Use it. - * typeck.c (composite_pointer_type): Handle fnptr conversion. - (comp_except_specs): Compare canonical EH specs. - (structural_comptypes): Call it. - - * call.c (standard_conversion): Reorganize pointer conversions. - * pt.c (convert_nontype_argument_function): Convert to ref here. - (convert_nontype_argument): Not here. - (convert_template_argument): Add original type to error message. - (RECUR_AND_CHECK_FAILURE): Remove trailing semicolon. - (unify): Compare function-qualifiers. - * typeck.c (same_type_ignoring_top_level_qualifiers_p): Use - cp_build_qualified_type rather than TYPE_MAIN_VARIANT. - - * pt.c (push_tinst_level_loc): Add template instantiations to the - announce_function stream. - -2016-11-04 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/67980 - * pt.c (tsubst_expr, case IF_STMT): Use fold_non_dependent_expr - to suppress unwanted warnings. - -2016-11-03 Jason Merrill <jason@redhat.com> - - PR c++/78198 - * call.c (convert_default_arg): Look through inheriting ctors. - -2016-11-03 Jakub Jelinek <jakub@redhat.com> - Alexandre Oliva <aoliva@redhat.com> - Jason Merrill <jason@redhat.com> - - PR debug/28767 - PR debug/56974 - * tree.c (cp_check_qualified_type): Use check_base_type and - TYPE_QUALS comparison instead of check_qualified_type. - (cxx_type_hash_eq): Return false if type_memfn_rqual don't match. - * cp-objcp-common.c (cp_get_debug_type): New function. - (cp_decl_dwarf_attribute): Don't handle types here. - (cp_type_dwarf_attribute): New function. - * cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute): - Declare. - (LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE): - Define. - -2016-11-03 Jason Merrill <jason@redhat.com> - - * tree.c (cp_check_qualified_type): Call check_base_type instead - of check_qualified_type. - (cxx_type_hash_eq): Check ref-qualifiers. - * typeck.c (apply_memfn_quals): No need to mess with TYPE_CANONICAL. - -2016-11-01 Jason Merrill <jason@redhat.com> - - Implement P0136R1, Rewording inheriting constructors. - * call.c (enum rejection_reason_code): Add rr_inherited_ctor. - (inherited_ctor_rejection): New. - (add_function_candidate): Reject inherited ctors for copying. - (enforce_access): Use strip_inheriting_ctors. - (print_z_candidate): Likewise. Handle rr_inherited_ctor. - (convert_like_real): Avoid copying inheriting ctor parameters. - (build_over_call): Likewise. A base ctor inheriting from vbase - has no parms. Sorry about varargs. - (joust): A local constructor beats inherited with the same convs. - * class.c (add_method): Handle hiding inheriting ctors. - (one_inherited_ctor): Handle new semantics. - (add_implicitly_declared_members): Pass using_decl down. - (build_clone): A base ctor inheriting from vbase has no parms. - * cp-tree.h (DECL_INHERITED_CTOR): Store this instead of the base. - (SET_DECL_INHERITED_CTOR): Likewise. - (DECL_INHERITED_CTOR_BASE): Adjust. - * constexpr.c: Adjust. - * error.c (dump_function_decl): Decorate inheriting ctors. - * init.c (emit_mem_initializers): Suppress access control in - inheriting ctor. - * mangle.c (write_special_name_constructor): Handle new inheriting - ctor mangling. - * method.c (strip_inheriting_ctors, inherited_ctor_binfo) - (ctor_omit_inherited_parms, binfo_inherited_from): New. - (synthesized_method_walk): Use binfo_inherited_from. Suppress - access control in inheriting ctor. - (deduce_inheriting_ctor): Deleted if ambiguous ctor inheritance. - (maybe_explain_implicit_delete): Explain ambigous ctor inheritance. - (add_one_base_init, do_build_copy_constructor): Adjust. - (locate_fn_flags, explain_implicit_non_constexpr): Adjust. - (implicitly_declare_fn): Adjust. - (get_inherited_ctor): Remove. - * name-lookup.c (do_class_using_decl): Check for indirect ctor - inheritance. - * optimize.c (cdtor_comdat_group): Adjust for new mangling. - (maybe_clone_body): Handle omitted parms in base clone. - (maybe_thunk_body): Don't thunk if base clone omits parms. - * pt.c (tsubst_decl): Adjust. - (instantiate_template_1): Suppress access control in inheriting - ctor. - (fn_type_unification): Do deduction with inherited ctor. - * tree.c (special_function_p): Adjust. - -2016-11-01 Jakub Jelinek <jakub@redhat.com> - - * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_inline. - -2016-11-01 Jason Merrill <jason@redhat.com> - - * class.c (declared_access): Split out from handle_using_decl. - -2016-10-31 Jakub Jelinek <jakub@redhat.com> - - PR c++/78089 - * parser.c (cp_parser_postfix_expression): Replace return statement in - the first switch with setting postfix_expression to the return - expression and break;. - - PR c++/77886 - * pt.c (tsubst_expr) <case CASE_LABEL_EXPR> Copy over - FALLTHROUGH_LABEL_P flag to the new LABEL_DECL. - (tsubst_expr) <case LABEL_EXPR>: Likewise. - -2016-09-11 Le-Chun Wu <lcwu@google.com> - Mark Wielaard <mjw@redhat.com> - - * name-lookup.c (pushdecl_maybe_friend): When emitting a - shadowing warning, use the code corresponding to the - given -Wshadow= variant. - -2016-10-26 Jason Merrill <jason@redhat.com> - - * class.c (add_method): Allow using-declarations to coexist. - -2016-10-25 Jason Merrill <jason@redhat.com> - - * constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL. - (cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR - with CONSTRUCTOR_NO_IMPLICIT_ZERO. - (cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO. - -2016-10-25 Jakub Jelinek <jakub@redhat.com> - - * parser.c (cp_parser_postfix_expression): Adding missing break;. - - * cp-tree.h (finish_builtin_launder): Declare. - * parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER. - * semantics.c (finish_builtin_launder): New function. - * pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER. - * constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER. - (potential_constant_expression_1): Likewise. - -2016-10-24 Jakub Jelinek <jakub@redhat.com> - - * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference - and DW_AT_rvalue_reference. - - * cxx-pretty-print.c (pp_cxx_check_constraint): Use VAR_P (x) - instead of TREE_CODE (x) == VAR_DECL. - * constraint.cc (get_concept_definition): Likewise. - (finish_shorthand_constraint): Likewise. - * init.c (warn_placement_new_too_small): Likewise. - * cp-gimplify.c (cp_genericize_r): Likewise. - -2016-10-21 Jason Merrill <jason@redhat.com> - - PR c++/77656 - * pt.c (convert_template_argument): Call convert_nontype_argument - on value-dependent but not type-dependent arguments. - (convert_nontype_argument): Handle value-dependent arguments. - (canonicalize_expr_argument): New. - (deducible_expression, unify): Skip CONVERT_EXPR. - * error.c (dump_template_argument): Likewise. - * mangle.c (write_expression): Likewise. - - * ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl. - -2016-10-21 Jakub Jelinek <jakub@redhat.com> - - * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle - DW_AT_const_expr. - -2016-10-17 Jakub Jelinek <jakub@redhat.com> - - * cp-objcp-common.h (cp_function_decl_explicit_p, - cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove. - (cp_decl_dwarf_attribute): Declare. - (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P, - LANG_HOOKS_FUNCTION_DECL_DELETED_P, - LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove. - (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Redefine. - * cp-objcp-common.c (cp_function_decl_explicit_p, - cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove. - (cp_decl_dwarf_attribute): New function. - -2016-10-15 Jason Merrill <jason@redhat.com> - - PR c++/77945 - * constexpr.c (maybe_simplify_trivial_copy): New. - (cxx_eval_store_expression): Call it. - * call.c (build_over_call): Use unsigned char for trivial copy. - -2016-10-14 Jason Merrill <jason@redhat.com> - - Implement P0017R1, C++17 aggregates with bases. - * class.c (build_base_field_1): Split out from... - (build_base_field): ...here. In C++17 mode, build a field for - empty bases. - * decl.c (xref_basetypes): In C++17 aggregates can have bases. - (next_initializable_field): Allow base fields in C++17. - * typeck2.c (process_init_constructor_record): Likewise. - -2016-10-14 Jakub Jelinek <jakub@redhat.com> - - DR 1511 - const volatile variables and ODR - * decl.c (grokvardecl): Change flags argument to type_quals, - add conceptp argument. Set TREE_PUBLIC for non-static volatile vars. - (grokdeclarator): Adjust grokvardecl caller. - -2016-10-13 Martin Sebor <msebor@redhat.com> - - PR c++/71912 - * class.c (struct flexmems_t): Add members. - (find_flexarrays): Add arguments. Correct handling of anonymous - structs. - (diagnose_flexarrays): Adjust to issue warnings in addition to errors. - (check_flexarrays): Add argument. - (diagnose_invalid_flexarray): New functions. - -2016-10-13 Jakub Jelinek <jakub@redhat.com> - Jason Merrill <jason@redhat.com> - - Implement P0386R2 - C++17 inline variables - * cp-tree.h (struct lang_type): Shrink language field to 1 bit - from 4. Add var_declared_inline_p field. Mention 2 spare bits. - (DECL_VAR_DECLARED_INLINE_P): Define. - (SET_DECL_VAR_DECLARED_INLINE_P): Define. - (DECL_INLINE_VAR_P): Define. - (diagnose_inline_vars_for_namespace): Declare. - * decl.c (diagnose_inline_vars_for_namespace): New function. - (duplicate_decls): For static data members copy - DECL_DECLARED_CONSTEXPR_P. - (redeclaration_error_message): Handle C++17 redundant redeclaration - of constexpr static data member outside of class. - (maybe_commonize_var): Handle inline variables. - (check_initializer): Ignore inline variables for diagnostics. - Adjust diagnostic wording for C++17. - (make_rtl_for_nonlocal_decl): Allow in-class definition of - inline static data members. - (bad_specifiers): Don't diagnose inline on variables here. - (grokvardecl): Add inlinep argument, non-static const inline variables - are TREE_PUBLIC. - (check_static_variable_definition): Return early also for inline - variables. - (mark_inline_variable): New. - (grokdeclarator): Handle inline variables and inline static data - members. - * typeck2.c (store_init_value): Don't diagnose non-constant - initializers for non-constexpr inline static data members. - * decl2.c (vague_linkage_p): Return true for inline variables. - (c_parse_final_cleanups): In-class declaration of inline static - data members is a definition. Call diagnose_inline_vars_for_namespace - through walk_namespaces. - * pt.c (instantiate_decl): Set pattern_defined for in-class definitions - of inline static data members. - -2016-10-13 Jason Merrill <jason@redhat.com> - - * decl.c (mark_inline_variable): New. - ->>>>>>> .r241142 -2016-10-13 Thomas Preud'homme <thomas.preudhomme@arm.com> - - * decl2.c: Include memmodel.h. - * rtti.c: Likewise. - -2016-10-11 Jason Merrill <jason@redhat.com> - - PR c++/77742 - * init.c (build_new_1): Don't -Waligned-new about placement new. - (malloc_alignment): New. Consider MALLOC_ABI_ALIGNMENT. - * decl.c (cxx_init_decl_processing): New. - -2016-10-10 Jason Merrill <jason@redhat.com> - - PR c++/77890 - PR c++/77912 - * pt.c (do_class_deduction): Set cp_unevaluated_operand. - (tsubst) [TEMPLATE_TYPE_PARM]: Copy CLASS_PLACEHOLDER_TEMPLATE. - -2016-10-08 Jason Merrill <jason@redhat.com> - - * cp-gimplify.c (cp_fold): Add variable name. - - * cp-gimplify.c (cp_fold): Distribute cp_truthvalue_conversion - into COND_EXPR. - -2016-10-07 Jason Merrill <jason@redhat.com> - - Further P0135 refinement. - * call.c (build_user_type_conversion_1): Consider conversions from - a single element in an initializer-list. - (build_temp): Undo early_elide_copy change. - (build_over_call): Check that we don't try to copy a TARGET_EXPR - in C++17 mode. Set user_conv_p here. - (convert_like_real): Not here. - (check_self_delegation): Split out from... - (build_special_member_call): ...here. Handle C++17 copy elision. - * cvt.c (early_elide_copy): Remove. - (ocp_convert): Undo early_elide_copy change. - * except.c (build_throw): Likewise. - * init.c (expand_default_init): Likewise. - * typeck.c (cp_build_modify_expr): Likewise. - -2016-10-07 Nathan Sidwell <nathan@acm.org> - - PR c++/64433 - DR1658, DR1611 - * init.c (emit_mem_initializers): Don't construct vbases of - abstract classes. - (push_base_cleanups): Don't push vbase cleanups for abstract class - when in C++14 mode. - * method.c (synthethesized_method_walk): Don't walk vbases of - abstract classes when in C++14 mode. - -2016-10-07 Jakub Jelinek <jakub@redhat.com> - - Implement LWG2296 helper intrinsic - * parser.c (cp_parser_postfix_expression): Handle RID_ADDRESSOF. - * cp-objcp-common.c (cp_common_init_ts): Handle ADDRESSOF_EXPR. - * constexpr.c (potential_constant_expression_1): Likewise. - * error.c (dump_expr): Likewise. - * typeck.c (cp_build_addressof): New function. - * cp-tree.h (cp_build_addressof): Declare. - * cxx-pretty-print.h (pp_cxx_addressof_expression): Declare. - * cp-tree.def (ADDRESSOF_EXPR): New tree code. - * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): Handle - ADDRESSOF_EXPR. Add __builtin_addressof and - __has_unique_object_representations into syntax in function comment. - (pp_cxx_addressof_expression): New function. - * pt.c (tsubst_copy_and_build): Handle ADDRESSOF_EXPR. - -2016-10-07 Bernd Edlinger <bernd.edlinger@hotmail.de> - - PR c++/77700 - * parser.c (cp_parser_base_specifier): Fix a warning. - -2016-10-07 Bernd Schmidt <bschmidt@redhat.com> - - PR c++/69733 - * decl.c (grokdeclarator): Try to find the correct location for an - ignored qualifier. - -2016-10-07 Martin Liska <mliska@suse.cz> - - * lambda.c (maybe_add_lambda_conv_op): Set default value. - -2016-10-06 Jason Merrill <jason@redhat.com> - - * call.c (build_temp, convert_like_real): Don't re-copy - TARGET_EXPR. Handle packed fields. - (build_x_va_arg): Wrap it in a TARGET_EXPR. - (build_over_call): Add sanity check. - * cvt.c (early_elide_copy): New. - (ocp_convert): Use it. - * except.c (build_throw): Use it. - * init.c (get_nsdmi): Put back the TARGET_EXPR. - (expand_default_init): Call early_elide_copy. - * typeck.c (cp_build_modify_expr): Call early_elide_copy. - -2016-10-06 Jakub Jelinek <jakub@redhat.com> - - Implement P0258R2 - helper for C++17 - std::has_unique_object_representations trait - * cp-tree.h (enum cp_trait_kind): Add - CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. - (struct lang_type_class): Add unique_obj_representations - and unique_obj_representations_set bitfields. - (CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS, - CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET): Define. - (type_has_unique_obj_representations): Declare. - * parser.c (cp_parser_primary_expression): Handle - RID_HAS_UNIQUE_OBJ_REPRESENTATIONS. - (cp_parser_trait_expr): Likewise. Formatting fix. - * semantics.c (trait_expr_value, finish_trait_expr): Handle - CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. - * tree.c (type_has_unique_obj_representations): New function. - (record_has_unique_obj_representations): New function. - * cxx-pretty-print.c (pp_cxx_trait_expression): Handle - CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. - -2016-10-05 Jason Merrill <jason@redhat.com> - - Implement P0135R1, Guaranteed copy elision. - * cvt.c (ocp_convert): Don't re-copy a TARGET_EXPR in C++17. - - PR c++/54293 - * call.c (reference_binding): Fix binding to member of temporary. - - * call.c (extend_ref_init_temps): Fix TARGET_EXPR handling. - - * parser.c (cp_parser_skip_to_end_of_statement): Add missing break. - - * semantics.c (finish_compound_literal): Handle class placeholder. - -2016-10-05 Marek Polacek <polacek@redhat.com> - - Implement P0305R1, Selection statements with initializer. - * cp-array-notation.c (create_an_loop): Call finish_init_stmt - instead of finish_for_init_stmt. - * cp-tree.h (finish_for_init_stmt): Rename to finish_init_stmt. - * decl.c (poplevel): Adjust a comment. - * init.c (build_vec_init): Call finish_init_stmt instead of - finish_for_init_stmt. - * name-lookup.c (pushdecl_maybe_friend_1): Adjust a comment. - * name-lookup.h (enum scope_kind): Likewise. - * parser.c (cp_parser_statement): Update commentary. - (cp_parser_init_statement_p): New function. - (cp_parser_selection_statement): Parse the optional init-statement. - (cp_parser_for): Call finish_init_stmt instead of finish_for_init_stmt. - (cp_parser_c_for): Likewise. - (cp_convert_range_for): Call finish_init_stmt instead of finish_for_init_stmt. - (cp_parser_range_for_member_function): Update commentary. - (cp_parser_iteration_statement): - (cp_parser_for_init_statement): Rename to cp_parser_init_statement. - * pt.c (tsubst_omp_for_iterator): Update commentary. - (tsubst_expr): Call finish_init_stmt instead of finish_for_init_stmt. - * semantics.c (finish_for_init_stmt): Rename to finish_init_stmt. - Update commentary. - -2016-10-04 Jason Merrill <jason@redhat.com> - - PR c++/77852 - * pt.c (do_class_deduction): Handle list-initialization. - (do_auto_deduction): Call it sooner. - (build_deduction_guide): Use tsubst_arg_types. - (rewrite_template_parm): Don't copy_type. - - PR c++/77775 - * constexpr.c (cxx_eval_component_reference): Use name matching - for PMFs. - - Implement P0091R2, Template argument deduction for class templates. - * parser.c (cp_parser_simple_type_specifier): Parse class placeholder. - Use the location of the beginning of the type-specifier. - (cp_parser_init_declarator): Parse deduction guide. - (cp_parser_diagnose_invalid_type_name): Mention class deduction. - (cp_parser_type_id_1): Don't accept class placeholder as template arg. - * cp-tree.h (CLASS_PLACEHOLDER_TEMPLATE): New. - * decl.c (grokdeclarator): Check for uninitialized auto here. - (start_decl_1): Not here. - (cp_finish_decl): Or here. Don't collapse a list when doing - class deduction. - (grokfndecl): Check deduction guide scope and body. - * error.c (dump_decl, dump_function_decl, dump_function_name): - Handle deduction guides. - * pt.c (make_template_placeholder, do_class_deduction): New. - (build_deduction_guide, rewrite_template_parm): New. - (dguide_name, dguide_name_p, deduction_guide_p): New. - (do_auto_deduction): Call do_class_deduction. - (splice_late_return_type, is_auto): Handle class placeholders. - (template_parms_level_to_args): Split from template_parms_to_args. - (tsubst_template_parms_level): Split from tsubst_template_parms. - * typeck2.c (build_functional_cast): Handle class placeholder. - -2016-10-04 Martin Sebor <msebor@redhat.com> - - PR c++/77804 - * init.c (warn_placement_new_too_small): Avoid assuming an array type - has a constant size. - -2016-10-04 Jakub Jelinek <jakub@redhat.com> - - PR c++/77791 - * parser.c (cp_parser_lambda_declarator_opt): Only pedwarn - for C++11 on decls in the param_list. Test cxx_dialect < cxx14 before - the loop just once. - - * cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*, - CPTI_LANG_NAME_JAVA and CPTI_JCLASS. - (java_byte_type_node, java_short_type_node, java_int_type_node, - java_long_type_node, java_float_type_node, java_double_type_node, - java_char_type_node, java_boolean_type_node, lang_name_java, - jclass_node): Remove. - (enum languages): Remove lang_java. - (TYPE_FOR_JAVA): Remove. - (struct lang_type_class): Remove java_interface bit-field. - (TYPE_JAVA_INTERFACE): Remove. - (pragma_java_exceptions): Remove. - (check_java_method, build_java_class_ref): Remove prototypes. - * name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA. - * decl2.c (acceptable_java_type, check_java_method): Remove. - (import_export_decl): Remove TYPE_FOR_JAVA handling. - (build_java_method_aliases): Remove. - (c_parse_final_cleanups): Don't call build_java_method_aliases. - (possibly_inlined_p): Don't test pragma_java_exceptions. - * init.c (build_new_1): Remove TYPE_FOR_JAVA handling. - (build_java_class_ref): Remove. - * pt.c (maybe_new_partial_specialization, lookup_template_class_1, - instantiate_class_template_1): Don't copy TYPE_FOR_JAVA. - * except.c (eh_type_info): Remove java type handling. - (decl_is_java_type, choose_personality_routine): Remove. - (initialize_handler_parm): Don't call choose_personality_routine. - (expand_start_catch_block): Don't handle java types. - (build_throw): Likewise. - * cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions. - * typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA. - * call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE. - (java_iface_lookup_fn): Remove. - (build_java_interface_fn_ref): Remove. - * tree.c (cxx_attribute_table): Remove java_interface. - (handle_java_interface_attribute): Remove. - * lex.c (pragma_java_exceptions): Remove. - (init_cp_pragma): Don't register GCC java_exceptions pragma. - (handle_pragma_java_exceptions): Remove. - (retrofit_lang_decl): Don't handle lang_name_java. - * method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA. - * error.c (language_to_string): Don't handle lang_java. - * decl.c (record_builtin_java_type): Remove. - (initialize_predefined_identifiers): Remove Java. - (cxx_init_decl_processing): Remove java_*_type_node. - (cp_finish_decl): Don't handle TYPE_FOR_JAVA. - (grokfndecl): Likewise. - (check_special_function_return_type): Likewise. - (grokdeclarator): Don't set TYPE_FOR_JAVA. - (grokparms): Don't handle TYPE_FOR_JAVA. - (xref_basetypes): Likewise. - (check_function_type): Likewise. - (finish_constructor_body): Likewise. - * mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA - and java_*_type_node. - (write_bare_function_type): Don't handle TYPE_FOR_JAVA. - (write_java_integer_type_codes): Remove. - * class.c (add_method): Don't handle TYPE_FOR_JAVA. - (add_implicitly_declared_members, determine_key_method, - finish_struct_1): Likewise. - (push_lang_context): Don't handle lang_name_java. - -2016-10-03 Marek Polacek <polacek@redhat.com> - - Core 903 - * typeck.c (cp_build_binary_op): Pass original operands to - null_ptr_cst_p, not those after the default conversions. - -2016-10-03 Bernd Edlinger <bernd.edlinger@hotmail.de> - - * parser.c (cp_parser_condition): Fix a warning. - -2016-09-29 Jakub Jelinek <jakub@redhat.com> - - Implement P0001R1 - C++17 removal of register storage class specifier - * decl.c (cp_finish_decl): Diagnose register storage class - on vars except when used in GNU global or local register variable - extension. - (grokdeclarator): Diagnose register storage class on parameters. - * except.c (expand_start_catch_block): Set DECL_REGISTER only - after cp_finish_decl call. - -2016-09-29 Marek Polacek <polacek@redhat.com> - - * rtti.c (involves_incomplete_p): Add fall through comment. - -2016-09-28 Jakub Jelinek <jakub@redhat.com> - - PR c++/77467 - * constexpr.c (enum constexpr_switch_state): New. - (struct constexpr_ctx): Add css_state field. - (label_matches): Add CTX and STMT arguments, remove I and - DEFAULT_LABEL. For CASE_LABEL_EXPR assert ctx->css_state != NULL, - handle default labels according to css_state. - (cxx_eval_statement_list): Remove statement skipping, label_matches - and default_label handling code. - (cxx_eval_loop_expr): Exit after first iteration even if - switches (jump_target). - (cxx_eval_switch_expr): Set up css_state field in ctx, if default - label has been seen in the body, but no cases matched, evaluate - the body second time. - (cxx_eval_constant_expression): Handle stmt skipping and label_matches - here. Handle PREDICT_EXPR. For MODIFY_EXPR or INIT_EXPR, assert - statement is not skipped. For COND_EXPR during skipping, don't - evaluate condition, just the then block and if still skipping at the - end also the else block. - (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer. - (is_sub_constant_expr): Likewise. - -2016-09-27 Jakub Jelinek <jakub@redhat.com> - - Implement P0018R3, C++17 lambda capture of *this by value as [=,*this] - * parser.c (cp_parser_lambda_introducer): Formatting fix. Pass - true instead of false as by_reference_p to add_capture for 'this'. - Parse '*this' simple-capture. - * lambda.c (build_capture_proxy): Handle '*this' capture by value. - (add_capture): Adjust function comment. For id == this_identifier, - treat by_reference_p as capturing '*this' by reference, i.e. 'this' - by value, and !by_reference_p as capturing '*this' by value. - (add_default_capture): For implicit 'this' capture, always pass - by_reference_p true rather than false. - - PR c++/77722 - * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also - functions that have just a STATEMENT_LIST instead of BIND_EXPR, or - BIND_EXPR with some statement rather than STATEMENT_LIST as body. - -2016-09-26 Nathan Sidwell <nathan@acm.org> - - * init.c (expand_default_init): Fix } indentation. - * method.c (process_subob_fn): Simplify control structure to - remove gotos. - (implicitly_declare_fn): Remove duplicated lambda ctor check. - -2016-09-26 Marek Polacek <polacek@redhat.com> - - PR c/7652 - * parser.c (cp_parser_storage_class_specifier_opt): Add - gcc_fallthrough. - (cp_parser_skip_to_end_of_template_parameter_list): Likewise. - (cp_parser_cache_defarg): Likewise. - (cp_parser_omp_for_cond): Likewise. - * semantics.c (finish_decltype_type): Likewise. - * typeck.c (structural_comptypes): Likewise. - (cp_build_binary_op): Likewise. - (cp_build_modify_expr): Likewise. - -2016-09-26 Marek Polacek <polacek@redhat.com> - - PR c/7652 - * constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH. - (potential_constant_expression_1): Likewise. - * constraint.cc (function_concept_check_p): Check fn for null. - * parser.c (cp_parser_expression_statement): Handle attribute - fallthrough. - (cp_parser_statement): Likewise. - (cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on - labels. - (cp_parser_std_attribute): Handle fallthrough attribute. - (cp_parser_check_std_attribute): Add %< %> quotes. - * pt.c (tsubst_copy_and_build): Handle internal functions. - (instantiation_dependent_scope_ref_p): Return if the expression is - null. - -2016-09-24 Marek Polacek <polacek@redhat.com> - - PR c/77490 - * typeck.c (cp_build_unary_op): Warn about bit not on expressions that - have boolean value. - -2016-09-23 Jakub Jelinek <jakub@redhat.com> - - Implement P0138R2, C++17 construction rules for enum class values - * cp-tree.h (is_direct_enum_init): Declare. - * decl.c (is_direct_enum_init): New function. - (reshape_init): Use it. - * typeck.c (convert_for_assignment): Likewise. - - * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to - make check-g++. - - * constexpr.c (call_stack): Remove unnecessary - = vNULL initialization of file scope vec. - - * name-lookup.c (store_bindings, store_class_bindings): Don't - initialize static local bindings_need_stored to vNULL. - - * typeck2.c (process_init_constructor_record): Use - CONSTRUCTOR_NELTS (...) instead of - vec_safe_length (CONSTRUCTOR_ELTS (...)). - * decl.c (reshape_init_r): Likewise. - (check_initializer): Likewise. - -2016-09-22 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/71979 - * class.c (build_base_path): Allow for lookup_base returning - NULL_TREE. - -2016-09-21 Jason Merrill <jason@redhat.com> - - Core 903 - * call.c (null_ptr_cst_p): Check char_type_p. - -2016-09-21 Jakub Jelinek <jakub@redhat.com> - - PR c++/77651 - * init.c (build_new_1): Don't suggest to use -faligned-new if - aligned_new_threshold is non-zero. - (type_has_new_extended_alignment): Change aligned_new_threshhold - to aligned_new_threshold. - * call.c (second_parm_is_size_t, aligned_allocation_fn_p, - aligned_deallocation_fn_p, build_op_delete_call): Likewise. - * decl.c (cxx_init_decl_processing): Likewise. - -2016-09-20 Jakub Jelinek <jakub@redhat.com> - - PR c++/77626 - * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on - FIELD_DECLs with error_mark_node type. Remove useless break; after - return. - - PR c++/77638 - * parser.c (cp_parser_template_declaration_after_parameter): For 2 - argument operator"" template set ok to false for - parm == error_mark_node. - - PR c++/77637 - * parser.c (cp_parser_std_attribute_list): Reject ... without - preceding attribute. - -2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de> - - PR c++/77434 - * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here. - -2016-09-16 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/77639 - * parser.c (cp_parser_class_head): When - processing_template_parmlist, don't assume that the - class-head may start an explicit specialization. - -2016-09-16 Jakub Jelinek <jakub@redhat.com> - - PR c++/77482 - * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P - if DECL_LANG_SPECIFIC is non-NULL. Fix up formatting. - - PR c++/77338 - * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only - call is_really_empty_class on complete types. - - PR c++/77375 - * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any - TYPE_HAS_MUTABLE_P for any bases. - -2016-09-16 Jason Merrill <jason@redhat.com> - - * class.c (check_bases, set_one_vmethod_tm_attributes): Use - least_bit_hwi. - * decl.c (cxx_init_decl_processing): Use pow2p_hwi. - * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi. - -2016-09-14 Jakub Jelinek <jakub@redhat.com> - - PR c++/77549 - * name-lookup.c (consider_binding_level): Look through TREE_LIST - and OVERLOAD. - -2016-09-14 Marek Polacek <polacek@redhat.com> - - * typeck.c (cp_build_unary_op): Diagnose incrementing boolean - expressions. Tweak an error message. - -2016-09-14 Marek Polacek <polacek@redhat.com> - - * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to - bool. - * decl2.c (one_static_initialization_or_destruction): Use true instead - of 1. - * init.c (build_vec_init): Use false instead of 0. - * pt.c (tsubst_copy_and_build): Likewise. - * semantics.c (simplify_loop_decl_cond): Likewise. - * typeck.c (rationalize_conditional_expr): Likewise. - (cp_build_binary_op): Use true instead of 1. - (cp_build_unary_op): Change nonconvert parameter type to bool. Use true - instead of 1. - (build_unary_op): Change nonconvert parameter type to bool. - (unary_complex_lvalue): Use false instead of 0. - -2016-09-13 Jakub Jelinek <jakub@redhat.com> - - Implement P0028R4, C++17 using attribute namespaces without repetition - * parser.c (cp_parser_std_attribute): Add ATTR_NS argument. Diagnose - non-NULL ATTR_NS with scoped attribute token. Handle non-NULL - ATTR_NS with non-scoped attribute tokens. Allow named ops in - identifier after ::. - (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down - to cp_parser_std_attribute calls. - (cp_parser_std_attribute_spec): Parse optional C++17 - attribute-using-prefix, adjust grammar in function comment. - - PR c++/77553 - * constexpr.c (cxx_fold_pointer_plus_expression): New function. - (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR. - (cxx_eval_pointer_plus_expression): Remove. - (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't - call cxx_eval_pointer_plus_expression. - -2016-09-13 David Malcolm <dmalcolm@redhat.com> - - * parser.c (cp_parser_class_specifier_1): Update for renaming of - add_fixit_insert to add_fixit_insert_before. - (cp_parser_class_head): Likewise. - -2016-09-12 Bernd Edlinger <bernd.edlinger@hotmail.de> - - PR c++/77496 - * call.c (build_conditional_expr_1): Call warn_for_omitted_condop. - * class.c (instantiate_type): Look through the SAVE_EXPR. - -2016-09-09 Jason Merrill <jason@redhat.com> - - Implement P0035R4, C++17 new of over-aligned types. - * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE. - (align_type_node): New macro. - * call.c (build_operator_new_call): Handle C++17 aligned new. - (second_parm_is_size_t, build_op_delete_call): Likewise. - (non_placement_deallocation_fn_p): Likewise. Rename to - usual_deallocation_fn_p. - (aligned_allocation_fn_p, aligned_deallocation_fn_p): New. - * decl.c (cxx_init_decl_processing): Add aligned new support. - * init.c (type_has_new_extended_alignment): New. - (build_new_1): Handle aligned new. - * tree.c (vec_copy_and_insert): New. - -2016-09-02 Jakub Jelinek <jakub@redhat.com> - - PR sanitizer/77396 - * decl2.c (do_static_initialization_or_destruction): Only - call asan_dynamic_init_call if INITP is true. - -2016-09-01 Martin Sebor <msebor@redhat.com> - - * mangle.c: Increase buffer size to guarantee it fits the output - of the formatted function regardless of its arguments. - -2016-09-01 Marek Polacek <polacek@redhat.com> - - PR c/7652 - * error.c (dump_type): Fix falls through comment. - (dump_decl): Likewise. - (dump_expr): Likewise. - -2016-08-30 David Malcolm <dmalcolm@redhat.com> - - * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it - hint to ">>" within nested template argument list error. - -2016-08-30 David Malcolm <dmalcolm@redhat.com> - - * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace - rather than add_fixit_misspelled_id. - * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. - -2016-08-29 Jason Merrill <jason@redhat.com> - - PR c++/77379 - * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks. - (mangle_thunk): Add thunk parameter. - * method.c (finish_thunk): Pass it. - * cp-tree.h: Declare it. - -2016-08-15 Jason Merrill <jason@redhat.com> - - Avoid calling a trivial default constructor. - * class.c (default_ctor_p): New. - (in_class_defaulted_default_constructor): Use it. - (type_has_non_user_provided_default_constructor): Use it. - * call.c (build_over_call): Handle trivial default constructor. - * cp-tree.h: Declare default_ctor_p. - - PR c++/57728 - * pt.c (do_type_instantiation): Don't mess with non-user-provided - member functions. - -2016-08-25 Marek Polacek <polacek@redhat.com> - - * parser.c (cp_parser_binary_expression): Pass LHS to - warn_logical_not_parentheses. - -2016-08-18 Marek Polacek <polacek@redhat.com> - - PR c/7652 - * call.c (add_builtin_candidate): Add gcc_fallthrough. - * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise. - * parser.c (cp_parser_skip_to_end_of_statement): Likewise. - (cp_parser_cache_defarg): Likewise. - -2016-08-12 Marek Polacek <polacek@redhat.com> - - PR c/7652 - * call.c (add_builtin_candidate): Add FALLTHRU. - (build_integral_nontype_arg_conv): Adjust fall through comment. - (build_new_op_1): Add FALLTHRU. - (convert_like_real): Adjust fall through comment. - * class.c (fixed_type_or_null): Likewise. - * constexpr.c (cxx_eval_constant_expression): Likewise. - (potential_constant_expression_1): Likewise. Add FALLTHRU. - * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment. - (cp_fold): Add FALLTHRU. - * cvt.c (build_expr_type_conversion): Adjust fall through comment. - * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU. - (pp_cxx_qualified_id): Likewise. - (cxx_pretty_printer::constant): Adjust fall through comment. - (cxx_pretty_printer::primary_expression): Add FALLTHRU. - (pp_cxx_pm_expression): Adjust fall through comment. - (cxx_pretty_printer::expression): Add FALLTHRU. - (cxx_pretty_printer::declaration_specifiers): Reformat code. - (pp_cxx_type_specifier_seq): Adjust fall through comment. - (pp_cxx_ptr_operator): Likewise. Add FALLTHRU. - * error.c (dump_type): Adjust fall through comment. - (dump_decl): Likewise. - * mangle.c (write_type): Likewise. - * method.c (synthesized_method_walk): Add FALLTHRU. - * name-lookup.c (arg_assoc_type): Likewise. - * parser.c (cp_lexer_print_token): Adjust fall through comment. - (cp_parser_primary_expression): Add FALLTHRU. - (cp_parser_operator): Likewise. - * pt.c (find_parameter_packs_r): Likewise. - (tsubst_aggr_type): Adjust fall through comment. - * semantics.c (finish_omp_clauses): Add FALLTHRU. - * tree.c (lvalue_kind): Likewise. - -2016-08-12 Alexandre Oliva <aoliva@redhat.com> - - PR debug/63240 - * cp-objcp-common.c (cp_function_decl_defaulted): New. - (cp_function_decl_explicit_p): Const_tree-ify. - (cp_function_decl_deleted_p): Likewise. - * cp-objcp-common.h (cp_function_decl_defaulted): Declare. - (cp_function_decl_explicit_p): Const_tree-ify. - (cp_function_decl_deleted_p): Likewise. - (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine. - -2016-08-11 Jakub Jelinek <jakub@redhat.com> - - PR c++/72868 - * constexpr.c (label_matches): Handle case range expressions. - -2016-08-11 Jason Merrill <jason@redhat.com> - - PR c++/73456 - * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION. - -2016-08-10 Jason Merrill <jason@redhat.com> - - Implement C++17 constexpr if. - * cp-tree.h (IF_STMT_CONSTEXPR_P): New. - * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it. - * parser.h (struct cp_parser): Add in_discarded_stmt field. - * parser.c (cp_parser_selection_statement): Handle 'if constexpr'. - (cp_parser_jump_statement): Avoid deducing from a discarded return. - * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if. - * semantics.c (begin_if_stmt): Set the binding level this_entity. - (finish_if_stmt_cond): Require the condition of a - constexpr if to be constant. - * decl.c (level_for_constexpr_if): New. - (named_label_entry): Add in_constexpr_if field. - (poplevel_named_label_1): Set it. - (check_goto): Check it. - (check_previous_goto_1): Check level_for_constexpr_if. - -2016-08-09 Jason Merrill <jason@redhat.com> - - PR c++/68703 - * decl2.c (any_dependent_type_attributes_p): New. - * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it. - * semantics.c (finish_id_expression): Check it. - * typeck.c (finish_class_member_access_expr): Check it. - - PR c++/71712 - * class.c (check_abi_tags): Don't duplicate tags for conversion ops. - - Adjust mangling of ABI tags on class template member functions. - * class.c (missing_abi_tags): New. - (check_abi_tags): Don't check template. Add just_checking mode. - * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New. - (sorted_abi_tags): Split out from write_abi_tags. - (struct releasing_vec): New. - (write_unqualified_name): Only look for the primary - template for types. Implement backward compatibility. - - PR c++/72849 - * constexpr.c (cxx_eval_constant_expression): Check - COMPLETE_TYPE_P before calling is_really_empty_class. - * class.c (is_really_empty_class): Don't call complete_type. - - PR c++/56701 - * typeck.c (cp_build_addr_expr_1): Remove special *this handling. - -2016-08-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/72809 - * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for - builtin aggregate types without TYPE_BINFO. - -2016-08-08 Jason Merrill <jason@redhat.com> - - Implement C++17 constexpr lambda. - * class.c (finalize_literal_type_property): Handle lambdas. - * constexpr.c (is_valid_constexpr_fn): Likewise. No longer static. - (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle - lambdas. - (cxx_eval_constant_expression): Handle capture proxy. - (var_in_constexpr_fn): Don't check for C++14. - (var_in_maybe_constexpr_fn): New. - (potential_constant_expression_1): Use it. Check DECL_EXPR for - declarations not allowed in constexpr function. Handle - STATIC_ASSERT, RANGE_FOR_STMT. - * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn. - (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members. - * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P. - (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location. - (lambda_static_thunk_p): New. - * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR. - (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator. - (cp_parser_decl_specifier_seq): Handle it. - (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq. - * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P. - (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P. - * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS. - (dump_expr) [FUNCTION_DECL]: Pass it. - -2016-08-08 Jason Merrill <jason@redhat.com> - - PR c++/67131 - * class.c (is_really_empty_class): Call complete_type. - * constexpr.c (cxx_eval_constant_expression): Check - is_really_empty_class. - (potential_constant_expression_1): Likewise. Check for error type. - -2016-08-08 Jakub Jelinek <jakub@redhat.com> - - PR c++/58706 - * parser.c: Include tree-iterator.h. - (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init - to FOR_BLOCK. - (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK - entries. - -2016-08-06 Jonathan Wakely <jwakely@redhat.com> - - * call.c (convert_like_real): Harmonize diagnostics for invalid - reference binding. - -2016-08-05 Martin Sebor <msebor@redhat.com> - - * constexpr.c (cxx_eval_store_expression): Remove hyphen from - the spelling of "constant-expression" in diagnostic messages - for consistency. - (cxx_eval_constant_expression): Same. - (cxx_eval_outermost_constant_expr): Same. - (potential_constant_expression_1): Same. - -2016-08-05 Nathan Sidwell <nathan@acm.org> - - PR c++/68724 - * pt.c (unify): TRAIT_EXPR is an expr. - -2016-08-04 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/72800 - * lambda.c (add_capture): Check lambda_capture_field_type return - value for error_mark_node. - -2016-08-04 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/72759 - * pt.c (tsubst_qualified_id): Return error_mark_node if - template_args is error_mark_node. - -2016-08-04 Jason Merrill <jason@redhat.com> - - PR c++/72415 - * pt.c (tsubst_pack_expansion): Pull a single pack expansion out - of the TREE_VEC. - - * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P. - (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS. - * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c, - name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust. - - PR c++/72796 - * typeck.c (finish_class_member_access_expr): Avoid stripping - SCOPE_REF to dependent base. - -2016-08-04 Thomas Schwinge <thomas@codesourcery.com> - - * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics. - (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics. - (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine): - Simplify code, and improve diagnostics. - (cp_parser_oacc_routine): Likewise. Move pragma context - checking... - (cp_parser_pragma): ... here. - - * parser.h (struct cp_omp_declare_simd_data): New. - (struct cp_parser): Use it for oacc_routine member. - * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine) - (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine): - Use it. Simplify code. - (cp_parser_new): Initialize all members pointing to special - parsing data structures. - (cp_parser_cilk_simd_fn_vector_attrs): Initialize - parser->cilk_simd_fn_info->clauses. - (cp_parser_omp_declare_simd): Initialize - parser->omp_declare_simd->clauses. - (cp_parser_late_parsing_omp_declare_simd): Simplify code. - -2016-08-04 Marek Polacek <polacek@redhat.com> - - PR c++/70229 - * constexpr.c (check_constexpr_ctor_body_1): Allow typedef - declarations. - -2016-08-01 Jason Merrill <jason@redhat.com> - - * mangle.c (mangle_decl): Warn about mangled name change even if - DECL_REALLY_EXTERN. - - * mangle.c (get_abi_tags): New. - (find_substitution, write_unqualified_name, write_abi_tags) - (maybe_check_abi_tags): Use it. - - * mangle.c (mangle_decl): Fix mangled name change warning. - - PR c++/72766 - * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy - of nelts. - * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in - C++11 and up. - -2016-07-30 Martin Sebor <msebor@redhat.com> - - PR c++/60760 - PR c++/71091 - * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions - involving null pointers. - (cxx_eval_component_reference): Reject null pointer dereferences. - (cxx_eval_indirect_ref): Reject indirecting through null pointers. - (cxx_eval_constant_expression): Reject invalid expressions involving - null pointers. - -2016-07-29 Marek Polacek <polacek@redhat.com> - - PR c/71926 - * semantics.c (maybe_convert_cond): Use the location of COND for the - parentheses warning. - -2016-07-29 Jason Merrill <jason@redhat.com> - - * decl.c (build_enumerator): Tweak diagnostic. - - PR c++/72457 - * init.c (expand_aggr_init_1): Only handle value-init of bases. - * constexpr.c (build_data_member_initialization): Handle multiple - initializers for the same field. - -2016-07-28 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/71665 - * decl.c (build_enumerator): Check the type of the enumerator before - calling cxx_constant_value. - -2016-07-27 Jason Merrill <jason@redhat.com> - - PR c++/71747 - * pt.c (get_partial_spec_bindings): Replace tparms and spec_args - parameters with spec_tmpl. Call push_tinst_level. - (most_specialized_partial_spec): Adjust. - (more_specialized_partial_spec): Adjust. - -2016-07-25 Jason Merrill <jason@redhat.com> - - PR c++/65970 - * cp-gimplify.c (genericize_cp_loop): Revert location change. - - PR c++/71837 - * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST. - (build_lambda_object): Call build_x_compound_expr_from_list. - * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise. - - PR c++/71833 - PR c++/54440 - * pt.c (coerce_template_parameter_pack): Fix logic for - pack index. - - PR c++/65970 - * constexpr.c (cxx_eval_loop_expr): Count iterations. - * cp-gimplify.c (genericize_cp_loop): Use start_locus even for - infinite loops. - - PR c++/71972 - * constexpr.c (cxx_eval_array_reference): Handle looking for the - value of an element we're currently modifying. - -2016-07-24 Jason Merrill <jason@redhat.com> - - PR c++/71515 - * pt.c (resolve_typename_type): Try to avoid calling - currently_open_class. - -2016-07-23 Jason Merrill <jason@redhat.com> - - PR c++/66617 - * call.c (add_list_candidates): Handle VTT parm. - (build_new_method_call_1): Likewise. - - PR c++/55922 - PR c++/63151 - * init.c (expand_aggr_init_1): Handle list-initialization from {}. - - PR c++/70709 - * class.c (walk_subobject_offsets): Handle 0-length array. - - PR c++/70778 - * pt.c (tsubst): Also substitute into the template of a - BOUND_TEMPLATE_TEMPLATE_PARM. - - PR c++/71738 - * pt.c (lookup_template_class_1): Handle getting template from tsubst. - - PR c++/71350 - * decl.c (reshape_init_r): Check complain for missing braces warning. - -2016-07-22 Jason Merrill <jason@redhat.com> - - PR c++/71576 - * call.c (convert_like_real): Use lvalue_kind. - - PR c++/71748 - PR c++/52746 - * pt.c (tsubst_baselink): Call - adjust_result_of_qualified_name_lookup for unqualified - destructors. - -2016-07-21 Jason Merrill <jason@redhat.com> - - PR c++/69223 - * semantics.c (apply_deduced_return_type): Call - complete_type_or_else before building the new RESULT_DECL. - - PR c++/71274 - * decl2.c (maybe_instantiate_decl): Split out from mark_used. - (decl_constant_var_p): Use it instead. - - PR c++/71630 - * pt.c (instantiate_decl): Fix pattern_defined for namespace scope - variable templates. - - PR c++/71913 - * call.c (unsafe_copy_elision_p): It's OK to elide when - initializing an unknown object. - - * call.c (build_over_call): Check unsafe_copy_elision_p even for - trivial constructors. - * method.c (do_build_copy_constructor): Don't copy tail padding - even in a trivial constructor. - -2016-07-21 Jakub Jelinek <jakub@redhat.com> - - PR c++/71728 - * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>: - Replace assert with test, return false if the goto isn't break - or continue. Formatting fix. - -2016-07-21 Richard Biener <rguenther@suse.de> - - * vtable-class-hierarchy.c (vtv_generate_init_routine): Set - DECL_IGNORED_P. - -2016-07-21 Jakub Jelinek <jakub@redhat.com> - - PR c++/71941 - * cp-gimplify.c (cp_genericize): For nested cp_genericize calls - save/restore bc_label array. - -2016-07-21 Jason Merrill <jason@redhat.com> - - PR c++/70781 - * parser.c (cp_parser_lambda_expression): Unset OK if there was an - error parsing the lambda-declarator. - - PR c++/71896 - * constexpr.c (cxx_eval_binary_expression): Handle comparison - between lowered and unlowered PTRMEM_CST. - - PR c++/65168 - * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr. - Don't set c_inhibit_evaluation_warnings. - - PR c++/71121 - * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value. - -2016-07-21 Andrew Sutton <andrew.n.sutton@gmail.com> - Jason Merrill <jason@redhat.com> - - Improving concepts performance and diagnostics. - PR c++/67565 - PR c++/67579 - PR c++/71843 - * cp-tree.def (CHECK_CONSTR): New. - * cp-tree.h (CHECK_CONSTR_CONCEPT): New. - (CHECK_CONSTR_ARGS): New. - * constraint.cc (make_predicate_constraint): Remove in favor of - normalize_expression. - (resolve_constraint_check): Actually return error_mark_node when - resolution fails. - (resolve_variable_concept_check): Perform coercion as if processing - a template. Also return errors on resolution failure. - (lift_*): Remove all of these functions. Don't unnecessarily inline - concepts. - (learn_*): Add facilities to memoize implications for subsumption - during normalization. - (expanding_concept): New. - (expand_concept): New. Return the inlined and normalized definition - of a concept when needed. - (transform_*, xform_*): Rename to normalize_* to better reflect the - responsibility of those functions. - (normalize_template_id_expression): Check for non-boolean operands - when possible. Generate check constraints instead of normal variable - references. - (normalize_call_expression): Report errors when resolution fails. - (check_for_logical_overloads): Rewrite this check to more accurately - report the error. - (normalize_atom): Check for overloaded calls and invalid types before - determining if the expression refers to a concept. - (build_constraints): Don't cache normalized constraints or decomposed - assumptions. - (finish_shorthand_constraint): Return a normalized expression instead - of a predicate constraint. - (finish_template_introduction): Same. - (placeholder_extract_concept_and_args): Rewrite this since we only - ever get check constraints here. - (equivalent_placeholder_constraints): Rewrite in terms of check - constraints, and handle error_mark_nodes correctly. - (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr) - (tsubst_implicit_conversion_constr) - (tsubst_argument_deduction_constr, tsubst_exception_constr) - (tsubst_parameterized_constraint, tsubst_constraint): New. - (tsbust_conjunection): Replace with tsubst_logical_operator and - actually generate the right kind of constraint. - (tsubst_requirement_body): Reverse the order of substituted arguments - so that they appear in the order written (helps diagnostics). - (satisfy_check_constraint): New. - (satisfy_conjunction): Simplify. - (satisfy_disjunction): Same. - (satisfy_constraint_1): Handle check constraints. - (eval_constr): New (private) global state. - (evaluating_constraints_sentinel): New. Manages eval_constr. - (satisfy_constraint): Add timing variables. - (satisfy_associated_constraints): Add hooks for memoization. - (evaluate_function_concept): Build a check constraint instead of - normalizing its definition. - (evaluate_variable_concept): Same. - (evaluate_constraint_expression): Normalize, but in the current - declaration processing context. - (evaluating_constraints_p): New. - (elide_constraint_failure_p): Actually emit constraint_thresh errors. - (diagnose_*): Remove artificial indentation. Add a new parameter to - each that tracks the current (complete) constraint prior to any - substitutions. - (diagnose_expression): Removed. - (diagnose_call_expression): Same. - (diagnose_template_id): Same. - (diagnose_template_id): New. - (diagnose_logical_constraint): New. - (diagnose_expression_constraint): Show the original expression. - (diagnose_type_constraint): Show the original type. - (diagnose_implicit_conversion_constraint): Be specific about - failures, don't re-diagnose a known-to-be-failed substitutions, - and manage elisions properly. - (diagnose_argument_deduction_constraint): Same. - (diagnose_exception_constraint): Same. - (diagnose_parameterized_constraint): Same. - (constraint_p): Allow EXPR_PACK_EXPANSION. - * logic.cc (next_by_distance): Removed. No longer used. - (any_p): Renamed from any_of. - (term_entry, term_hasher): New. - (term_list): Rewrite to include a hash table for quick lookup. - Also, make less stateful. - (proof_state): Extend to allow goals to be discharged once - satisfied. - (non_atomic_constraint_p): New. - (any_non_atomic_constraints_p): New. - (...rest...): Previous implementation completely replaced with an - iterative algorithm that opportunistically prunes the search space - before committing to using more memory. - * parser.c: (cp_parser_type_parameter): Normalize constraints. - (cp_parser_explicit_template_declaration): Same. - * pt.c: (finish_template_variable): Be less redundant with this error - message. - (template_args_equal): No longer static. - (tsubst_decl): Don't try to find specializations of variables that - have already been instantiated. - (build_non_dependent_expr): Avoid infinite recursion during concept - expansion. - (make_constrained_auto): Normalize constraints. - (do_auto_deduction): When doing auto deduction from a - partial-concept-id, be sure to include the explicit args checking - the constraints. - (constraint_sat_*): New. Memoize satisfied constraints. - (concept_spec_*): New. Memoize expressions associated with a concept - specialization. - (constraint_memos, concept_memos): New. - (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New. - (lookup_concept_satisfaction, memoize_concept_satisfaction): New. - (get_concept_expansion, save_concept_expansion): New. - (hash_subsumption_args): New. - (comp_subsumption_args): New. - (subsumption_*): New. Memoize parts of the subsumption relation. - (lookup_subsumption_result, save_subsumption_result): New. - (init_constraint_processing): Initialize memo tables. - (get_constraints): Shortcut if !flag_concepts. - * decl.c (grokfndecl): Normalize constraints. - * error.c (dump_simple_decl): Print "concept" when appropriate. - (dump_function_decl): Same. - (dump_template_decl): Don't write requirements when we're not - printing the header. - (dump_expr): Handle fold expressions. - * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle - fold expressions. - (get_fold_operator): New. - (pp_cxx_unary_left_fold_expression): New. - (pp_cxx_unary_right_fold_expression): New. - (pp_cxx_binary_fold_expression): New. - (pp_cxx_check_constraint): New. - (pp_cxx_*_constraint): Rewrite the grammar of internal constraints - to make them easier to read when debugging. - * search.c (accessible_p): Don't shortcut when evaluating constraints. - * tree.c (cp_tree_equal): Handle CHECK_CONSTR. - -2016-07-20 David Malcolm <dmalcolm@redhat.com> - - PR c/70339 - PR c/71858 - * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h, - and parser.h. - (suggest_alternatives_for): If no candidates are found, try - lookup_name_fuzzy and report if if finds a suggestion. - (consider_binding_level): New function. - (lookup_name_fuzzy) New function. - * parser.c: Include gcc-rich-location.h. - (cp_lexer_next_token_is_decl_specifier_keyword): Move most of - logic into... - (cp_keyword_starts_decl_specifier_p): ...this new function. - (cp_parser_diagnose_invalid_type_name): When issuing - "does not name a type" errors, attempt to make a suggestion using - lookup_name_fuzzy. - * parser.h (cp_keyword_starts_decl_specifier_p): New prototype. - * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject - types that are not CLASS_TYPE_P, rather than rejecting individual - tree codes. - -2016-07-20 Jakub Jelinek <jakub@redhat.com> - - PR c++/71909 - * parser.c (cp_parser_save_member_function_body): Consume - __transaction_relaxed or __transaction_atomic with optional - attribute. Only skip catch with block if try keyword is seen. - - PR c++/50060 - * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval - when evaluating call arguments. Use fold_builtin_call_array instead - of fold_build_call_array_loc, return t if it returns NULL. Otherwise - check the result with potential_constant_expression and call - cxx_eval_constant_expression on it. - -2016-07-19 Jason Merrill <jason@redhat.com> - - PR c++/67164 - * pt.c (iterative_hash_template_arg, template_args_equal): Don't - handle ARGUMENT_PACK_SELECT. - -2016-07-18 Jakub Jelinek <jakub@redhat.com> - - PR c++/70869 - PR c++/71054 - * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change. - * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL - non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and - DECL_SIZE_UNIT. - - PR c++/71835 - * call.c (build_op_call_1): Use convert_like_with_context only - if cand->fn is a decl. - - PR c++/71828 - * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>: - For lval don't use cxx_eval_unary_expression and instead recurse - and if needed rebuild the reference. - - PR c++/71826 - * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P. - - PR c++/71822 - * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively - fold *expr_p before genericizing it. - - PR c++/71871 - * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change. - -2016-07-15 Jason Merrill <jason@redhat.com> - - PR c++/71495 - * call.c (convert_like_real): Mask complain. - * semantics.c (perform_koenig_lookup): Likewise. - - PR c++/71092 - * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph - threw away DECL_SAVED_TREE. - - PR c++/71117 - Core 2189 - * call.c (add_template_conv_candidate): Disable if there are - viable candidates. - - PR c++/71511 - * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE. - - PR c++/71513 - * pt.c (tsubst_attributes): Fix loop logic. - - PR c++/71604 - PR c++/54430 - * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly. - (cp_parser_simple_declaration): Diagnose type definition in - for-range-declaration. - - PR c++/71711 - * operators.def: Add *_FOLD_EXPR. - * cp-tree.h (FOLD_EXPR_P): Parenthesize. - * mangle.c (write_expression): Handle fold-expressions. - * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold) - (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle - partial instantiation. - - PR c++/71814 - * mangle.c (write_expression): Handle sizeof... an argument pack. - - PR c++/71718 - * pt.c (push_tinst_level_loc): Set at_eof before fatal_error. - - PR c++/70824 - * init.c (constant_value_1): Don't instantiated DECL_INITIAL of - artificial variables. - -2016-07-15 Cesar Philippidis <cesar@codesourcery.com> - - * parser.c (cp_parser_oacc_declare): Don't scan for - GOMP_MAP_POINTER. - * semantics.c (handle_omp_array_sections): Mark data clauses with - GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having - zero-length subarrays. - -2016-07-11 Jason Merrill <jason@redhat.com> - - * decl.c (store_parm_decls): Remove check for void parm. - -2016-07-08 Jason Merrill <jason@redhat.com> - - * cp-tree.h: Unpoison lvalue_p. - * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c, - tree.c, typeck.c, typeck2.c: Use lvalue_p instead of - real_lvalue_p. - - * tree.c (obvalue_p): Rename from lvalue_p. - (lvalue_p): Define for c-common. - * call.c, cp-tree.h, cvt.c, init.c: Adjust. - * typeck.c: Adjust. - (cp_build_addr_expr_1): Remove obsolete code. - - * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p. - * call.c, cp-tree.h, typeck.c: Adjust. - - * lambda.c (maybe_add_lambda_conv_op): Fix null object argument. - - P0145R2: Refining Expression Order for C++. - * cp-gimplify.c (lvalue_has_side_effects): New. - (cp_gimplify_expr): Implement assignment ordering. - * call.c (op_is_ordered, build_over_call): Adjust for - -fargs-in-order renaming to -fstrong-eval-order. - * cp-gimplify.c (cp_gimplify_expr): Likewise. - -2016-07-07 Jakub Jelinek <jakub@redhat.com> - Kai Tietz <ktietz70@googlemail.com> - - PR c++/70869 - PR c++/71054 - * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static - artificial vars, genericize their initializers. - -2016-07-05 David Malcolm <dmalcolm@redhat.com> - - PR c++/62314 - * parser.c (cp_parser_class_specifier_1): When reporting - missing semicolons, use a fixit-hint to suggest insertion - of a semicolon immediately after the closing brace, - offsetting the reported column accordingly. - -2016-07-04 Jan Beulich <jbeulich@suse.com> - - * lang-specs.h ("@c++-header"): Conditionalize "-o". - -2016-06-29 Thomas Schwinge <thomas@codesourcery.com> - - * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>: - Move pragma context checking into... - (cp_parser_omp_cancellation_point): ... here, and improve - diagnostic messages. - * semantics.c (finish_omp_cancel, finish_omp_cancellation_point): - Improve diagnostic messages. - -2016-06-28 Jakub Jelinek <jakub@redhat.com> - - * Make-lang.in: Don't cat ../stage_current if it does not exist. - -2016-06-24 Jason Merrill <jason@redhat.com> - - P0145R2: Refining Expression Order for C++. - * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS. - - * tree.c (get_target_expr_sfinae): Handle bit-fields. - (build_target_expr): Call mark_rvalue_use. - -2016-06-24 Jakub Jelinek <jakub@redhat.com> - - * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p. - (build_over_call): For magic == 3, do no conversion only on 3rd - argument. - -2016-06-23 Andi Kleen <ak@linux.intel.com> - - * Make-lang.in: Add support for autofdo. - -2016-06-21 Jason Merrill <jason@redhat.com> - - * constraint.cc (constraints_satisfied_p): Keep as many levels of - args as our template has levels of parms. - - * pt.c (template_parm_outer_level, uses_outer_template_parms): New. - (type_dependent_expression_p): Use uses_outer_template_parms. - -2016-06-20 David Malcolm <dmalcolm@redhat.com> - - * parser.c (cp_parser_string_literal): Convert non-standard - concatenation error to directly use a rich_location, and - use that to add the location of the first literal to the - diagnostic. - -2016-06-17 Paolo Carlini <paolo.carlini@oracle.com> - - * decl.c (validate_constexpr_redeclaration): Change pair of errors - to error + inform. - * error.c (dump_function_decl): Save the constexpr specifier too. - -2016-06-17 Jakub Jelinek <jakub@redhat.com> - - * tree.c (builtin_valid_in_constant_expr_p): Test for - DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just - DECL_BUILT_IN. - (bot_manip): Likewise. - * call.c (magic_varargs_p): Likewise. - -2016-06-17 Paolo Carlini <paolo.carlini@oracle.com> - - * decl.c (grokfndecl): Change pair of errors to error + inform. - -2016-06-17 Jason Merrill <jason@redhat.com> - - PR c++/71209 - * typeck.c (finish_class_member_access_expr): Avoid "not a base" - warning when there are dependent bases. - -2016-06-17 Jakub Jelinek <jakub@redhat.com> - - * semantics.c (handle_omp_array_sections_1): Don't ICE when - processing_template_decl when checking for bitfields and unions. - Look through REFERENCE_REF_P as base of COMPONENT_REF. - (finish_omp_clauses): Look through REFERENCE_REF_P even for - array sections with COMPONENT_REF bases. - -2016-06-16 Jakub Jelinek <jakub@redhat.com> - - * parser.c (cp_parser_omp_var_list_no_open): Call - convert_from_reference before cp_parser_postfix_dot_deref_expression. - * semantics.c (finish_omp_clauses): Don't ICE when - processing_template_decl when checking for bitfields and unions. - Look through REFERENCE_REF_P as base of COMPONENT_REF. - -2016-06-15 Paolo Carlini <paolo.carlini@oracle.com> - - * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and - "%qF" in warning_at instead of "%q+F" in warning. - (check_redeclaration_exception_specification): Likewise in pedwarn - (and error, inform, for consistency). - * call.c (joust): Likewise. - -2016-06-15 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70202 - * decl.c (xref_basetypes): Revert r117839 changes; add fix-up - code at the end of the for loop; also revert r159637 changes, - add back the gcc_assert. - * cp-tree.h (xref_basetypes): Adjust declaration. - * parser.c (cp_parser_class_head): Adjust xref_basetypes call. - -2016-06-14 David Malcolm <dmalcolm@redhat.com> - - * search.c: Include spellcheck-tree.h rather than spellcheck.h. - -2016-06-14 David Malcolm <dmalcolm@redhat.com> - - * typeck.c: Include "gcc-rich-location.h". - (finish_class_member_access_expr): Simplify fixit code by - using gcc_rich_location::add_fixit_misspelled_id. - -2016-06-14 Jason Merrill <jason@redhat.com> - - P0145R2: Refining Expression Order for C++. - * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS) - (CALL_EXPR_REVERSE_ARGS): New. - * call.c (build_new_op_1): Set them. - (extract_call_expr, op_is_ordered): New. - (build_over_call): Set CALL_EXPR_ORDERED_ARGS. - * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags. - * pt.c (tsubst_copy_and_build): Copy new flags. - * semantics.c (simplify_aggr_init_expr): Likewise. - * tree.c (build_aggr_init_expr): Likewise. - (build_min_non_dep_op_overload): Likewise. - -2016-06-14 Jakub Jelinek <jakub@redhat.com> - - PR c++/71528 - * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external - olddecl vars, preserve their TREE_READONLY bit. - - PR c++/71516 - * decl.c (complete_vars): Handle gracefully type == error_mark_node. - -2016-06-14 Paolo Carlini <paolo.carlini@oracle.com> - - * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init. - -2016-06-13 Paolo Carlini <paolo.carlini@oracle.com> - - * decl.c (grokdeclarator): Fix typo in pedwarn text. - -2016-06-10 Thomas Schwinge <thomas@codesourcery.com> - - PR c/71381 - * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>: - Loosen checking. - -2016-06-09 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/71465 - Revert: - 2016-06-04 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70202 - * parser.c (cp_parser_class_head): When xref_basetypes fails and - emits an error do not zero the type. - -2016-06-08 Paolo Carlini <paolo.carlini@oracle.com> - - * decl.c (maybe_deduce_size_from_array_init): Use - DECL_SOURCE_LOCATION in error_at. - (layout_var_decl): Likewise. - (check_array_initializer): Likewise. - (check_initializer): Likewise. - (duplicate_decls, check_elaborated_type_specifier): Tidy. - -2016-06-08 Martin Sebor <msebor@redhat.com> - Jakub Jelinek <jakub@redhat.com> - - PR c++/70507 - PR c/68120 - * constexpr.c: Include gimple-fold.h. - (cxx_eval_internal_function): New function. - (cxx_eval_call_expression): Call it. - (potential_constant_expression_1): Handle integer arithmetic - overflow built-ins. - * tree.c (builtin_valid_in_constant_expr_p): Handle - BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P. - -2016-06-08 Paolo Carlini <paolo.carlini@oracle.com> - - * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the - return value of tsubst_aggr_type for error_mark_node. - -2016-06-08 Jakub Jelinek <jakub@redhat.com> - - PR c++/71442 - * pt.c (tsubst_copy): Only set TREE_USED on DECLs. - -2016-06-06 Jakub Jelinek <jakub@redhat.com> - Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70847 - PR c++/71330 - PR c++/71393 - * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL - right after cp_fold call if cp_fold has returned the same stmt - already in some earlier cp_fold_r call. - (cp_fold_function): Add pset automatic variable, pass its address - to cp_walk_tree. - -2016-06-04 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70202 - * parser.c (cp_parser_class_head): When xref_basetypes fails and - emits an error do not zero the type. - -2016-06-03 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/27100 - * decl.c (duplicate_decls): Properly copy the - DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and - DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL. - -2016-06-03 Chung-Lin Tang <cltang@codesourcery.com> - - * semantics.c (finish_omp_clauses): Mark OpenACC reduction - arguments as addressable when async clause exists. - -2016-06-02 Jan Hubicka <jh@suse.cz> - - * cp-gimplify.c (genericize_continue_stmt): Force addition of - predict stmt. - -2016-06-02 Paolo Carlini <paolo.carlini@oracle.com> - - * decl.c (xref_tag_1): Change pairs of errors to error + inform. - (start_enum): Likewise. - * parser.c (cp_parser_class_head): Likewise. - -2016-06-02 Jakub Jelinek <jakub@redhat.com> - - PR c++/71372 - * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression - is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS - and TREE_THIS_VOLATILE flags. For ARRAY_REF and ARRAY_RANGE_REF, copy - over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags - to the newly built tree. - -2016-05-31 Jason Merrill <jason@redhat.com> - - * pt.c (instantiate_decl): Avoid recalculation. - - PR c++/60095 - PR c++/69515 - PR c++/69009 - * pt.c (instantiate_template_1): Don't put the partial - specialization in DECL_TI_TEMPLATE. - (partial_specialization_p, impartial_args): Remove. - (regenerate_decl_from_template): Add args parm. - (instantiate_decl): Look up the partial specialization again. - - PR c++/71227 - * pt.c (check_explicit_specialization): Give better diagnostic about - specializing a hidden friend. - -2016-05-31 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/71248 - * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION - to obtain correct locations; avoid redundant diagnostics on - out-of-class definitions. - -2016-05-30 Martin Sebor <msebor@redhat.com> - - PR c++/71306 - * init.c (warn_placement_new_too_small): Handle placement new arguments - that are elements of arrays more carefully. Remove a pointless loop. - -2016-05-30 Jakub Jelinek <jakub@redhat.com> - - PR c++/71349 - * parser.c (cp_parser_omp_for): Don't disallow nowait clause - when combined with target construct. - (cp_parser_omp_parallel): Pass cclauses == NULL as last argument - to cp_parser_omp_all_clauses. - -2016-05-30 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/71238 - * lex.c (unqualified_name_lookup_error): Take a location too. - (unqualified_fn_lookup_error): Take a cp_expr. - * cp-tree.h (unqualified_name_lookup_error, - unqualified_fn_lookup_error): Adjust declarations. - * semantics.c (perform_koenig_lookup): Adjust - unqualified_fn_lookup_error call, pass the location of - the identifier too as part of a cp_expr. - -2016-05-30 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/71099 - * parser.c (cp_parser_function_specifier_opt): Use current_class_type - to improve the diagnostic about wrong uses of 'virtual'. - -2016-05-29 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/71105 - * lambda.c (maybe_add_lambda_conv_op): Early return also when - LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE. - -2016-05-28 Ville Voutilainen <ville.voutilainen@gmail.com> - - Revert: - PR c++/69855 - * name-lookup.c (pushdecl_maybe_friend_1): Push local function - decls into the global scope after stripping template bits - and setting DECL_ANTICIPATED. - -2016-05-27 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/60385 - * name-lookup.c (push_namespace): Return bool, false when pushdecl - fails. - * name-lookup.h (push_namespace): Adjust declaration. - * parser.c (cp_parser_namespace_definition): Check push_namespace - return value. - -2016-05-27 Ville Voutilainen <ville.voutilainen@gmail.com> - - PR c++/69855 - * name-lookup.c (pushdecl_maybe_friend_1): Push local function - decls into the global scope after stripping template bits - and setting DECL_ANTICIPATED. - -2016-05-26 Jakub Jelinek <jakub@redhat.com> - - * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn - if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive. - -2016-05-26 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70822 - PR c++/70106 - * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to - SCOPE_REFs too. - * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set - on the qualified_id then propagate it to the resulting - expression. - (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs - too. - * semantics.c (force_paren_expr): If given a SCOPE_REF, just set - its REF_PARENTHESIZED_P flag. - -2016-05-25 Jason Merrill <jason@redhat.com> - - PR c++/71173 - PR c++/70522 - * cp-tree.h (enum tag_types): Add scope_type. - * parser.c (cp_parser_class_name): Use scope_type. - (prefer_type_arg): Handle scope_type. - (cp_parser_lookup_name): Use prefer_type_arg. - * name-lookup.c (lookup_qualified_name): Change bool is_type_p to - int prefer_type, use lookup_flags. - * name-lookup.h: Adjust. - -2016-05-24 Cesar Philippidis <cesar@codesourcery.com> - - * parser.c (cp_parser_oacc_declare): Add support for - GOMP_MAP_FIRSTPRIVATE_POINTER. - * semantics.c (handle_omp_array_sections_1): Replace bool is_omp - argument with enum c_omp_region_type ort. Don't privatize OpenACC - non-static members. - (handle_omp_array_sections): Replace bool is_omp argument with enum - c_omp_region_type ort. Update call to handle_omp_array_sections_1. - (finish_omp_clauses): Add specific errors and warning messages for - OpenACC. Use firsrtprivate pointers for OpenACC subarrays. Update - call to handle_omp_array_sections. - -2016-05-24 Jason Merrill <jason@redhat.com> - - PR c++/70584 - * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold - returns a decl. - (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue. - -2016-05-24 Martin Sebor <msebor@redhat.com> - - PR c++/71147 - * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p. - * pt.c (instantiate_class_template_1): Try to complete the element - type of a flexible array member. - (can_complete_type_without_circularity): Handle arrays of unknown bound. - * typeck.c (complete_type): Also complete the type of the elements of - arrays with an unspecified bound. - -2016-05-24 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/69872 - * typeck2.c (check_narrowing): Check pedwarn return value. - -2016-05-24 Jakub Jelinek <jakub@redhat.com> - - PR c++/71257 - * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>: - For OMP_CLAUSE_LINEAR_REF don't require type to be - integral or pointer. - -2016-05-24 Richard Biener <rguenther@suse.de> - - PR middle-end/70434 - PR c/69504 - * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR. - * constexpr.c (cxx_eval_array_reference): Handle indexed - vectors. - * typeck.c (cp_build_array_ref): Adjust. - -2016-05-23 Jason Merrill <jason@redhat.com> - - PR c++/70344 - * constexpr.c (cxx_eval_call_expression): Check for - fun == current_function_decl again. - - PR c++/70584 - * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call - maybe_undo_parenthesized_ref. - - PR c++/70735 - * pt.c (tsubst_copy): Just return a local variable from - non-template context. Don't call rest_of_decl_compilation for - duplicated static locals. - (tsubst_decl): Set DECL_CONTEXT of local static from another - function. - -2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70972 - * method.c (forward_parm): Use cp_build_reference_type. - -2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/69095 - * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs. - -2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> - - * pt.c (check_for_bare_parameter_packs): Improve error message - location for expressions. - -2016-05-20 Nathan Sidwell <nathan@acm.org> - - * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if - ... goto. - (cxx_eval_call_expression): Fix comment grammar. - -2016-05-20 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70572 - * decl.c (cp_finish_decl): Check do_auto_deduction return value - and return immediately in case of erroneous code. - -2016-05-19 Marek Polacek <polacek@redhat.com> - - PR c++/71075 - * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD. - -2016-05-19 Jason Merrill <jason@redhat.com> - - PR c++/10200 - * pt.c (fn_type_unification): Add outer template args if needed. - (type_unification_real): Handle getting full args. - -2016-05-19 David Malcolm <dmalcolm@redhat.com> - - PR c++/71184 - * parser.c (cp_parser_operator): For array new/delete, check that - cp_parser_require returned a non-NULL token before dereferencing - it. - -2016-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de> - - * decl.c (finish_enum_value_list): Use the specified mode. - -2016-05-18 Jason Merrill <jason@redhat.com> - - * pt.c (value_dependent_expression_p): Tweak new cases to better - match the wording in the standard. - -2016-05-18 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/69793 - * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token - when the previous cp_lexer_peek_token returns CPP_EOF. - -2016-05-18 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70466 - * call.c (convert_like_real): Check that we are actually converting - from an init list. - -2016-05-16 Matthew Wahab <matthew.wahab@arm.com> - - * decl.c (grokdeclarator): Remove errmsg and use of - targetm.invalid_return_type. - (grokparms): Remove errmsg and use of - targetm.invalid_parameter_type. - -2016-05-13 Jason Merrill <jason@redhat.com> - - PR c++/10200 - PR c++/69753 - * pt.c (tsubst_decl): Use uses_template_parms. - (instantiate_template_1): Handle non-dependent calls in templates. - (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL. - (type_dependent_expression_p): Only consider innermost template args. - (dependent_template_arg_p): Check enclosing class of a template here. - (dependent_template_p): Not here. - (type_dependent_object_expression_p): New. - * typeck.c (finish_class_member_access_expr): Use it. - * parser.c (cp_parser_postfix_expression): Use it. - (cp_parser_postfix_dot_deref_expression): Use it. Use comptypes - to detect the current instantiation. - (cp_parser_lookup_name): Really implement DR 141. - * search.c (lookup_field_r): Prefer a dependent using-declaration. - (any_dependent_bases_p): Split out from... - * name-lookup.c (do_class_using_decl): ...here. - * call.c (build_new_method_call_1): Use it. - * semantics.c (finish_call_expr): 'this' doesn't make a call dependent. - * tree.c (non_static_member_function_p): Remove. - * typeck2.c (build_x_arrow): Use dependent_scope_p. - - * parser.c (cp_parser_postfix_dot_deref_expression): Use - complete_type_or_else for unknown_type_node, too. - -2016-05-12 Marek Polacek <polacek@redhat.com> - - PR c/70756 - * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr. - * cp-tree.h (cp_build_modify_expr): Update declaration. - (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline - overloads. - * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to - cp_build_modify_expr. - * decl2.c (set_guard): Likewise. - (handle_tls_init): Likewise. - * init.c (perform_member_init): Likewise. - (expand_virtual_init): Likewise. - (build_new_1): Likewise. - (build_vec_delete_1): Likewise. - (get_temp_regvar): Likewise. - (build_vec_init): Likewise. - * method.c (do_build_copy_assign): Likewise. - (assignable_expr): Likewise. - * semantics.c (finish_omp_for): Likewise. - * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and - cp_pointer_int_sum. - (cp_pointer_int_sum): Add location parameter. Pass it down to - pointer_int_sum. - (pointer_diff): Add location parameter. Use it. - (build_modify_expr): Pass location down to cp_build_modify_expr. - (cp_build_modify_expr): Add location parameter. Use it. - (build_x_modify_expr): Pass location down to cp_build_modify_expr. - * typeck2.c (cxx_incomplete_type_diagnostic, - cxx_incomplete_type_error): Add location parameter. - -2016-05-11 Marek Polacek <polacek@redhat.com> - - PR c++/71024 - * decl.c (duplicate_decls): Call diagnose_mismatched_decls. - -2016-05-05 Jakub Jelinek <jakub@redhat.com> - - * parser.c (cp_parser_selection_statement): For RID_SWITCH, - pass if_p instead of NULL to cp_parser_implicitly_scoped_statement. - -2016-05-04 Marek Polacek <polacek@redhat.com> - - * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses - with OPT_Wdangling_else. - -2016-05-03 Martin Sebor <msebor@redhat.com> - - PR c++/66561 - * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE, - BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions. - -2016-05-03 Marek Polacek <polacek@redhat.com> - - PR c/70859 - * call.c (build_cxx_call): Pass location and vNULL down to - check_builtin_function_arguments. - -2016-05-03 Richard Biener <rguenther@suse.de> - - * Make-lang.in (cc1plus-checksum.c): For stage-final re-use - the checksum from the previous stage. - -2016-05-02 David Malcolm <dmalcolm@redhat.com> - - PR c++/62314 - * typeck.c (finish_class_member_access_expr): When - giving a hint about a possibly-misspelled member name, - add a fix-it replacement hint. - -2016-05-02 Cesar Philippidis <cesar@codesourcery.com> - - * cp-tree.h (finish_omp_clauses): Update prototype. - * parser.c (cp_parser_oacc_all_clauses): Update call to - finish_omp_clauses. - (cp_parser_omp_all_clauses): Likewise. - (cp_parser_omp_for_loop): Likewise. - (cp_omp_split_clauses): Likewise. - (cp_parser_oacc_cache): Likewise. - (cp_parser_oacc_loop): Likewise. - (cp_parser_omp_declare_target): - (cp_parser_cilk_simd_all_clauses): Likewise. - (cp_parser_cilk_for): Likewise. - * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd - arguments with enum c_omp_region_type ort. - (tsubst_omp_clauses): Update calls to finish_omp_clauses. - (tsubst_omp_attribute): Update calls to tsubst_omp_clauses. - (tsubst_omp_for_iterator): Update calls to finish_omp_clauses. - (tsubst_expr): Update calls to tsubst_omp_clauses. - * semantics.c (finish_omp_clauses): Replace bool arguments - allow_fields, declare_simd, and is_cilk with bitmask ort. - (finish_omp_for): Update call to finish_omp_clauses. - -2016-05-02 David Malcolm <dmalcolm@redhat.com> - - PR c++/62314 - * parser.c (cp_parser_class_head): Capture the start location; - use it to emit a fix-it insertion hint when complaining - about missing "template <> " in explicit specializations. - -2016-05-02 Richard Sandiford <richard.sandiford@arm.com> - - * init.c (build_new_1): Use shift operators instead of wi:: shifts. - -2016-05-02 Richard Biener <rguenther@suse.de> - - * decl.c (grokdeclarator): Properly insert a DECL_EXPR for - anonymous VLAs. - -2016-04-29 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/66644 - * class.c (check_field_decl): Remove final int* parameter, change - the return type to bool; fix logic in order not to reject multiple - initialized fields in anonymous struct. - (check_field_decls): Adjust call. - -2016-04-29 Cesar Philippidis <cesar@codesourcery.com> - - PR middle-end/70626 - * parser.c (cp_parser_oacc_loop): Don't augment mask with - OACC_LOOP_CLAUSE_MASK. - (cp_parser_oacc_kernels_parallel): Update call to - c_oacc_split_loop_clauses. - -2016-04-28 Jason Merrill <jason@redhat.com> - - Implement C++17 [[nodiscard]] attribute. - PR c++/38172 - PR c++/54379 - * parser.c (cp_parser_std_attribute): Handle [[nodiscard]]. - * tree.c (handle_nodiscard_attribute): New. - (cxx_attribute_table): Add [[nodiscard]]. - * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New. - (maybe_warn_nodiscard): New. - (convert_to_void): Call it. - - * cvt.c (cp_get_callee): New. - * constexpr.c (get_function_named_in_call): Use it. - * cxx-pretty-print.c (postfix_expression): Use it. - * except.c (check_noexcept_r): Use it. - * method.c (check_nontriv): Use it. - * tree.c (build_aggr_init_expr): Use it. - * cp-tree.h: Declare it. - -2015-04-27 Ryan Burn <contact@rnburn.com> - Jeff Law <law@redhat.com> - - PR c++/69024 - PR c++/68997 - * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap - instead of cilk_detect_spawn_and_unwrap. - * cp-cilkplus.c (is_conversion_operator_function_decl_p): New. - (find_spawn): New. - (cilk_cp_detect_spawn_and_unwrap): New. - * lambda.c: Include cp-cilkplus.h. - * parser.c: Include cp-cilkplus.h. - * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into... - * cp-cilkpus.h: New file. - -2016-04-27 Nathan Sidwell <nathan@acm.org> - - * constexpr.c (get_fundef_copy): Use the original function for - non-recursive evaluations. - (save_fundef_copy): Always expect a slot to be available. - -2016-04-27 Bernd Schmidt <bschmidt@redhat.com> - - * parser.c (cp_parser_postfix_expression): Call - warn_for_memset instead of warning directly here. - -2016-04-26 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70241 - * decl.c (build_enumerator): Set current_access_specifier when - declaring an enumerator belonging to an in-class enumeration. - * parser.c (cp_parser_check_access_in_redecleration): Also - consider in-class enumerations. - -2016-04-26 Marek Polacek <polacek@redhat.com> - - PR c++/70744 - * call.c (build_conditional_expr_1): Call cp_stabilize_reference - instead of stabilize_reference. - (build_over_call): Likewise. - * cp-tree.h (cp_stabilize_reference): Declare. - * tree.c (cp_stabilize_reference): New function. - * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of - stabilize_reference. - (unary_complex_lvalue): Likewise. - (cp_build_modify_expr): Likewise. - -2016-04-26 Jakub Jelinek <jakub@redhat.com> - - PR bootstrap/70704 - * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of - just flag_checking. - -2016-04-25 Jason Merrill <jason@redhat.com> - - * tree.c (std_attribute_table): New. - (init_tree): Register it. - -2016-04-22 Jason Merrill <jason@redhat.com> - - * parser.c (cp_parser_perform_range_for_lookup): Decay the array. - -2016-04-21 Patrick Palka <ppalka@gcc.gnu.org> - - * name-lookup.c (free_saved_scope): New free list of saved_scope - structures. - (push_to_top_level): Attempt to reuse a saved_scope struct - from free_saved_scope instead of allocating a new one each time. - (pop_from_top_level_1): Chain the now-unused saved_scope structure - onto free_saved_scope. - -2016-04-21 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70540 - * semantics.c (process_outer_var_ref): Unconditionally return - error_mark_node when mark_used returns false. - -2016-04-21 Marek Polacek <polacek@redhat.com> - - PR c++/70513 - * parser.c (cp_parser_enum_specifier): Check and possibly error for - extra qualification. - -2016-04-20 Nathan Sidwell <nathan@acm.org> - - PR c++/55635 - * init.c (build_vec_delete_1): Protect operator delete call in try - finally. - (build_delete): Likewise. - * optimize.c (build_delete_destructor_body): Likewise. - -2016-04-20 Ilya Verbin <ilya.verbin@intel.com> - - PR c++/69363 - * cp-tree.h (finish_omp_clauses): Add new default argument. - * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses - instead of c_finish_cilk_clauses. - * semantics.c (finish_omp_clauses): Add new argument. Allow - floating-point variables in the linear clause for Cilk Plus. - -2016-04-20 Nathan Sidwell <nathan@acm.org> - - * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a - TARGET_EXPR. - -2016-04-19 Jason Merrill <jason@redhat.com> - - PR c++/66543 - * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR. - * pt.c (make_pack_expansion): Call mark_exp_read. - * semantics.c (finish_id_expression): Call mark_type_use in - unevaluated context. - - DR 2137 - * call.c (implicit_conversion): If we choose a copy constructor - for list-initialization from the same type, the conversion is an - exact match. - - * constexpr.c (breaks): Handle EXIT_EXPR. - (cxx_eval_loop_expr): Handle COMPOUND_EXPR body. - (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling - of COMPOUND_EXPR. - - PR c++/68206 - PR c++/68530 - * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR - and GOTO_EXPR. - - * pt.c (tsubst_expr): Remove shadowing declaration. - (tsubst_pack_expansion): Add assert. - - * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION. - - PR c++/70522 - * name-lookup.c (qualified_lookup_using_namespace): Look through - hidden names. - -2016-04-18 Michael Matz <matz@suse.de> - - * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN. - (layout_class_type): Ditto. - (build_base_field): Use SET_DECL_ALIGN. - (fixup_attribute_variants): Use SET_TYPE_ALIGN. - * decl.c (duplicate_decls): Use SET_DECL_ALIGN. - (record_unknown_type): Use SET_TYPE_ALIGN. - (cxx_init_decl_processing): Ditto. - (copy_type_enum): Ditto. - (grokfndecl): Use SET_DECL_ALIGN. - (copy_type_enum): Use SET_TYPE_ALIGN. - * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN. - (tsubst): Ditto. - * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN. - * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN. - * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN. - * rtti.c (emit_tinfo_decl): Ditto. - -2016-04-18 Jason Merrill <jason@redhat.com> - - PR c++/70690 - PR c++/70528 - * class.c (type_maybe_constexpr_default_constructor): New. - (type_has_constexpr_default_constructor): Revert. - -2016-04-16 Sandra Loosemore <sandra@codesourcery.com> - - PR target/1078 - - * tree.c (cxx_attribute_table): Remove "com_interface" entry. - (handle_com_interface_attribute): Delete. - -2016-04-15 Jason Merrill <jason@redhat.com> - - PR c++/70685 - * constexpr.c (get_fundef_copy): Handle null *slot. - - PR c++/70505 - * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR - unknown_type_node, too. - -2016-04-15 Jason Merrill <jason@redhat.com> - Nathan Sidwell <nathan@acm.org> - - PR c++/70594 - * constexpr.c (constexpr_call_table): Preserve in GC. - (struct fundef_copy, struct fundef_copies_table_t): Delete. - (fundef_copies_table): Preserve in GC. Change to pointer to - tree->tree hash. - (maybe_initialize_fundef_copies_table): Adjust. - (get_fundef_copy): Return a TREE_LIST. Use non-inserting search. - (save_fundef_copy): Adjust for a TREE_LIST. - (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST. - (fini_constexpr): New. - * cp-tree.h (fini_constexpr): Declare. - * decl2.c (c_parse_final_cleanups): Call fini_constexpr. - -2016-04-15 Jakub Jelinek <jakub@redhat.com> - - PR c/70436 - * parser.c (cp_parser_pragma): Add IF_P argument, pass it down - where needed. - (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt, - cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd, - cp_parser_oacc_routine): Adjust cp_parser_pragma callers. - (cp_parser_statement): Likewise. Adjust cp_parser_cilk_for caller. - (cp_parser_omp_structured_block): Add IF_P argument, pass it down to - cp_parser_statement. - (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop, - cp_parser_oacc_kernels_parallel, cp_parser_omp_critical, - cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master, - cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single, - cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute, - cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target, - cp_parser_omp_taskloop, cp_parser_omp_construct, - cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for): - Add IF_P argument, pass it down where needed. - (cp_parser_omp_for_loop): Likewise. Clear IF_P if nbraces. - (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block - calls. - -2016-04-14 Jason Merrill <jason@redhat.com> - - PR c++/70494 - * decl.c (cxx_maybe_build_cleanup): Handle non-decls. - * typeck2.c (split_nonconstant_init_1): Use it. - - PR c++/70528 - * class.c (type_has_constexpr_default_constructor): Return true - for an implicitly declared constructor. - - PR c++/70622 - * parser.c (cp_parser_init_declarator): Add auto_result parm. - (cp_parser_simple_declaration): Pass it. - (strip_declarator_types): New. - - PR c++/70543 - * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent - initializer also makes the variable value-dependent. - - PR c++/70648 - * constexpr.c (cxx_eval_store_expression): Also copy - CONSTRUCTOR_NO_IMPLICIT_ZERO. - -2016-04-14 Martin Sebor <msebor@redhat.com> - - PR c++/69517 - PR c++/70019 - PR c++/70588 - * cp-tree.h, decl.c, init.c, typeck2.c: Revert. - -2016-04-14 Jason Merrill <jason@redhat.com> - - * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty - parameter ABI change. - -2016-04-13 Martin Sebor <msebor@redhat.com> - - PR c++/69517 - PR c++/70019 - PR c++/70588 - * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new - functions. - * decl.c (check_initializer, cp_finish_decl): Call them. - (reshape_init_r): Reject incompletely braced intializer-lists - for VLAs. - * init.c (throw_bad_array_length, build_vla_check) - (build_vla_size_check, build_vla_init_check): Define new functions. - * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p() - to detect a VLA. - (store_init_value): Same. - -2016-04-13 Jason Merrill <jason@redhat.com> - - Warn about empty parameter ABI with -Wabi=9. - * call.c (empty_class_msg, mark_for_abi_warning) - (warn_empty_class_abi): New. - (build_call_a): Use them. - * decl.c (store_parm_decls): Use mark_for_abi_warning. - * error.c (pp_format_to_string): New. - - Pass empty class parameters like C. - * call.c (pass_as_empty_struct, empty_class_arg): New. - (type_passed_as, build_x_va_arg): Use pass_as_empty_struct. - (build_call_a): Use empty_class_arg. - * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New. - * decl.c (cxx_init_decl_processing): Create empty_struct_type. - -2016-04-13 Jason Merrill <jason@redhat.com> - - PR c++/70627 - * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE. - -2016-04-13 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/70635 - * pt.c (resolve_typename_type): Fix typos in infinite recursion - avoidance mechanism. - -2016-04-13 Jason Merrill <jason@redhat.com> - - PR c++/70634 - * pt.c (instantiation_dependent_uneval_expression_p): Split out - from instantiation_dependent_expression_p. - (value_dependent_expression_p): Use it for unevaluated operands. - (instantiation_dependent_r): Don't check value-dependence. - (instantiation_dependent_expression_p): Check - value-dependence of the expression as a whole. - * cp-tree.h: Declare instantiation_dependent_uneval_expression_p. - * semantics.c (finish_decltype_type): Use it. - - * constexpr.c (potential_nondependent_constant_expression): New. - (potential_nondependent_static_init_expression): New. - (maybe_constant_value_1, fold_non_dependent_expr) - (maybe_constant_init): Use them. - * pt.c (instantiate_non_dependent_expr_sfinae) - (instantiate_non_dependent_or_null, convert_nontype_argument): Use - them. - * cp-tree.h: Declare them. - -2016-04-13 Jakub Jelinek <jakub@redhat.com> - - PR c++/70594 - * decl.c (pop_labels_1): Removed. - (note_label, sort_labels): New functions. - (pop_labels): During named_labels traversal, just push the slot - pointers into a vector, then qsort it by DECL_UID and only then - call pop_label and chain it into BLOCK_VARS. - -2016-04-13 Jason Merrill <jason@redhat.com> - - PR c++/70615 - * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here. - (cp_gimplify_expr): Not here. - -2016-04-12 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70610 - * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally - recurse into it. - * typeck.c (build_x_conditional_expr): Unconditionally remember - that the result is an lvalue or xvalue. - -2016-04-12 Jason Merrill <jason@redhat.com> - - * class.c (is_really_empty_class): A zero-length array is empty. - An unnamed bit-field doesn't make a class non-empty. - -2016-04-12 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/68722 - * parser.c (cp_parser_cache_defarg): When file ends in default - argument simply return error_mark_node. - -2016-04-12 Nathan Sidwell <nathan@acm.org> - - PR c++/70501 - * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE - similarly to PMF. - -2016-04-11 Jason Merrill <jason@redhat.com> - - * mangle.c (decl_is_template_id): The template itself counts as a - template-id. - -2016-04-08 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70590 - PR c++/70452 - * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr - on the result if it's not a CONSTRUCTOR. - -2016-04-07 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70452 - * constexpr.c (find_constructor): New function. - (unshare_constructor): New function. - (cxx_eval_call_expression): Use unshare_constructor instead of - unshare_expr. - (find_array_ctor_elt): Likewise. - (cxx_eval_vec_init_1): Likewise. - (cxx_eval_store_expression): Likewise. - (cxx_eval_constant_expression): Likewise. - -2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> - - PR c/70436 - * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid - potentially generating a future -Wparentheses warning in its - callers. - -2016-04-06 Jason Merrill <jason@redhat.com> - - * class.c (check_abi_tags): Fix function template handling. - -2016-04-05 Nathan Sidwell <nathan@acm.org> - - PR c++/70512 - * class.c (fixup_may_alias): New. - (fixup_attribute_variants): Call it. - -2016-04-05 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70452 - * constexpr.c (struct fundef_copy): New struct. - (struct fundef_copies_table_t): New struct. - (fundef_copies_table): New static variable. - (maybe_initialize_fundef_copies_table): New static function. - (get_fundef_copy): New static function. - (save_fundef_copy): New static function. - (cxx_eval_call_expression): Use get_fundef_copy, and - save_fundef_copy. - (constexpr_call_table): Add "deletable" GTY marker. - -2016-04-05 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70452 - * cp-tree.h (class cache_map): Remove. - * constexpr.c (cv_cache): Change type to - GTY((deletable)) hash_map<tree, tree> *. - (maybe_constant_value): Adjust following the change to cv_cache. - (clear_cv_cache): New static function. - (clear_cv_and_fold_caches): Use it. - * cp-gimplify.c (fold_cache): Change type to - GTY((deletable)) hash_map<tree, tree> *. - (clear_fold_cache): Adjust following the change to fold_cache. - (cp_fold): Likewise. - -2016-04-02 Martin Sebor <msebor@redhat.com> - - PR c++/67376 - PR c++/70170 - PR c++/70172 - PR c++/70228 - * constexpr.c (diag_array_subscript): New function. - (cxx_eval_array_reference): Detect out of bounds array indices. - -2016-04-01 Jason Merrill <jason@redhat.com> - - PR c++/70449 - PR c++/70344 - * pt.c (instantiate_decl): A function isn't fully defined if - DECL_INITIAL is error_mark_node. - * constexpr.c (cxx_eval_call_expression): Likewise. - -2016-04-01 Jakub Jelinek <jakub@redhat.com> - Marek Polacek <polacek@redhat.com> - - PR c++/70488 - * init.c (warn_placement_new_too_small): Test whether - DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi. - -2016-04-01 Nathan Sidwell <nathan@acm.org> - - PR c++/68475 - * decl.c (check_redeclaration_exception_specification): Check - regardless of -fno-exceptions. - * typeck2.c (merge_exception_specifiers): Relax assert by checking - flag_exceptions too. - -2016-03-31 Nathan Sidwell <nathan@acm.org> - - * decl.c (start_preparsed_function): Remove unnecessary bracing. - (finish_destructor_body): Don't emit operator delete here. - -2016-03-31 Nathan Sidwell <nathan@acm.org> - - PR c++/70393 - * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR - elements in field order. - -2016-03-31 Marek Polacek <polacek@redhat.com> - - PR c/70297 - * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN. - -2016-03-31 Richard Biener <rguenther@suse.de> - - PR c++/70430 - * typeck.c (cp_build_binary_op): Fix operand order of vector - conditional in truth op handling. - -2016-03-29 Jason Merrill <jason@redhat.com> - - PR c++/70353 - * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics - in constexpr functions. - -2016-03-28 Jason Merrill <jason@redhat.com> - - PR c++/70422 - PR c++/64266 - PR c++/70353 - * decl.c, pt.c, constexpr.c: Revert last patch. - -2016-03-25 Jason Merrill <jason@redhat.com> - Martin Liška <mliska@suse.cz> - - PR c++/64266 - PR c++/70353 - Core issue 1962 - * decl.c (cp_fname_init): Decay the initializer to pointer. - (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P, - DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. - Don't call cp_finish_decl. - * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR, - DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. Don't call cp_finish_decl. - * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]: - Handle DECL_VALUE_EXPR. - -2016-03-24 Jason Merrill <jason@redhat.com> - - PR c++/70386 - * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs. - - PR c++/70323 - * constexpr.c (cxx_eval_call_expression): Don't cache result if - *overflow_p. - -2016-03-24 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/62212 - * tree.c (build_cplus_array_type): Determine type-dependentess - with uses_template_parms instead of with dependent_type_p. - -2016-03-23 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70347 - * typeck.c (process_init_constructor_union): If the initializer - is empty, use the union's NSDMI if it has one. - -2016-03-23 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70332 - * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an - NSDMI that's part of an aggregrate initialization. - -2016-03-23 Jakub Jelinek <jakub@redhat.com> - - PR c++/70001 - * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers - for 1..max even for multi-dimensional arrays. Call unshare_expr - on it. - - PR c++/70323 - * constexpr.c (cxx_eval_constant_expression): Diagnose overflow - on TREE_OVERFLOW constants. - - PR c++/70376 - * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES - for OMP_TASKLOOP here. - (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call - genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY. - -2016-03-23 Alexandre Oliva <aoliva@redhat.com> - Jason Merrill <jason@redhat.com> - Jakub Jelinek <jakub@redhat.com> - - PR c++/69315 - * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove. - * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove. - (finish_function): Don't set or test them. - * decl2.c (mark_used): Don't handle defer_mark_used_calls. - -2016-03-23 Jason Merrill <jason@redhat.com> - - PR c++/70344 - * constexpr.c (cxx_eval_call_expression): Catch invalid recursion. - -2016-03-23 Marek Polacek <polacek@redhat.com> - - PR c++/69884 - * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes. - -2016-03-22 Ilya Enkovich <enkovich.gnu@gmail.com> - - * call.c (build_conditional_expr_1): Always use original - condition type for vector type checks and build. - -2016-03-22 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70096 - * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl. - -2016-03-22 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70204 - * constexpr.c (non_const_var_error): Check - DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. - -2016-03-21 Richard Henderson <rth@redhat.com> - - PR c++/70273 - * decl.c (notice_forced_label_r): New. - (cp_finish_decl): Use it. - -2016-03-21 Jason Merrill <jason@redhat.com> - - PR c++/70285 - * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields. - -2016-03-18 Jason Merrill <jason@redhat.com> - - PR c++/70139 - * constexpr.c (cxx_eval_call_expression): Fix trivial copy. - - PR c++/70147 - * class.c (vptr_via_virtual_p): New. - (most_primary_binfo): Factor out of build_rtti_vtbl_entries. - * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear - a vptr from any virtual base in a not-in-charge 'structor. - - * decl.c (build_clobber_this): Factor out of - start_preparsed_function and begin_destructor_body. Handle - virtual bases better. - - * class.c (build_if_in_charge): Split out from build_base_path. - * init.c (expand_virtual_init, expand_default_init): Use it. - * call.c (build_special_member_call): Use it. - -2016-03-18 Jakub Jelinek <jakub@redhat.com> - - PR c++/70267 - * init.c (build_new_1): Complain and return error_mark_node - if alloc_fn is not _Jv_AllocObject function returning pointer. - -2016-03-18 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70205 - * search.c (adjust_result_of_qualified_name_lookup): Don't - update the BASELINK_BINFO of DECL if the second call - to lookup_base fails. - -2016-03-18 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70218 - * parser.c (cp_parser_lambda_expression): Move call to - pop_deferring_access_checks ahead of the call to - cp_parser_end_tentative_firewall. - -2016-03-17 Jakub Jelinek <jakub@redhat.com> - - PR c++/70144 - * cp-tree.h (magic_varargs_p): Return int instead of bool. - * call.c (magic_varargs_p): Return int instead of bool, return 2 for - Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal - varargs. - (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin, - if magic_varargs_p == 1, call decay_conversion - instead of mark_type_use. Don't store error_mark_node arguments to - argarray, instead return error_mark_node. - - PR c++/70272 - * decl.c (begin_destructor_body): Don't insert clobber if - is_empty_class (current_class_type). - -2016-03-17 Marek Polacek <polacek@redhat.com> - - PR c++/70194 - * typeck.c (warn_for_null_address): New function. - (cp_build_binary_op): Call it. - -2016-03-16 Jason Merrill <jason@redhat.com> - - PR c++/70259 - * decl.c (start_preparsed_function): Don't clobber an empty base. - -2016-03-16 Jakub Jelinek <jakub@redhat.com> - - PR c++/70147 - * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize - BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm. - - PR c++/70147 - * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily - set in_base_initializer. - -2016-03-15 Marek Polacek <polacek@redhat.com> - - PR c++/70209 - * tree.c (strip_typedefs): Call strip_typedefs again on the - DECL_ORIGINAL_TYPE result. - -2016-03-15 Jason Merrill <jason@redhat.com> - - PR c++/70095 - * pt.c (instantiate_decl): Fix call to variable_template_p. - - PR c++/70141 - * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE. - -2016-03-14 Casey Carter <casey@carter.net> - Jason Merrill <jason@redhat.com> - - P0184R0: Generalizing the Range-Based For Loop - * parser.c (cp_convert_range_for): Set the type of __end separately. - (cp_parser_perform_range_for_lookup): Allow different begin/end - types if they are comparable. - -2016-03-12 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/70106 - * semantics.c (force_paren_expr): Just build a PAREN_EXPR when - processing_template_decl and EXPR is a SCOPE_REF. - -2016-03-10 Patrick Palka <ppalka@gcc.gnu.org> - Jakub Jelinek <jakub@redhat.com> - - PR c++/70001 - * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse - return value from cxx_eval_constant_expression from earlier - elements if it is valid constant initializer requiring no - relocations. - -2016-03-10 Marek Polacek <polacek@redhat.com> - - PR c++/70153 - * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR. - -2016-03-09 Cesar Philippidis <cesar@codesourcery.com> - - * parser.c (cp_parser_oacc_loop): Update cclauses and clauses - when calling c_finish_omp_clauses. - -2016-03-08 Jason Merrill <jason@redhat.com> - - * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful - diagnostic for use of "concept". - (cp_parser_requires_clause_opt): And "requires". - (cp_parser_type_parameter, cp_parser_late_return_type_opt) - (cp_parser_explicit_template_declaration): Adjust. - * Make-lang.in (check-c++-all): Add "concepts" to std list. - - P0036R0: Unary Folds and Empty Parameter Packs - * pt.c (expand_empty_fold): Remove special cases for *,+,&,|. - -2016-03-08 Jakub Jelinek <jakub@redhat.com> - - PR c++/70135 - * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs - even after the last iteration of the loop. - - * decl.c (duplicate_decls): Fix spelling - becuase -> because. - -2016-03-07 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/66786 - * pt.c (get_template_info): Handle PARM_DECL. - (template_class_depth): Check DECL_P instead of - VAR_OR_FUNCTION_DECL_P. - -2016-03-05 Jason Merrill <jason@redhat.com> - - PR c++/67364 - * constexpr.c (cxx_eval_store_expression): Replace - CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too. - -2016-03-05 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/66786 - * pt.c (template_class_depth): Given a lambda type, iterate - into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its - TYPE_CONTEXT. Given a VAR_DECL, iterate into its - CP_DECL_CONTEXT. - -2016-03-04 Jason Merrill <jason@redhat.com> - - PR c++/69203 - * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New. - * init.c (build_vec_delete_1): Set it. - * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it. - -2016-03-04 Jakub Jelinek <jakub@redhat.com> - - * decl.c (start_preparsed_function): Don't emit start clobber at the - start of constructor clones. - - PR c++/70035 - * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype. - * decl.c (start_preparsed_function): Call - cp_ubsan_maybe_initialize_vtbl_ptrs if needed. - * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs, - cp_ubsan_maybe_initialize_vtbl_ptrs): New functions. - -2016-03-04 Jason Merrill <jason@redhat.com> - - PR c++/67364 - * constexpr.c (cxx_eval_component_reference): Further tweak. - - * constexpr.c (struct constexpr_ctx): Add save_exprs field. - (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping. - (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set. - (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize. - - PR c++/70067 - * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the - same type. - -2016-03-03 Jason Merrill <jason@redhat.com> - - * method.c (synthesized_method_walk): operator= can also be constexpr. - - * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get - LAMBDA_EXPR_RETURN_TYPE from the instantiated closure. - - PR c++/67164 - * pt.c (copy_template_args): New. - (tsubst_pack_expansion): Use it. - - * call.c (build_aggr_conv): Use get_nsdmi. - - PR c++/51406 - * typeck.c (build_static_cast_1): Avoid folding back to lvalue. - - PR c++/67364 - * constexpr.c (cxx_eval_component_reference): Just return an empty - CONSTRUCTOR for an empty class. - -2016-03-01 Jason Merrill <jason@redhat.com> - - PR c++/70036 - * parser.c (cp_parser_requires_clause): Call - check_for_bare_parameter_packs. - - PR c++/51489 - * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT - the operands. - - PR c++/69995 - * constexpr.c (cxx_eval_call_expression): Unshare arg. - (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init. - [TARGET_EXPR]: Unshare init. - -2016-03-01 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/68948 - PR c++/69961 - * pt.c (tsubst_baselink): Reinstate the check for an invalid - constructor call. - -2016-02-28 Jason Merrill <jason@redhat.com> - - PR c++/69995 - * constexpr.c (cxx_eval_store_expression): Unshare init. - -2016-02-26 Jason Merrill <jason@redhat.com> - - PR c++/69958 - * pt.c (make_argument_pack): New. - (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion. - (tsubst_copy_and_build): Likewise. - -2016-02-25 Jason Merrill <jason@redhat.com> - - PR c++/69889 - * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New. - * tree.c (build_aggr_init_expr): Set it. - * semantics.c (simplify_aggr_init_expr): Check it. - * cp-gimplify.c (cp_genericize_r): Don't walk into - a call/aggr_init from a thunk. - - PR c++/69842 - * method.c (forward_parm): Handle parameter packs. - * lambda.c (maybe_add_lambda_conv_op): Use it for them. - - PR c++/67364 - * constexpr.c (cxx_eval_component_reference): Don't complain about - unevaluated empty classes. - - PR c++/68049 - * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE. - -2016-02-25 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/69736 - * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation. - (maybe_undo_parenthesized_ref): Declare. - * semantics.c (maybe_undo_parenthesized_ref): Split out from - check_return_expr. - (finish_call_expr): Use it. - * typeck.c (check_return_expr): Use it. - * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the - REF_PARENTHESIZED_P flag. - -2016-02-24 Jakub Jelinek <jakub@redhat.com> - - PR c++/69922 - * class.c (build_base_path): Set TREE_NO_WARNING on the null_test. - Avoid folding it. - * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL - tests. - * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL, - unless they are folded into INTEGER_CST, error_mark_node or some - comparison with NULL, avoid folding them and use either the original - comparison or non-folded comparison of folded arguments. - * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the - comparison, don't fold the comparison right away. - -2016-02-24 Jason Merrill <jason@redhat.com> - - PR c++/69323 - * friend.c (make_friend_class): Likewise. - * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend. - -2016-02-24 Jason Merrill <jason@redhat.com> - - PR c++/69323 - * pt.c (instantiate_class_template_1): Set - processing_template_decl before substituting friend_type. - -016-02-24 Martin Sebor <msebor@redhat.com> - - PR c++/69912 - * tree.c (build_ctor_subob_ref): Compare types' main variants - instead of the types as they are. - -2016-02-24 Jason Merrill <jason@redhat.com> - - * decl.c (start_preparsed_function): Condition ctor clobber on - flag_lifetime_dse > 1. - - * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline. - -2016-02-19 Jason Merrill <jason@redhat.com> - - PR c++/69743 - * call.c (remaining_arguments): No longer static. - * cp-tree.h: Declare it. - * pt.c (more_specialized_fn): Use it. - -2016-02-19 Jakub Jelinek <jakub@redhat.com> - Bernd Edlinger <bernd.edlinger@hotmail.de> - - * Make-lang.in: Invoke gperf with -L C++. - * cfns.gperf: Remove prototypes for hash and libc_name_p - inlines. - * cfns.h: Regenerated. - * except.c (nothrow_libfn_p): Adjust. - -2016-02-19 Jakub Jelinek <jakub@redhat.com> - - PR c++/69850 - * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use - NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR. - -2016-02-19 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/68948 - * pt.c (tsubst_baselink): Don't diagnose an invalid constructor - call here. - * semantics.c (finish_call_expr): Don't assume a constructor - call is dependent if only the "this" pointer is dependent. When - building a constructor call, always use a dummy object. - -2016-02-19 Jakub Jelinek <jakub@redhat.com> - - PR c++/69850 - * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR - condition. - * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary - operators if folding preserved the binop, just with different - arguments. - - PR c++/67767 - * parser.c (cp_parser_std_attribute_spec_seq): Don't assume - attr_spec is always single element chain, chain all the attributes - properly together in the right order. - -2016-02-18 Jason Merrill <jason@redhat.com> - - * mangle.c (maybe_check_abi_tags): Add for_decl parm. Call - mangle_decl. - (mangle_decl): Call maybe_check_abi_tags for function scope. - (mangle_guard_variable): Call maybe_check_abi_tags here. - (write_guarded_var_name): Not here. - -2016-02-17 Jason Merrill <jason@redhat.com> - - PR c++/65985 - * constexpr.c (build_constexpr_constructor_member_initializers): - Handle an additional STATEMENT_LIST. - - PR c++/68585 - * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection. - - PR c++/68679 - * decl2.c (reset_type_linkage_2): Look through member templates. - -2016-02-17 Jakub Jelinek <jakub@redhat.com> - - PR c++/69850 - * init.c (build_delete): Set TREE_NO_WARNING on ifexp. - -2016-02-17 Jason Merrill <jason@redhat.com> - - PR c++/69842 - * method.c (forward_parm): Split out from... - (add_one_base_init): ...here. - * lambda.c (maybe_add_lambda_conv_op): Use it. - -2016-02-16 Jason Merrill <jason@redhat.com> - - PR c++/10200 - PR c++/69753 - * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c, - tree.c, typeck2.c: Revert earlier changes. - * parser.c (cp_parser_lookup_name): Ignore namespace-scope - non-type templates after -> or . - -2016-02-16 Jakub Jelinek <jakub@redhat.com> - - PR c/69835 - * typeck.c (cp_build_binary_op): Revert 2015-09-09 change. - -2016-02-16 Jason Merrill <jason@redhat.com> - - PR c++/69657 - * name-lookup.c (lookup_qualified_name): Add find_hidden parm. - (set_decl_namespace): Pass it. Complain about finding a hidden friend. - * name-lookup.h: Adjust. - -2016-02-16 James Norris <jnorris@codesourcery.com> - - * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking. - * semantics.c (finish_omp_clauses): Add deviceptr checking. - -2016-02-15 Jakub Jelinek <jakub@redhat.com> - - PR c++/69658 - * init.c (expand_default_init): Only call reshape_init - in the direct-initialization from an initializer list case. - -2016-02-15 Jason Merrill <jason@redhat.com> - - PR c++/69753 - * semantics.c (finish_call_expr): Implicit 'this' does not make - the call dependent. - * search.c (any_dependent_bases_p): Split out... - * name-lookup.c (do_class_using_decl): ...from here. - * call.c (build_new_method_call_1): Don't complain about missing object - if there are dependent bases. Tweak error. - * tree.c (non_static_member_function_p): Remove. - * pt.c (type_dependent_expression_p): A member template of a - dependent type is dependent. - * cp-tree.h: Adjust. - - PR c++/68890 - * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check. - -2016-02-12 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/69098 - * pt.c (lookup_and_finish_template_variable): New function, - extracted from ... - (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here. Use it. - (tsubst_qualified_id): Consider that EXPR might be a variable - template. - * typeck.c (check_template_keyword): Don't emit an error - if DECL is a variable template. - -2016-02-12 Jakub Jelinek <jakub@redhat.com> - - * error.c: Spelling fixes - behaviour -> behavior and - neighbour -> neighbor. - * decl.c: Likewise. - * typeck.c (cp_build_binary_op): Fix up behavior spelling in - diagnostics. - * init.c (build_delete): Likewise. - -2016-02-11 Jakub Jelinek <jakub@redhat.com> - - PR c/69768 - * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop - arguments for -Waddress warning. Fix up formatting. - -2016-02-11 Paolo Carlini <paolo.carlini@oracle.com> - - PR c++/68726 - * pt.c (lookup_template_class_1): Check tsubst return value for - error_mark_node. - -2016-02-10 Jason Merrill <jason@redhat.com> - - PR c++/68926 - * pt.c (resolve_nondeduced_context): Add complain parm. - (do_auto_deduction): Pass it. - * cvt.c (convert_to_void): Likewise. - * decl.c (cp_finish_decl): Likewise. - * init.c (build_new): Likewise. - * rtti.c (get_tinfo_decl_dynamic): Likewise. - * semantics.c (finish_decltype_type): Likewise. - * typeck.c (decay_conversion): Likewise. - * cp-tree.h: Adjust declaration. - * call.c (standard_conversion): Add complain parm, pass it along. - (implicit_conversion): Pass it. - - PR c++/69657 - * name-lookup.c (ambiguous_decl): Call remove_hidden_names. - (lookup_name_real_1): Likewise. - (remove_hidden_names): Handle non-functions too. - - PR c++/10200 - * parser.c (cp_parser_lookup_name): When looking for a template - after . or ->, only consider class templates. - (cp_parser_postfix_dot_deref_expression): Handle the current - instantiation. Remember a dependent object expression. - * typeck2.c (build_x_arrow): Handle the current instantiation. - - * ptree.c (debug_tree): Implement for cp_expr. - -2016-02-08 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/69139 - * parser.c (cp_parser_simple_type_specifier): Make the check - for disambiguating between an 'auto' placeholder and an implicit - template parameter more robust. - -2016-02-08 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/69283 - PR c++/67835 - * decl2.c (mark_used): When given a TEMPLATE_DECL, return after - setting its TREE_USED flag. - -2016-02-08 Jason Merrill <jason@redhat.com> - - PR c++/69657 - * name-lookup.c (do_nonmember_using_decl): Leave anticipated - built-ins alone. - -2016-02-08 Jakub Jelinek <jakub@redhat.com> - - PR c++/59627 - * parser.c (cp_parser_omp_declare_reduction): Set assembler name - of the DECL_OMP_DECLARE_REDUCTION_P decls. - -2016-02-08 Marek Polacek <polacek@redhat.com> - - PR c++/69688 - * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache. - Call clear_fold_cache. - * cp-tree.h: Adjust declaration. - * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches - rather than clear_cv_cache and clear_fold_cache. - * typeck2.c (store_init_value): Call clear_cv_and_fold_caches. - -2016-02-08 Jason Merrill <jason@redhat.com> - - * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New. - * cvt.c (convert): Pass CONV_BACKEND_CONVERT. - (ocp_convert): Use *_maybe_fold. - (cp_convert_to_pointer): Add dofold parameter. - * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert. - -2016-02-05 Martin Sebor <msebor@redhat.com> - - PR c++/69662 - * init.c (find_field_init): New function. - (warn_placement_new_too_small): Call it. Handle one-element arrays - at ends of structures special. - -2016-02-05 Jason Merrill <jason@redhat.com> - - PR c++/68948 - * semantics.c (finish_expr_stmt): If expr is error_mark_node, - make sure we've seen_error(). - -2016-02-05 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/68948 - * pt.c (tsubst_baselink): Diagnose an invalid constructor call - if lookup_fnfields returns NULL_TREE and the name being looked - up has the form A::A. - -2016-02-04 Patrick Palka <ppalka@gcc.gnu.org> - - * constexpr.c (cxx_eval_binary_expression): Fold equality - comparisons involving PTRMEM_CSTs. - -2016-02-04 Jakub Jelinek <jakub@redhat.com> - - * class.c (find_flexarrays): Don't declare dom variable. - (diagnose_flexarray): Likewise. - -2016-02-02 Martain Sebor <msebor@redhat.com> - - PR c++/69251 - PR c++/69253 - PR c++/69290 - PR c++/69277 - PR c++/69349 - * class.c (walk_subobject_offsets): Avoid testing the upper bound - of a flexible array member for equality to null. - (find_flexarrays): Remove spurious whitespace introduced in r231665. - (diagnose_flexarrays): Avoid checking the upper bound of arrays. - (check_flexarrays): Same. - * decl.c (compute_array_index_type): Avoid special case for flexible - array members. - (grokdeclarator): Avoid calling compute_array_index_type for flexible - array members. - * error.c (dump_type_suffix): Revert changes introduced in r231665 - and rendered unnecessary by the changes above. - * pt.c (tsubst): Same. - * tree.c (build_ctor_subob_ref): Handle flexible array members. - * typeck2.c (digest_init_r): Revert changes introduced in r231665. - (process_init_constructor_array): Same. - (process_init_constructor_record): Same. - -2016-02-03 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/69056 - * pt.c (try_one_overload): Handle comparing argument packs so - that there is no conflict if we deduced more arguments of an - argument pack than were explicitly specified. - -2016-01-31 Jakub Jelinek <jakub@redhat.com> - Jason Merrill <jason@redhat.com> - - PR c++/68763 - * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new - function type if nothing is changing. - -2016-01-31 Jason Merrill <jason@redhat.com> - - PR c++/69009 - * pt.c (partial_specialization_p, impartial_args): New. - (instantiate_decl): Call impartial_args. - - * mangle.c (maybe_check_abi_tags): New. - (write_guarded_var_name): Call it. - (mangle_ref_init_variable): Call check_abi_tags. - - * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES - between template and instantiation. - -2016-01-29 Jakub Jelinek <jakub@redhat.com> - - PR debug/66869 - * decl.c (wrapup_globals_for_namespace): Warn about unused static - function declarations. - -2016-01-29 Marek Polacek <polacek@redhat.com> - - PR c++/69509 - PR c++/69516 - * constexpr.c (cxx_eval_array_reference): Give the "array subscript - out of bound" error earlier. - * init.c (build_vec_init): Change NE_EXPR into GT_EXPR. Update the - commentary. - -2016-01-29 Patrick Palka <ppalka@gcc.gnu.org> - - * name-lookup.c (begin_scope): After reusing a cp_binding_level - structure, update free_binding_level before the structure's - level_chain field gets cleared, not after. - -2016-01-28 Jason Merrill <jason@redhat.com> - - PR c++/67407 - * search.c (dfs_walk_once, dfs_walk_once_r) - (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use - hash_set instead of BINFO_MARKED. - (dfs_unmark_r): Remove. - -2016-01-28 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/24208 - * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro. - (cp_lexer_debugging_p): Use it. - (cp_lexer_start_debugging): Likewise. - (cp_lexer_stop_debugging): Likewise. - -2016-01-27 Marek Polacek <polacek@redhat.com> - - PR c/68062 - * typeck.c (cp_build_binary_op): Promote operand to unsigned, if - needed. Add -Wsign-compare warning. - -2016-01-27 Ryan Burn <contact@rnburn.com> - - PR cilkplus/69267 - * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed - superfluous post_p argument in call to - cilk_gimplify_call_params_in_spawned_fn. - -2016-01-27 Marek Polacek <polacek@redhat.com> - - PR c++/69379 - * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs - wrapped in NOP_EXPRs. - -2016-01-27 Martin Sebor <msebor@redhat.com> - - PR c++/69317 - * mangle.c (mangle_decl): Reference the correct (saved) version - of the ABI in -Wabi diagnostics. - -2016-01-27 Marek Polacek <polacek@redhat.com> - - PR c++/69496 - * constexpr.c (cxx_eval_array_reference): Evaluate the number of - elements of the array. - -2016-01-26 Jason Merrill <jason@redhat.com> - - PR c++/68949 - * constexpr.c (register_constexpr_fundef): Keep the un-massaged body. - (cxx_eval_call_expression): Don't look through clones. - * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias. - * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of - maybe-in-charge *tor. - -2016-01-26 Jason Merrill <jason@redhat.com> - - PR c++/68782 - * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT - and TREE_SIDE_EFFECTS. - (cxx_eval_constant_expression) [CONSTRUCTOR]: Call - verify_constructor_flags. - -2016-01-26 Jakub Jelinek <jakub@redhat.com> - - PR c++/68357 - * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node, - return error_mark_node instead of building trees with error_mark_node - operands. - -2016-01-26 David Malcolm <dmalcolm@redhat.com> - - PR other/69006 - * error.c (print_instantiation_partial_context_line): Add missing - newlines from output for the t == NULL case. - (print_instantiation_partial_context): Remove call to pp_newline. - -2016-01-24 Patrick Palka <ppalka@gcc.gnu.org> - - Revert: - 2016-01-18 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/11858 - PR c++/24663 - PR c++/24664 - * decl.c (grokdeclarator): Don't decay array parameter type to - a pointer type if it's dependent. - (grokparms): Invoke strip_top_quals instead of directly invoking - cp_build_qualified_type. - * pt.c (decay_dependent_array_parm_type): New static function. - (type_unification_real): Call decay_dependent_array_parm_type - to decay a dependent array parameter type to its corresponding - pointer type before unification. - (more_specialized_fn): Likewise. - (get_bindings): Likewise. - * tree.c (cp_build_qualified_type): Trivial typofix in - documentation. - -2016-01-23 Martin Sebor <msebor@redhat.com> - - PR c++/58109 - PR c++/69022 - * decl2.c (is_late_template_attribute): Handle dependent argument - to attribute align and attribute vector_size. - -2016-01-21 Jason Merrill <jason@redhat.com> - - PR c++/69392 - * lambda.c (lambda_capture_field_type): Handle 'this' specially - for init-capture, too. - - PR c++/65687 - * decl.c (type_is_deprecated): Don't look into a typedef. - - PR c++/40751 - PR c++/64987 - * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN. - - PR c++/43407 - * decl.c (start_enum): Add attributes parameter. - * parser.c (cp_parser_enum_specifier): Pass it. - * pt.c (lookup_template_class_1): Pass it. - * cp-tree.h: Adjust. - -2016-01-19 Jason Merrill <jason@redhat.com> - - PR c++/59759 - * pt.c (convert_template_argument): Handle VAR_DECL properly. - -2016-01-19 Marek Polacek <polacek@redhat.com> - - PR c++/68586 - * constexpr.c (clear_cv_cache): New. - * cp-gimplify.c (clear_fold_cache): New. - * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare. - * decl.c (finish_enum_value_list): Call them. - - PR c++/68965 - * pt.c (tsubst_copy): Mark elements in expanded vector as used. - -2016-01-18 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/11858 - PR c++/24663 - PR c++/24664 - * decl.c (grokdeclarator): Don't decay array parameter type to - a pointer type if it's dependent. - (grokparms): Invoke strip_top_quals instead of directly invoking - cp_build_qualified_type. - * pt.c (decay_dependent_array_parm_type): New static function. - (type_unification_real): Call decay_dependent_array_parm_type - to decay a dependent array parameter type to its corresponding - pointer type before unification. - (more_specialized_fn): Likewise. - (get_bindings): Likewise. - * tree.c (cp_build_qualified_type): Trivial typofix in - documentation. - -2016-01-18 Jason Merrill <jason@redhat.com> - - * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input. - - * cp-gimplify.c (cp_fold): Remove unnecessary special cases. - - PR c++/68767 - * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify. Do fold COND_EXPR. - (contains_label_1, contains_label_p): Remove. - -2016-01-16 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/69091 - * pt.c (type_dependent_expression_p): For a function template - specialization, a type is dependent iff any of its template - arguments are. - -2016-01-16 Patrick Palka <ppalka@gcc.gnu.org> - - * cp-array-notation.c (cp_expand_cond_array_notations): Return - error_mark_node only if find_rank failed, not if it was - successful. - -2016-01-16 Patrick Palka <ppalka@gcc.gnu.org> - - PR c++/68936 - * tree.c (build_min_non_dep_call_vec): Don't retain the - KOENIG_LOOKUP_P flag of the non-dependent expression that's - been built. - (build_min_non_dep_op_overload): Instead, do it here. - -2016-01-15 Jakub Jelinek <jakub@redhat.com> - - PR bootstrap/68271 - * parser.h (cp_token): Remove pragma_kind field. Add comment - with number of unused bits. - * parser.c (eof_token): Remove pragma_kind field initializer. - (cp_lexer_get_preprocessor_token): Don't set pragma_kind - field, don't clear CPP_PRAGMA u.value. - (cp_parser_pragma_kind): New function. - (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel, - cp_parser_omp_construct, cp_parser_initial_pragma, - cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing - pragma_kind field. - -2016-01-15 Jason Merrill <jason@redhat.com> - - PR c++/68847 - * call.c (build_cxx_call): Use fold_non_dependent_expr. - - * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of - value. - - PR c++/69257 - * typeck.c (decay_conversion): Don't call mark_rvalue_use for - array/function-to-pointer conversion. Call - complete_type_or_maybe_complain for lvalue-to-rvalue conversion. - * call.c (convert_like_real): Print call context if - decay_conversion errors. - -2016-01-14 Tom de Vries <tom@codesourcery.com> - - PR tree-optimization/68773 - * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't - set force_output. - -2016-01-14 Jason Merrill <jason@redhat.com> - - PR c++/69261 - * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR. - -2016-01-12 Marek Polacek <polacek@redhat.com> - - PR c++/68979 - * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than - error_at and adjust the return value. - -2016-01-12 Jakub Jelinek <jakub@redhat.com> - - PR objc++/68511 - PR c++/69213 - * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return - GS_ERROR whenever seen_error (), only if *expr_p contains - cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed. - - PR c++/66808 - PR c++/69000 - * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO. - -2016-01-11 Jason Merrill <jason@redhat.com> - - PR c++/69131 - * method.c (walk_field_subobs): Add dtor_from_ctor parm. - (process_subob_fn): Likewise. Don't consider triviality if true. - (synthesize_method_walk): Pass it. - -2016-01-11 David Malcolm <dmalcolm@redhat.com> - - PR c++/68795 - * parser.c (cp_parser_postfix_expression): Initialize - close_paren_loc to UNKNOWN_LOCATION; only use it if - it has been written to by - cp_parser_parenthesized_expression_list. - (cp_parser_parenthesized_expression_list): Document the behavior - with respect to the CLOSE_PAREN_LOC param. - -2016-01-11 Jakub Jelinek <jakub@redhat.com> - - PR c++/69211 - * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR - folded operands have side-effects, but folding changed any of them, - build a new tree with the folded operands instead of returning the - unfolded tree. - -2016-01-09 Marek Polacek <polacek@redhat.com> - - PR c++/69113 - * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set. - -2016-01-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/69164 - * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs. - -2016-01-08 Jason Merrill <jason@redhat.com> - - PR c++/69158 - * constexpr.c (cxx_fold_indirect_ref): Handle array type differing - in completion. - -2016-01-08 Marek Polacek <polacek@redhat.com> - - PR c++/68449 - * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer. - -2016-01-08 Jason Merrill <jason@redhat.com> - - * constexpr.c (cxx_eval_call_expression): Remove convert_to_void - workaround. - - PR c++/68983 - PR c++/67557 - * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of - TREE_ADDRESSABLE type. - - PR c++/68983 - PR c++/67557 - * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR. - -2016-01-05 Nathan Sidwell <nathan@acm.org> - - PR c++/58583 - * pt.c (build_non_dependent_expr): Don't try a checking fold when - parsing an nsdmi. - -2016-01-04 Jakub Jelinek <jakub@redhat.com> +2017-01-01 Jakub Jelinek <jakub@redhat.com> Update copyright years. -Copyright (C) 2016 Free Software Foundation, Inc. +Copyright (C) 2017 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/cp/ChangeLog-2016 b/gcc/cp/ChangeLog-2016 new file mode 100644 index 0000000..7aca3ac --- /dev/null +++ b/gcc/cp/ChangeLog-2016 @@ -0,0 +1,4388 @@ +2016-12-24 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/78901 + * except.c (nothrow_libfn_p): Expect libc_name_p to return + const struct libc_name_struct *, if it returns NULL, return 0, + otherwise check c_ver and use flag_isoc99 or flag_isoc11. + * cfns.gperf: Add %struct-type and libc_name_struct definition. + For all C89 C library functions add , 89 after the name, add + C99 C library functions with , 99 and C11 C library functions + with , 11 suffix. + * cfns.h: Regenerated. + +2016-12-22 Jason Merrill <jason@redhat.com> + + PR c++/78906 + * pt.c (finish_template_variable): Use most_general_template. + + PR c++/78898 + PR c++/42329 + * pt.c (unify): Don't look for a class template from a non-class. + +2016-12-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/72707 + * name-lookup.c (pushdecl_maybe_friend_1): Do check shadowing of + artificial x if it is an anonymous union variable. + + PR bootstrap/78817 + * typeck.c (cp_build_function_call_vec): If check_function_arguments + returns true, set TREE_NO_WARNING on CALL_EXPR. + * call.c (build_over_call): Likewise. + + PR c++/77830 + * constexpr.c (cxx_eval_array_reference): Perform out of bounds + verification even if lval is true, just allow one past the last + element in that case. + (cxx_eval_store_expression): Detect stores to out of bound + ARRAY_REF. + +2016-12-21 Jason Merrill <jason@redhat.com> + + Implement P0522R0, matching of template template arguments. + * pt.c (coerce_template_template_parms): Allow a template argument + that's less specialized than the parameter. + (unify_bound_ttp_args): Adjust parm's args to apply to arg's + template. + (coerce_template_args_for_ttp): Split out from + lookup_template_class_1. + (coerce_ttp_args_for_tta, store_defaulted_ttp) + (lookup_defaulted_ttp, add_defaults_to_ttp): New. + (process_partial_specialization): Set DECL_CONTEXT of + template template-parameters. + (coerce_template_parms): Only inform when complain. + (expand_template_argument_pack): Handle error_mark_node. + (convert_template_argument, template_args_equal, unify): Handle + any_targ_node. + * cp-tree.h (enum cp_tree_index): Add CPTI_ANY_TARG. + (any_targ_node): New. + * decl.c (cxx_init_decl_processing): Set it. + * name-lookup.c (consider_binding_level): Ignore names with embedded + spaces. + + PR c++/42329 + * pt.c (unify_bound_ttp_args): Split out from unify. + (try_class_unification): Handle BOUND_TEMPLATE_TEMPLATE_PARM. + (unify): Check for type/non-type mismatch early. + [BOUND_TEMPLATE_TEMPLATE_PARM]: Try get_template_base. + + * pt.c (coerce_template_parms): Consider variadic_args_p before + complaining about too many template arguments. + + * pt.c (process_partial_specialization): Use + get_partial_spec_bindings to check that the partial specialization + is more specialized than the primary template. + + * pt.c (convert_template_argument): Pass args to do_auto_deduction. + (mark_template_parm): Handle deducibility from type of non-type + argument here. + (for_each_template_parm_r): Not here. + + * ptree.c (cxx_print_type): Print args of + BOUND_TEMPLATE_TEMPLATE_PARM. + (cxx_print_decl): Print DECL_TEMPLATE_PARMS. + + PR c++/78767 - ICE with inherited constructor default argument + * method.c (strip_inheriting_ctors): Strip template as appropriate. + + PR c++/78749 - friend in anonymous namespace + * decl.c (wrapup_globals_for_namespace): Don't complain about friend + pseudo-template instantiations. + +2016-12-16 Richard Biener <rguenther@suse.de> + + PR c++/71694 + * cp-objcp-common.h (cp_unit_size_without_reusable_padding): Declare. + (LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define. + * cp-objcp-common.c (cp_unit_size_without_reusable_padding): New. + +2016-12-15 Jakub Jelinek <jakub@redhat.com> + + P0490R0 GB 20: decomposition declaration should commit to tuple + interpretation early + * decl.c (get_tuple_size): Make static. If inst is error_mark_node + or non-complete type, return NULL_TREE, otherwise if + lookup_qualified_name fails or doesn't fold into INTEGER_CST, return + error_mark_node. + (get_tuple_element_type, get_tuple_decomp_init): Make static. + (cp_finish_decomp): Pass LOC to get_tuple_size. If it returns + error_mark_node, complain and fail. + +2016-12-15 Nathan Sidwell <nathan@acm.org> + + PR c++/77585 + * pt.c (instantiate_decl): Push to class scope lambda resides + within when instantiating a generic lambda function. + +2016-12-14 Martin Sebor <msebor@redhat.com> + + PR c++/78774 + * pt.c (convert_template_argument): Avoid assuming operand type + is non-null since that of SCOPE_REF is not. + +2016-12-14 Martin Jambor <mjambor@suse.cz> + + * parser.c: Include omp-general.h and omp-offload.h instead of + omp-low.h. + (cp_parser_omp_simd): Adjusted calls to find_omp_clause to use its new + name. + (cp_parser_omp_target_update): Likewise. + (cp_parser_oacc_declare): Likewise. + (cp_parser_oacc_enter_exit_data): Likewise. + (cp_parser_oacc_update): Likewise. + (cp_finalize_oacc_routine): Adjusted call to get_oacc_fn_attrib, + build_oacc_routine_dims and replace_oacc_fn_attrib to use their new + names. + * semantics.c: Include omp-general insteda of omp-low.h. + (finish_omp_for): Adjusted calls to find_omp_clause to use its new + name. + (finish_omp_cancel): Likewise. + (finish_omp_cancellation_point): Likewise. + +2016-12-14 Marek Polacek <polacek@redhat.com> + + PR c++/72775 + * init.c (perform_member_init): Diagnose member initializer for + flexible array member. + +2016-12-14 Nathan Sidwell <nathan@acm.org> + + PR c++/78701 + * pt.c (type_unification_real): Check tsubst arg doesn't have + remaining template parms before converting it. + + PR c++/69481 + * cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use + TYPE_ALIAS_TEMPLATE_INFO for aliases. + +2016-12-13 Nathan Sidwell <nathan@acm.org> + + PR c++/69481 + * cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking. + (TYPE_ALIAS_TEMPLATE_INFO): New. + (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New. Use those macros. + * error.c (dump_alias_template_specialization): Adjust. + * pt.c (maybe_process_partial_specialization, + iterative_has_template_arg, find_parameter_packs_r, + alias_template_specialization_p, dependent_alias_template_spec_p, + get_underlying_template, lookup_template_class_1, unify): Adjust + template using decl access. + +2016-12-11 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/78637 + * parser.c (cp_parser_namespace_definition): Increment + nested_definition_count only if push_namespace succeeds. + +2016-12-08 Nathan Sidwell <nathan@acm.org> + + PR c++/78551 + * constexpr.c (extract_string_elt): New. Broken out of ... + (cxx_eval_array_reference): ... here. Call it. + (cxx_eval_store_expression): Convert init by STRING_CST into + CONSTRUCTOR, if needed. + +2016-12-08 Jakub Jelinek <jakub@redhat.com> + + P0003R5 - removal of dynamic exception specification from C++17 + * parser.c (cp_parser_exception_specification_opt): For C++17 + error out on throw ( type-id-list ), for C++11 and C++14 issue + -Wdeprecated warning on it. Formatting fix. Treat throw() + in C++17 as noexcept(true). + +2016-12-07 Martin Jambor <mjambor@suse.cz> + + PR c++/78589 + * error.c (dump_decl): Use dump_function_name to dump + !DECL_LANG_SPECIFIC function decls with no or self-referencing + abstract origin. + +2016-12-07 Nathan Sidwell <nathan@acm.org> + + * pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow + and avoid re-tsubsting type. + + * cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER & + CPTI_DECLTYPE_AUTO_IDENTIFIER. + (auto_identifier, decltype_auto_identifier): New. + *decl.c (initialize_predefined_identifiers): Add 'auto' and + 'decltype(auto)'. + (grokdeclarator): Use cached identifier. + * pt.c (make_decltype_auto, make_auto, make_constrained_auto, + is_auto): Likewise. + +2016-12-02 Jakub Jelinek <jakub@redhat.com> + + PR c++/78649 + * pt.c (tsubst_init): Don't call build_value_init if decl's type + is error_mark_node. + +2016-12-02 Cesar Philippidis <cesar@codesourcery.com> + James Norris <jnorris@codesourcery.com> + + * parser.c (cp_parser_oacc_enter_exit_data): Update diagnostics. + (cp_parser_pragma): Error when PRAGMA_OACC_{ENTER_DATA, + EXIT_DATA,WAIT} are not used in compound statements. + +2016-12-01 Jason Merrill <jason@redhat.com> + + * call.c (add_function_candidate): Also exclude inherited ctors + that take a type reference-related to the derived class. + + * call.c (add_function_candidate): Exclude inherited copy/move + ctors. + +2016-11-29 David Malcolm <dmalcolm@redhat.com> + + PR c++/77922 + * name-lookup.c (lookup_name_fuzzy): Filter out reserved words + that were filtered out by init_reswords. + +2016-11-28 Jakub Jelinek <jakub@redhat.com> + Jason Merrill <jason@redhat.com> + + PR c++/72808 + * decl.c (finish_enum_value_list): Call fixup_type_variants on + current_class_type after + insert_late_enum_def_into_classtype_sorted_fields. + +2016-11-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/77591 + * typeck.c (maybe_warn_about_returning_address_of_local): Optimize + whats_returned through fold_for_warn. + +2016-11-27 Jason Merrill <jason@redhat.com> + + PR c++/77907 + * constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert. + +2016-11-24 Martin Liska <mliska@suse.cz> + + PR bootstrap/78493 + * parser.c (cp_parser_range_for): Use safe_push instead of quick_push. + +2016-11-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/77907 + * cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor + and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR + with the object on lhs and maybe_constant_value returned expr on rhs. + + PR c++/71450 + * pt.c (tsubst_copy): Return error_mark_node when mark_used + fails, even when complain & tf_error. + + PR c++/77739 + * cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass + false as handle_invisiref_parm_p to cp_genericize_tree. + (struct cp_genericize_data): Add handle_invisiref_parm_p field. + (cp_genericize_r): Don't wrap is_invisiref_parm into references + if !wtd->handle_invisiref_parm_p. + (cp_genericize_tree): Add handle_invisiref_parm_p argument, + set wtd.handle_invisiref_parm_p to it. + (cp_genericize): Pass true as handle_invisiref_parm_p to + cp_genericize_tree. Formatting fix. + +2016-11-21 Bernd Edlinger <bernd.edlinger@hotmail.de> + + PR c++/71973 + * decl.c (duplicate_decls): Warn when a built-in function is redefined. + Don't overload builtin functions with C++ functions. + Handle const_tm_ptr_type_node like file_ptr_node. + Copy the TREE_NOTHROW flag unmodified to the old decl. + +2016-11-18 Jason Merrill <jason@redhat.com> + + PR objc++/78418 - ICE in string tests on darwin + * tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P. + +2016-11-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/77285 + * mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call + check_abi_tags. + +2016-11-18 Jason Merrill <jason@redhat.com> + + PR c++/67631 - list-init and explicit conversions + * semantics.c (finish_compound_literal): Call digest_init_flags. + * typeck2.c (digest_init_flags): Add complain parm. + (store_init_value): Pass it. + +2016-11-18 Richard Sandiford <richard.sandiford@arm.com> + Alan Hayward <alan.hayward@arm.com> + David Sherwood <david.sherwood@arm.com> + + * class.c (finish_struct_bits): Use SET_DECL_MODE. + (build_base_field_1, layout_class_type, finish_struct_1): Likewise. + * decl.c (make_label_decl): Likewise. + * pt.c (tsubst_decl): Likewise. + +2016-11-17 Jason Merrill <jason@redhat.com> + + PR c++/78193 - inherited ctor regressions on sparc32. + * call.c (build_over_call): Don't set CALL_FROM_THUNK_P here. + (build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR. + (convert_like_real) [ck_rvalue]: Also pass non-addressable + types along directly. + +2016-11-17 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/55080 + * parser.c (cp_parser_non_integral_constant_expression): Issue a + pedwarn instead of an error for case NIC_FLOAT. + +2016-11-17 Jason Merrill <jason@redhat.com> + + PR c++/78124 - list-initialization and inherited ctor + * name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE. + + PR c++/78369 - {} as default argument + * call.c (build_special_member_call): Handle CONSTRUCTOR. + + PR c++/68377 + * parser.c (cp_parser_fold_expression): Check TREE_NO_WARNING. + +2016-11-16 Jason Merrill <jason@redhat.com> + + PR c++/78373 + * decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference. + * typeck2.c (store_init_value): Likewise. + + * decl.c (store_decomp_type, lookup_decomp_type): New. + (cp_finish_decomp): Call store_decomp_type. + * semantics.c (finish_decltype_type): Call lookup_decomp_type. + * cp-tree.h: Declare lookup_decomp_type. + +2016-11-15 Jakub Jelinek <jakub@redhat.com> + + * decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl, + set DECL_ASSEMBLER_NAME. + * parser.c (cp_parser_decomposition_declaration): Likewise + if returning error_mark_node. + * mangle.c (mangle_decomp): New function. + * cp-tree.h (mangle_decomp): New declaration. + +2016-11-15 Jason Merrill <jason@redhat.com> + + PR c++/78358 + * semantics.c (finish_decltype_type): Strip references for a tuple + decomposition. + * cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables. + + * decl2.c (decl_maybe_constant_var_p): References qualify. + * constexpr.c (non_const_var_error): Handle references. + * init.c (constant_value_1): Always check decl_constant_var_p. + * cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references. + * error.c (dump_decl_name): Split out from dump_decl. + +2016-11-14 Jason Merrill <jason@redhat.com> + + * tree.c (bitfield_p): New. + * cp-tree.h: Declare it. + * typeck.c (cxx_sizeof_expr, cxx_alignof_expr) + (cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD. + * decl.c (cp_finish_decomp): Look through reference. Always + SET_DECL_DECOMPOSITION_P. + * semantics.c (finish_decltype_type): Adjust decomposition handling. + +2016-11-13 Jakub Jelinek <jakub@redhat.com> + Jason Merrill <jason@redhat.com> + + Implement P0217R3 - C++17 structured bindings + * cp-tree.h (struct lang_decl_base): Add decomposition_p. + (DECL_DECOMPOSITION_P): New + (enum auto_deduction_context): Add adc_decomp_type. + (enum cp_declarator_kind): Add cdk_decomp. + * constexpr.c (cxx_eval_constant_expression): Look through + DECL_VALUE_EXPR. + (potential_constant_expression_1): Likewise. + * decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT. + (check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P. + (cp_finish_decl): Pass adc_decomp_type for decomposition. + (find_decomp_class_base, get_tuple_size, get_tuple_element_type) + (get_tuple_decomp_init, cp_finish_decomp): New. + (grokdeclarator): Handle decomposition. + * init.c (build_aggr_init): Handle decomposition array. + (build_vec_init): Handle initialization from { array }. + * name-lookup.c (add_function): Always wrap TEMPLATE_DECL in + OVERLOAD. + * parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp. + (function_declarator_p, strip_declarator_types) + (cp_parser_check_declarator_template_parameters): Likewise. + (cp_parser_range_for, cp_convert_range_for): Handle decomposition. + (cp_parser_simple_declaration): Parse decomposition. + (cp_parser_decomposition_declaration): New. + * pt.c (tsubst_decomp_names): New. + (subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition. + (do_auto_deduction): Handle adc_decomp_type. + * semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR. + * typeck.c (is_bitfield_expr_with_lowered_type): Likewise. + * tree.c (lvalue_kind): Likewise. + (cp_build_reference_type): Handle reference collapsing. + +2016-11-13 Jason Merrill <jason@redhat.com> + + * call.c (build_new_method_call_1): Include template arguments in + error message. + (print_error_for_call_failure): Likewise. + (build_new_function_call): Pass them in. + * name-lookup.c (supplement_binding_1): Don't complain about a + conflict with an erroneous declaration. + * error.c (dump_decl): Fix printing of alias declaration. + * decl.c (make_typename_type): Call cxx_incomplete_type_error. + * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. + * semantics.c (perform_koenig_lookup): Don't wrap an error in + TEMPLATE_ID_EXPR. + +2016-11-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> + + PR c/35503 + * parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict. + +2016-11-12 Jason Merrill <jason@redhat.com> + + CWG 2233 + * typeck.c (convert_arguments): Handle default arg followed by none. + + * constexpr.c (potential_constant_expression_1): REALPART_EXPR and + IMAGPART_EXPR can be lvalues. + + DR 374 + PR c++/56480 + * pt.c (check_specialization_namespace): Allow any enclosing + namespace. + (check_unqualified_spec_or_inst): New. + (check_explicit_specialization): Call it. + * parser.c (cp_parser_elaborated_type_specifier) + (cp_parser_class_head): Call it. + +2016-11-10 Jason Merrill <jason@redhat.com> + + PR c++/77337 + * pt.c (tsubst_friend_function): Don't set DECL_INITIAL. + (instantiate_decl): It's OK to defer a constexpr function. + * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check + DECL_LANG_SPECIFIC. + * decl2.c (decl_defined_p): Use it. No longer static. + * decl.c (redeclaration_error_message): Use decl_defined_p. + * constexpr.c (cxx_eval_call_expression): Set input_location around + call to instantiate_decl. + +2016-11-10 Jakub Jelinek <jakub@redhat.com> + + * mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for + public or external symbols. + +2016-11-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/78283 + * mangle.c (start_mangling): Reset G.need_cxx1z_warning. + +2016-11-09 Jason Merrill <jason@redhat.com> + + * parser.c (cp_parser_simple_type_specifier): Allow placeholder + for template template parameter. + (cp_parser_type_id_1): Improve diagnostic. + * decl.c (grokdeclarator): Handle class deduction diagnostics here. + * pt.c (splice_late_return_type): Not here. + (tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template. + (do_class_deduction): Handle non-class templates. + + Implement P0127R2, Declaring non-type parameters with auto. + * cp-tree.h (enum auto_deduction_context): Add adc_unify. + * decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type + parameter types. + * pt.c (do_auto_deduction): Add outer_targs parameter. + (convert_template_argument): Call do_auto_deduction. If adc_unify, + don't give up on dependent init. + (unify): Likewise. In C++17, walk into the type of a + TEMPLATE_PARM_INDEX. + (for_each_template_parm): Add any_fn parameter. + (struct pair_fn_data): Likewise. + (for_each_template_parm_r): Call it for any tree. In C++17, walk + into the type of a TEMPLATE_PARM_INDEX. + (zero_r, array_deduction_r, try_array_deduction): New. + (type_unification_real): Call try_array_deduction. + (get_partial_spec_bindings): Likewise. + +2016-11-07 Jason Merrill <jason@redhat.com> + + Implement P0012R1, Make exception specifications part of the type + system. + * cp-tree.h (enum tsubst_flags): Add tf_fndecl_type. + (flag_noexcept_type, ce_type): New. + * call.c (build_conv): Add ck_fnptr. + (enum conversion_kind): Change ck_tsafe to ck_fnptr. + (convert_like_real): Likewise. + (standard_conversion): Likewise. Allow function pointer + conversions for pointers to member functions. + (reference_compatible_p): Allow function pointer conversions. + (direct_reference_binding): Likewise. + (reference_binding): Reference-compatible is no longer a subset of + reference-related. + (is_subseq): Also strip ck_lvalue after next_conversion. + * class.c (instantiate_type): Check fnptr_conv_p. + (resolve_address_of_overloaded_function): Likewise. + * cvt.c (can_convert_tx_safety): Now static. + (noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New. + * decl.c (flag_noexcept_type): Define. + (cxx_init_decl_processing): Set it. + (bad_specifiers): Check it. + (grokdeclarator) [cdk_function]: Add exception-spec to type here. + * lambda.c (maybe_add_lambda_conv_op): Add exception-spec to + returned pointer. + * mangle.c (struct globals): Add need_cxx1z_warning. + (mangle_decl): Check it. + (write_exception_spec): New. + (write_function_type): Call it. + (canonicalize_for_substitution): Handle exception spec. + (write_type): Likewise. + (write_encoding): Set processing_template_decl across mangling of + partially-instantiated type. + * pt.c (determine_specialization): Pass tf_fndecl_type. + (tsubst_decl, fn_type_unification): Likewise. + (tsubst): Strip tf_fndecl_type, pass it to + tsubst_exception_specification. + (convert_nontype_argument_function): Handle function pointer + conversion. + (convert_nontype_argument): Likewise. + (unify, for_each_template_parm_r): Walk into noexcept-specifier. + * rtti.c (ptr_initializer): Encode noexcept. + * tree.c (canonical_eh_spec): New. + (build_exception_variant): Use it. + * typeck.c (composite_pointer_type): Handle fnptr conversion. + (comp_except_specs): Compare canonical EH specs. + (structural_comptypes): Call it. + + * call.c (standard_conversion): Reorganize pointer conversions. + * pt.c (convert_nontype_argument_function): Convert to ref here. + (convert_nontype_argument): Not here. + (convert_template_argument): Add original type to error message. + (RECUR_AND_CHECK_FAILURE): Remove trailing semicolon. + (unify): Compare function-qualifiers. + * typeck.c (same_type_ignoring_top_level_qualifiers_p): Use + cp_build_qualified_type rather than TYPE_MAIN_VARIANT. + + * pt.c (push_tinst_level_loc): Add template instantiations to the + announce_function stream. + +2016-11-04 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/67980 + * pt.c (tsubst_expr, case IF_STMT): Use fold_non_dependent_expr + to suppress unwanted warnings. + +2016-11-03 Jason Merrill <jason@redhat.com> + + PR c++/78198 + * call.c (convert_default_arg): Look through inheriting ctors. + +2016-11-03 Jakub Jelinek <jakub@redhat.com> + Alexandre Oliva <aoliva@redhat.com> + Jason Merrill <jason@redhat.com> + + PR debug/28767 + PR debug/56974 + * tree.c (cp_check_qualified_type): Use check_base_type and + TYPE_QUALS comparison instead of check_qualified_type. + (cxx_type_hash_eq): Return false if type_memfn_rqual don't match. + * cp-objcp-common.c (cp_get_debug_type): New function. + (cp_decl_dwarf_attribute): Don't handle types here. + (cp_type_dwarf_attribute): New function. + * cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute): + Declare. + (LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE): + Define. + +2016-11-03 Jason Merrill <jason@redhat.com> + + * tree.c (cp_check_qualified_type): Call check_base_type instead + of check_qualified_type. + (cxx_type_hash_eq): Check ref-qualifiers. + * typeck.c (apply_memfn_quals): No need to mess with TYPE_CANONICAL. + +2016-11-01 Jason Merrill <jason@redhat.com> + + Implement P0136R1, Rewording inheriting constructors. + * call.c (enum rejection_reason_code): Add rr_inherited_ctor. + (inherited_ctor_rejection): New. + (add_function_candidate): Reject inherited ctors for copying. + (enforce_access): Use strip_inheriting_ctors. + (print_z_candidate): Likewise. Handle rr_inherited_ctor. + (convert_like_real): Avoid copying inheriting ctor parameters. + (build_over_call): Likewise. A base ctor inheriting from vbase + has no parms. Sorry about varargs. + (joust): A local constructor beats inherited with the same convs. + * class.c (add_method): Handle hiding inheriting ctors. + (one_inherited_ctor): Handle new semantics. + (add_implicitly_declared_members): Pass using_decl down. + (build_clone): A base ctor inheriting from vbase has no parms. + * cp-tree.h (DECL_INHERITED_CTOR): Store this instead of the base. + (SET_DECL_INHERITED_CTOR): Likewise. + (DECL_INHERITED_CTOR_BASE): Adjust. + * constexpr.c: Adjust. + * error.c (dump_function_decl): Decorate inheriting ctors. + * init.c (emit_mem_initializers): Suppress access control in + inheriting ctor. + * mangle.c (write_special_name_constructor): Handle new inheriting + ctor mangling. + * method.c (strip_inheriting_ctors, inherited_ctor_binfo) + (ctor_omit_inherited_parms, binfo_inherited_from): New. + (synthesized_method_walk): Use binfo_inherited_from. Suppress + access control in inheriting ctor. + (deduce_inheriting_ctor): Deleted if ambiguous ctor inheritance. + (maybe_explain_implicit_delete): Explain ambigous ctor inheritance. + (add_one_base_init, do_build_copy_constructor): Adjust. + (locate_fn_flags, explain_implicit_non_constexpr): Adjust. + (implicitly_declare_fn): Adjust. + (get_inherited_ctor): Remove. + * name-lookup.c (do_class_using_decl): Check for indirect ctor + inheritance. + * optimize.c (cdtor_comdat_group): Adjust for new mangling. + (maybe_clone_body): Handle omitted parms in base clone. + (maybe_thunk_body): Don't thunk if base clone omits parms. + * pt.c (tsubst_decl): Adjust. + (instantiate_template_1): Suppress access control in inheriting + ctor. + (fn_type_unification): Do deduction with inherited ctor. + * tree.c (special_function_p): Adjust. + +2016-11-01 Jakub Jelinek <jakub@redhat.com> + + * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_inline. + +2016-11-01 Jason Merrill <jason@redhat.com> + + * class.c (declared_access): Split out from handle_using_decl. + +2016-10-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/78089 + * parser.c (cp_parser_postfix_expression): Replace return statement in + the first switch with setting postfix_expression to the return + expression and break;. + + PR c++/77886 + * pt.c (tsubst_expr) <case CASE_LABEL_EXPR> Copy over + FALLTHROUGH_LABEL_P flag to the new LABEL_DECL. + (tsubst_expr) <case LABEL_EXPR>: Likewise. + +2016-09-11 Le-Chun Wu <lcwu@google.com> + Mark Wielaard <mjw@redhat.com> + + * name-lookup.c (pushdecl_maybe_friend): When emitting a + shadowing warning, use the code corresponding to the + given -Wshadow= variant. + +2016-10-26 Jason Merrill <jason@redhat.com> + + * class.c (add_method): Allow using-declarations to coexist. + +2016-10-25 Jason Merrill <jason@redhat.com> + + * constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL. + (cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR + with CONSTRUCTOR_NO_IMPLICIT_ZERO. + (cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO. + +2016-10-25 Jakub Jelinek <jakub@redhat.com> + + * parser.c (cp_parser_postfix_expression): Adding missing break;. + + * cp-tree.h (finish_builtin_launder): Declare. + * parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER. + * semantics.c (finish_builtin_launder): New function. + * pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER. + * constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER. + (potential_constant_expression_1): Likewise. + +2016-10-24 Jakub Jelinek <jakub@redhat.com> + + * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference + and DW_AT_rvalue_reference. + + * cxx-pretty-print.c (pp_cxx_check_constraint): Use VAR_P (x) + instead of TREE_CODE (x) == VAR_DECL. + * constraint.cc (get_concept_definition): Likewise. + (finish_shorthand_constraint): Likewise. + * init.c (warn_placement_new_too_small): Likewise. + * cp-gimplify.c (cp_genericize_r): Likewise. + +2016-10-21 Jason Merrill <jason@redhat.com> + + PR c++/77656 + * pt.c (convert_template_argument): Call convert_nontype_argument + on value-dependent but not type-dependent arguments. + (convert_nontype_argument): Handle value-dependent arguments. + (canonicalize_expr_argument): New. + (deducible_expression, unify): Skip CONVERT_EXPR. + * error.c (dump_template_argument): Likewise. + * mangle.c (write_expression): Likewise. + + * ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl. + +2016-10-21 Jakub Jelinek <jakub@redhat.com> + + * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle + DW_AT_const_expr. + +2016-10-17 Jakub Jelinek <jakub@redhat.com> + + * cp-objcp-common.h (cp_function_decl_explicit_p, + cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove. + (cp_decl_dwarf_attribute): Declare. + (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P, + LANG_HOOKS_FUNCTION_DECL_DELETED_P, + LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove. + (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Redefine. + * cp-objcp-common.c (cp_function_decl_explicit_p, + cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove. + (cp_decl_dwarf_attribute): New function. + +2016-10-15 Jason Merrill <jason@redhat.com> + + PR c++/77945 + * constexpr.c (maybe_simplify_trivial_copy): New. + (cxx_eval_store_expression): Call it. + * call.c (build_over_call): Use unsigned char for trivial copy. + +2016-10-14 Jason Merrill <jason@redhat.com> + + Implement P0017R1, C++17 aggregates with bases. + * class.c (build_base_field_1): Split out from... + (build_base_field): ...here. In C++17 mode, build a field for + empty bases. + * decl.c (xref_basetypes): In C++17 aggregates can have bases. + (next_initializable_field): Allow base fields in C++17. + * typeck2.c (process_init_constructor_record): Likewise. + +2016-10-14 Jakub Jelinek <jakub@redhat.com> + + DR 1511 - const volatile variables and ODR + * decl.c (grokvardecl): Change flags argument to type_quals, + add conceptp argument. Set TREE_PUBLIC for non-static volatile vars. + (grokdeclarator): Adjust grokvardecl caller. + +2016-10-13 Martin Sebor <msebor@redhat.com> + + PR c++/71912 + * class.c (struct flexmems_t): Add members. + (find_flexarrays): Add arguments. Correct handling of anonymous + structs. + (diagnose_flexarrays): Adjust to issue warnings in addition to errors. + (check_flexarrays): Add argument. + (diagnose_invalid_flexarray): New functions. + +2016-10-13 Jakub Jelinek <jakub@redhat.com> + Jason Merrill <jason@redhat.com> + + Implement P0386R2 - C++17 inline variables + * cp-tree.h (struct lang_type): Shrink language field to 1 bit + from 4. Add var_declared_inline_p field. Mention 2 spare bits. + (DECL_VAR_DECLARED_INLINE_P): Define. + (SET_DECL_VAR_DECLARED_INLINE_P): Define. + (DECL_INLINE_VAR_P): Define. + (diagnose_inline_vars_for_namespace): Declare. + * decl.c (diagnose_inline_vars_for_namespace): New function. + (duplicate_decls): For static data members copy + DECL_DECLARED_CONSTEXPR_P. + (redeclaration_error_message): Handle C++17 redundant redeclaration + of constexpr static data member outside of class. + (maybe_commonize_var): Handle inline variables. + (check_initializer): Ignore inline variables for diagnostics. + Adjust diagnostic wording for C++17. + (make_rtl_for_nonlocal_decl): Allow in-class definition of + inline static data members. + (bad_specifiers): Don't diagnose inline on variables here. + (grokvardecl): Add inlinep argument, non-static const inline variables + are TREE_PUBLIC. + (check_static_variable_definition): Return early also for inline + variables. + (mark_inline_variable): New. + (grokdeclarator): Handle inline variables and inline static data + members. + * typeck2.c (store_init_value): Don't diagnose non-constant + initializers for non-constexpr inline static data members. + * decl2.c (vague_linkage_p): Return true for inline variables. + (c_parse_final_cleanups): In-class declaration of inline static + data members is a definition. Call diagnose_inline_vars_for_namespace + through walk_namespaces. + * pt.c (instantiate_decl): Set pattern_defined for in-class definitions + of inline static data members. + +2016-10-13 Jason Merrill <jason@redhat.com> + + * decl.c (mark_inline_variable): New. + +>>>>>>> .r241142 +2016-10-13 Thomas Preud'homme <thomas.preudhomme@arm.com> + + * decl2.c: Include memmodel.h. + * rtti.c: Likewise. + +2016-10-11 Jason Merrill <jason@redhat.com> + + PR c++/77742 + * init.c (build_new_1): Don't -Waligned-new about placement new. + (malloc_alignment): New. Consider MALLOC_ABI_ALIGNMENT. + * decl.c (cxx_init_decl_processing): New. + +2016-10-10 Jason Merrill <jason@redhat.com> + + PR c++/77890 + PR c++/77912 + * pt.c (do_class_deduction): Set cp_unevaluated_operand. + (tsubst) [TEMPLATE_TYPE_PARM]: Copy CLASS_PLACEHOLDER_TEMPLATE. + +2016-10-08 Jason Merrill <jason@redhat.com> + + * cp-gimplify.c (cp_fold): Add variable name. + + * cp-gimplify.c (cp_fold): Distribute cp_truthvalue_conversion + into COND_EXPR. + +2016-10-07 Jason Merrill <jason@redhat.com> + + Further P0135 refinement. + * call.c (build_user_type_conversion_1): Consider conversions from + a single element in an initializer-list. + (build_temp): Undo early_elide_copy change. + (build_over_call): Check that we don't try to copy a TARGET_EXPR + in C++17 mode. Set user_conv_p here. + (convert_like_real): Not here. + (check_self_delegation): Split out from... + (build_special_member_call): ...here. Handle C++17 copy elision. + * cvt.c (early_elide_copy): Remove. + (ocp_convert): Undo early_elide_copy change. + * except.c (build_throw): Likewise. + * init.c (expand_default_init): Likewise. + * typeck.c (cp_build_modify_expr): Likewise. + +2016-10-07 Nathan Sidwell <nathan@acm.org> + + PR c++/64433 + DR1658, DR1611 + * init.c (emit_mem_initializers): Don't construct vbases of + abstract classes. + (push_base_cleanups): Don't push vbase cleanups for abstract class + when in C++14 mode. + * method.c (synthethesized_method_walk): Don't walk vbases of + abstract classes when in C++14 mode. + +2016-10-07 Jakub Jelinek <jakub@redhat.com> + + Implement LWG2296 helper intrinsic + * parser.c (cp_parser_postfix_expression): Handle RID_ADDRESSOF. + * cp-objcp-common.c (cp_common_init_ts): Handle ADDRESSOF_EXPR. + * constexpr.c (potential_constant_expression_1): Likewise. + * error.c (dump_expr): Likewise. + * typeck.c (cp_build_addressof): New function. + * cp-tree.h (cp_build_addressof): Declare. + * cxx-pretty-print.h (pp_cxx_addressof_expression): Declare. + * cp-tree.def (ADDRESSOF_EXPR): New tree code. + * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): Handle + ADDRESSOF_EXPR. Add __builtin_addressof and + __has_unique_object_representations into syntax in function comment. + (pp_cxx_addressof_expression): New function. + * pt.c (tsubst_copy_and_build): Handle ADDRESSOF_EXPR. + +2016-10-07 Bernd Edlinger <bernd.edlinger@hotmail.de> + + PR c++/77700 + * parser.c (cp_parser_base_specifier): Fix a warning. + +2016-10-07 Bernd Schmidt <bschmidt@redhat.com> + + PR c++/69733 + * decl.c (grokdeclarator): Try to find the correct location for an + ignored qualifier. + +2016-10-07 Martin Liska <mliska@suse.cz> + + * lambda.c (maybe_add_lambda_conv_op): Set default value. + +2016-10-06 Jason Merrill <jason@redhat.com> + + * call.c (build_temp, convert_like_real): Don't re-copy + TARGET_EXPR. Handle packed fields. + (build_x_va_arg): Wrap it in a TARGET_EXPR. + (build_over_call): Add sanity check. + * cvt.c (early_elide_copy): New. + (ocp_convert): Use it. + * except.c (build_throw): Use it. + * init.c (get_nsdmi): Put back the TARGET_EXPR. + (expand_default_init): Call early_elide_copy. + * typeck.c (cp_build_modify_expr): Call early_elide_copy. + +2016-10-06 Jakub Jelinek <jakub@redhat.com> + + Implement P0258R2 - helper for C++17 + std::has_unique_object_representations trait + * cp-tree.h (enum cp_trait_kind): Add + CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. + (struct lang_type_class): Add unique_obj_representations + and unique_obj_representations_set bitfields. + (CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS, + CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET): Define. + (type_has_unique_obj_representations): Declare. + * parser.c (cp_parser_primary_expression): Handle + RID_HAS_UNIQUE_OBJ_REPRESENTATIONS. + (cp_parser_trait_expr): Likewise. Formatting fix. + * semantics.c (trait_expr_value, finish_trait_expr): Handle + CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. + * tree.c (type_has_unique_obj_representations): New function. + (record_has_unique_obj_representations): New function. + * cxx-pretty-print.c (pp_cxx_trait_expression): Handle + CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. + +2016-10-05 Jason Merrill <jason@redhat.com> + + Implement P0135R1, Guaranteed copy elision. + * cvt.c (ocp_convert): Don't re-copy a TARGET_EXPR in C++17. + + PR c++/54293 + * call.c (reference_binding): Fix binding to member of temporary. + + * call.c (extend_ref_init_temps): Fix TARGET_EXPR handling. + + * parser.c (cp_parser_skip_to_end_of_statement): Add missing break. + + * semantics.c (finish_compound_literal): Handle class placeholder. + +2016-10-05 Marek Polacek <polacek@redhat.com> + + Implement P0305R1, Selection statements with initializer. + * cp-array-notation.c (create_an_loop): Call finish_init_stmt + instead of finish_for_init_stmt. + * cp-tree.h (finish_for_init_stmt): Rename to finish_init_stmt. + * decl.c (poplevel): Adjust a comment. + * init.c (build_vec_init): Call finish_init_stmt instead of + finish_for_init_stmt. + * name-lookup.c (pushdecl_maybe_friend_1): Adjust a comment. + * name-lookup.h (enum scope_kind): Likewise. + * parser.c (cp_parser_statement): Update commentary. + (cp_parser_init_statement_p): New function. + (cp_parser_selection_statement): Parse the optional init-statement. + (cp_parser_for): Call finish_init_stmt instead of finish_for_init_stmt. + (cp_parser_c_for): Likewise. + (cp_convert_range_for): Call finish_init_stmt instead of finish_for_init_stmt. + (cp_parser_range_for_member_function): Update commentary. + (cp_parser_iteration_statement): + (cp_parser_for_init_statement): Rename to cp_parser_init_statement. + * pt.c (tsubst_omp_for_iterator): Update commentary. + (tsubst_expr): Call finish_init_stmt instead of finish_for_init_stmt. + * semantics.c (finish_for_init_stmt): Rename to finish_init_stmt. + Update commentary. + +2016-10-04 Jason Merrill <jason@redhat.com> + + PR c++/77852 + * pt.c (do_class_deduction): Handle list-initialization. + (do_auto_deduction): Call it sooner. + (build_deduction_guide): Use tsubst_arg_types. + (rewrite_template_parm): Don't copy_type. + + PR c++/77775 + * constexpr.c (cxx_eval_component_reference): Use name matching + for PMFs. + + Implement P0091R2, Template argument deduction for class templates. + * parser.c (cp_parser_simple_type_specifier): Parse class placeholder. + Use the location of the beginning of the type-specifier. + (cp_parser_init_declarator): Parse deduction guide. + (cp_parser_diagnose_invalid_type_name): Mention class deduction. + (cp_parser_type_id_1): Don't accept class placeholder as template arg. + * cp-tree.h (CLASS_PLACEHOLDER_TEMPLATE): New. + * decl.c (grokdeclarator): Check for uninitialized auto here. + (start_decl_1): Not here. + (cp_finish_decl): Or here. Don't collapse a list when doing + class deduction. + (grokfndecl): Check deduction guide scope and body. + * error.c (dump_decl, dump_function_decl, dump_function_name): + Handle deduction guides. + * pt.c (make_template_placeholder, do_class_deduction): New. + (build_deduction_guide, rewrite_template_parm): New. + (dguide_name, dguide_name_p, deduction_guide_p): New. + (do_auto_deduction): Call do_class_deduction. + (splice_late_return_type, is_auto): Handle class placeholders. + (template_parms_level_to_args): Split from template_parms_to_args. + (tsubst_template_parms_level): Split from tsubst_template_parms. + * typeck2.c (build_functional_cast): Handle class placeholder. + +2016-10-04 Martin Sebor <msebor@redhat.com> + + PR c++/77804 + * init.c (warn_placement_new_too_small): Avoid assuming an array type + has a constant size. + +2016-10-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/77791 + * parser.c (cp_parser_lambda_declarator_opt): Only pedwarn + for C++11 on decls in the param_list. Test cxx_dialect < cxx14 before + the loop just once. + + * cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*, + CPTI_LANG_NAME_JAVA and CPTI_JCLASS. + (java_byte_type_node, java_short_type_node, java_int_type_node, + java_long_type_node, java_float_type_node, java_double_type_node, + java_char_type_node, java_boolean_type_node, lang_name_java, + jclass_node): Remove. + (enum languages): Remove lang_java. + (TYPE_FOR_JAVA): Remove. + (struct lang_type_class): Remove java_interface bit-field. + (TYPE_JAVA_INTERFACE): Remove. + (pragma_java_exceptions): Remove. + (check_java_method, build_java_class_ref): Remove prototypes. + * name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA. + * decl2.c (acceptable_java_type, check_java_method): Remove. + (import_export_decl): Remove TYPE_FOR_JAVA handling. + (build_java_method_aliases): Remove. + (c_parse_final_cleanups): Don't call build_java_method_aliases. + (possibly_inlined_p): Don't test pragma_java_exceptions. + * init.c (build_new_1): Remove TYPE_FOR_JAVA handling. + (build_java_class_ref): Remove. + * pt.c (maybe_new_partial_specialization, lookup_template_class_1, + instantiate_class_template_1): Don't copy TYPE_FOR_JAVA. + * except.c (eh_type_info): Remove java type handling. + (decl_is_java_type, choose_personality_routine): Remove. + (initialize_handler_parm): Don't call choose_personality_routine. + (expand_start_catch_block): Don't handle java types. + (build_throw): Likewise. + * cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions. + * typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA. + * call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE. + (java_iface_lookup_fn): Remove. + (build_java_interface_fn_ref): Remove. + * tree.c (cxx_attribute_table): Remove java_interface. + (handle_java_interface_attribute): Remove. + * lex.c (pragma_java_exceptions): Remove. + (init_cp_pragma): Don't register GCC java_exceptions pragma. + (handle_pragma_java_exceptions): Remove. + (retrofit_lang_decl): Don't handle lang_name_java. + * method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA. + * error.c (language_to_string): Don't handle lang_java. + * decl.c (record_builtin_java_type): Remove. + (initialize_predefined_identifiers): Remove Java. + (cxx_init_decl_processing): Remove java_*_type_node. + (cp_finish_decl): Don't handle TYPE_FOR_JAVA. + (grokfndecl): Likewise. + (check_special_function_return_type): Likewise. + (grokdeclarator): Don't set TYPE_FOR_JAVA. + (grokparms): Don't handle TYPE_FOR_JAVA. + (xref_basetypes): Likewise. + (check_function_type): Likewise. + (finish_constructor_body): Likewise. + * mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA + and java_*_type_node. + (write_bare_function_type): Don't handle TYPE_FOR_JAVA. + (write_java_integer_type_codes): Remove. + * class.c (add_method): Don't handle TYPE_FOR_JAVA. + (add_implicitly_declared_members, determine_key_method, + finish_struct_1): Likewise. + (push_lang_context): Don't handle lang_name_java. + +2016-10-03 Marek Polacek <polacek@redhat.com> + + Core 903 + * typeck.c (cp_build_binary_op): Pass original operands to + null_ptr_cst_p, not those after the default conversions. + +2016-10-03 Bernd Edlinger <bernd.edlinger@hotmail.de> + + * parser.c (cp_parser_condition): Fix a warning. + +2016-09-29 Jakub Jelinek <jakub@redhat.com> + + Implement P0001R1 - C++17 removal of register storage class specifier + * decl.c (cp_finish_decl): Diagnose register storage class + on vars except when used in GNU global or local register variable + extension. + (grokdeclarator): Diagnose register storage class on parameters. + * except.c (expand_start_catch_block): Set DECL_REGISTER only + after cp_finish_decl call. + +2016-09-29 Marek Polacek <polacek@redhat.com> + + * rtti.c (involves_incomplete_p): Add fall through comment. + +2016-09-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/77467 + * constexpr.c (enum constexpr_switch_state): New. + (struct constexpr_ctx): Add css_state field. + (label_matches): Add CTX and STMT arguments, remove I and + DEFAULT_LABEL. For CASE_LABEL_EXPR assert ctx->css_state != NULL, + handle default labels according to css_state. + (cxx_eval_statement_list): Remove statement skipping, label_matches + and default_label handling code. + (cxx_eval_loop_expr): Exit after first iteration even if + switches (jump_target). + (cxx_eval_switch_expr): Set up css_state field in ctx, if default + label has been seen in the body, but no cases matched, evaluate + the body second time. + (cxx_eval_constant_expression): Handle stmt skipping and label_matches + here. Handle PREDICT_EXPR. For MODIFY_EXPR or INIT_EXPR, assert + statement is not skipped. For COND_EXPR during skipping, don't + evaluate condition, just the then block and if still skipping at the + end also the else block. + (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer. + (is_sub_constant_expr): Likewise. + +2016-09-27 Jakub Jelinek <jakub@redhat.com> + + Implement P0018R3, C++17 lambda capture of *this by value as [=,*this] + * parser.c (cp_parser_lambda_introducer): Formatting fix. Pass + true instead of false as by_reference_p to add_capture for 'this'. + Parse '*this' simple-capture. + * lambda.c (build_capture_proxy): Handle '*this' capture by value. + (add_capture): Adjust function comment. For id == this_identifier, + treat by_reference_p as capturing '*this' by reference, i.e. 'this' + by value, and !by_reference_p as capturing '*this' by value. + (add_default_capture): For implicit 'this' capture, always pass + by_reference_p true rather than false. + + PR c++/77722 + * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also + functions that have just a STATEMENT_LIST instead of BIND_EXPR, or + BIND_EXPR with some statement rather than STATEMENT_LIST as body. + +2016-09-26 Nathan Sidwell <nathan@acm.org> + + * init.c (expand_default_init): Fix } indentation. + * method.c (process_subob_fn): Simplify control structure to + remove gotos. + (implicitly_declare_fn): Remove duplicated lambda ctor check. + +2016-09-26 Marek Polacek <polacek@redhat.com> + + PR c/7652 + * parser.c (cp_parser_storage_class_specifier_opt): Add + gcc_fallthrough. + (cp_parser_skip_to_end_of_template_parameter_list): Likewise. + (cp_parser_cache_defarg): Likewise. + (cp_parser_omp_for_cond): Likewise. + * semantics.c (finish_decltype_type): Likewise. + * typeck.c (structural_comptypes): Likewise. + (cp_build_binary_op): Likewise. + (cp_build_modify_expr): Likewise. + +2016-09-26 Marek Polacek <polacek@redhat.com> + + PR c/7652 + * constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH. + (potential_constant_expression_1): Likewise. + * constraint.cc (function_concept_check_p): Check fn for null. + * parser.c (cp_parser_expression_statement): Handle attribute + fallthrough. + (cp_parser_statement): Likewise. + (cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on + labels. + (cp_parser_std_attribute): Handle fallthrough attribute. + (cp_parser_check_std_attribute): Add %< %> quotes. + * pt.c (tsubst_copy_and_build): Handle internal functions. + (instantiation_dependent_scope_ref_p): Return if the expression is + null. + +2016-09-24 Marek Polacek <polacek@redhat.com> + + PR c/77490 + * typeck.c (cp_build_unary_op): Warn about bit not on expressions that + have boolean value. + +2016-09-23 Jakub Jelinek <jakub@redhat.com> + + Implement P0138R2, C++17 construction rules for enum class values + * cp-tree.h (is_direct_enum_init): Declare. + * decl.c (is_direct_enum_init): New function. + (reshape_init): Use it. + * typeck.c (convert_for_assignment): Likewise. + + * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to + make check-g++. + + * constexpr.c (call_stack): Remove unnecessary + = vNULL initialization of file scope vec. + + * name-lookup.c (store_bindings, store_class_bindings): Don't + initialize static local bindings_need_stored to vNULL. + + * typeck2.c (process_init_constructor_record): Use + CONSTRUCTOR_NELTS (...) instead of + vec_safe_length (CONSTRUCTOR_ELTS (...)). + * decl.c (reshape_init_r): Likewise. + (check_initializer): Likewise. + +2016-09-22 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71979 + * class.c (build_base_path): Allow for lookup_base returning + NULL_TREE. + +2016-09-21 Jason Merrill <jason@redhat.com> + + Core 903 + * call.c (null_ptr_cst_p): Check char_type_p. + +2016-09-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/77651 + * init.c (build_new_1): Don't suggest to use -faligned-new if + aligned_new_threshold is non-zero. + (type_has_new_extended_alignment): Change aligned_new_threshhold + to aligned_new_threshold. + * call.c (second_parm_is_size_t, aligned_allocation_fn_p, + aligned_deallocation_fn_p, build_op_delete_call): Likewise. + * decl.c (cxx_init_decl_processing): Likewise. + +2016-09-20 Jakub Jelinek <jakub@redhat.com> + + PR c++/77626 + * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on + FIELD_DECLs with error_mark_node type. Remove useless break; after + return. + + PR c++/77638 + * parser.c (cp_parser_template_declaration_after_parameter): For 2 + argument operator"" template set ok to false for + parm == error_mark_node. + + PR c++/77637 + * parser.c (cp_parser_std_attribute_list): Reject ... without + preceding attribute. + +2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de> + + PR c++/77434 + * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here. + +2016-09-16 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/77639 + * parser.c (cp_parser_class_head): When + processing_template_parmlist, don't assume that the + class-head may start an explicit specialization. + +2016-09-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/77482 + * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P + if DECL_LANG_SPECIFIC is non-NULL. Fix up formatting. + + PR c++/77338 + * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only + call is_really_empty_class on complete types. + + PR c++/77375 + * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any + TYPE_HAS_MUTABLE_P for any bases. + +2016-09-16 Jason Merrill <jason@redhat.com> + + * class.c (check_bases, set_one_vmethod_tm_attributes): Use + least_bit_hwi. + * decl.c (cxx_init_decl_processing): Use pow2p_hwi. + * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi. + +2016-09-14 Jakub Jelinek <jakub@redhat.com> + + PR c++/77549 + * name-lookup.c (consider_binding_level): Look through TREE_LIST + and OVERLOAD. + +2016-09-14 Marek Polacek <polacek@redhat.com> + + * typeck.c (cp_build_unary_op): Diagnose incrementing boolean + expressions. Tweak an error message. + +2016-09-14 Marek Polacek <polacek@redhat.com> + + * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to + bool. + * decl2.c (one_static_initialization_or_destruction): Use true instead + of 1. + * init.c (build_vec_init): Use false instead of 0. + * pt.c (tsubst_copy_and_build): Likewise. + * semantics.c (simplify_loop_decl_cond): Likewise. + * typeck.c (rationalize_conditional_expr): Likewise. + (cp_build_binary_op): Use true instead of 1. + (cp_build_unary_op): Change nonconvert parameter type to bool. Use true + instead of 1. + (build_unary_op): Change nonconvert parameter type to bool. + (unary_complex_lvalue): Use false instead of 0. + +2016-09-13 Jakub Jelinek <jakub@redhat.com> + + Implement P0028R4, C++17 using attribute namespaces without repetition + * parser.c (cp_parser_std_attribute): Add ATTR_NS argument. Diagnose + non-NULL ATTR_NS with scoped attribute token. Handle non-NULL + ATTR_NS with non-scoped attribute tokens. Allow named ops in + identifier after ::. + (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down + to cp_parser_std_attribute calls. + (cp_parser_std_attribute_spec): Parse optional C++17 + attribute-using-prefix, adjust grammar in function comment. + + PR c++/77553 + * constexpr.c (cxx_fold_pointer_plus_expression): New function. + (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR. + (cxx_eval_pointer_plus_expression): Remove. + (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't + call cxx_eval_pointer_plus_expression. + +2016-09-13 David Malcolm <dmalcolm@redhat.com> + + * parser.c (cp_parser_class_specifier_1): Update for renaming of + add_fixit_insert to add_fixit_insert_before. + (cp_parser_class_head): Likewise. + +2016-09-12 Bernd Edlinger <bernd.edlinger@hotmail.de> + + PR c++/77496 + * call.c (build_conditional_expr_1): Call warn_for_omitted_condop. + * class.c (instantiate_type): Look through the SAVE_EXPR. + +2016-09-09 Jason Merrill <jason@redhat.com> + + Implement P0035R4, C++17 new of over-aligned types. + * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE. + (align_type_node): New macro. + * call.c (build_operator_new_call): Handle C++17 aligned new. + (second_parm_is_size_t, build_op_delete_call): Likewise. + (non_placement_deallocation_fn_p): Likewise. Rename to + usual_deallocation_fn_p. + (aligned_allocation_fn_p, aligned_deallocation_fn_p): New. + * decl.c (cxx_init_decl_processing): Add aligned new support. + * init.c (type_has_new_extended_alignment): New. + (build_new_1): Handle aligned new. + * tree.c (vec_copy_and_insert): New. + +2016-09-02 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/77396 + * decl2.c (do_static_initialization_or_destruction): Only + call asan_dynamic_init_call if INITP is true. + +2016-09-01 Martin Sebor <msebor@redhat.com> + + * mangle.c: Increase buffer size to guarantee it fits the output + of the formatted function regardless of its arguments. + +2016-09-01 Marek Polacek <polacek@redhat.com> + + PR c/7652 + * error.c (dump_type): Fix falls through comment. + (dump_decl): Likewise. + (dump_expr): Likewise. + +2016-08-30 David Malcolm <dmalcolm@redhat.com> + + * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it + hint to ">>" within nested template argument list error. + +2016-08-30 David Malcolm <dmalcolm@redhat.com> + + * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace + rather than add_fixit_misspelled_id. + * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. + +2016-08-29 Jason Merrill <jason@redhat.com> + + PR c++/77379 + * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks. + (mangle_thunk): Add thunk parameter. + * method.c (finish_thunk): Pass it. + * cp-tree.h: Declare it. + +2016-08-15 Jason Merrill <jason@redhat.com> + + Avoid calling a trivial default constructor. + * class.c (default_ctor_p): New. + (in_class_defaulted_default_constructor): Use it. + (type_has_non_user_provided_default_constructor): Use it. + * call.c (build_over_call): Handle trivial default constructor. + * cp-tree.h: Declare default_ctor_p. + + PR c++/57728 + * pt.c (do_type_instantiation): Don't mess with non-user-provided + member functions. + +2016-08-25 Marek Polacek <polacek@redhat.com> + + * parser.c (cp_parser_binary_expression): Pass LHS to + warn_logical_not_parentheses. + +2016-08-18 Marek Polacek <polacek@redhat.com> + + PR c/7652 + * call.c (add_builtin_candidate): Add gcc_fallthrough. + * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise. + * parser.c (cp_parser_skip_to_end_of_statement): Likewise. + (cp_parser_cache_defarg): Likewise. + +2016-08-12 Marek Polacek <polacek@redhat.com> + + PR c/7652 + * call.c (add_builtin_candidate): Add FALLTHRU. + (build_integral_nontype_arg_conv): Adjust fall through comment. + (build_new_op_1): Add FALLTHRU. + (convert_like_real): Adjust fall through comment. + * class.c (fixed_type_or_null): Likewise. + * constexpr.c (cxx_eval_constant_expression): Likewise. + (potential_constant_expression_1): Likewise. Add FALLTHRU. + * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment. + (cp_fold): Add FALLTHRU. + * cvt.c (build_expr_type_conversion): Adjust fall through comment. + * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU. + (pp_cxx_qualified_id): Likewise. + (cxx_pretty_printer::constant): Adjust fall through comment. + (cxx_pretty_printer::primary_expression): Add FALLTHRU. + (pp_cxx_pm_expression): Adjust fall through comment. + (cxx_pretty_printer::expression): Add FALLTHRU. + (cxx_pretty_printer::declaration_specifiers): Reformat code. + (pp_cxx_type_specifier_seq): Adjust fall through comment. + (pp_cxx_ptr_operator): Likewise. Add FALLTHRU. + * error.c (dump_type): Adjust fall through comment. + (dump_decl): Likewise. + * mangle.c (write_type): Likewise. + * method.c (synthesized_method_walk): Add FALLTHRU. + * name-lookup.c (arg_assoc_type): Likewise. + * parser.c (cp_lexer_print_token): Adjust fall through comment. + (cp_parser_primary_expression): Add FALLTHRU. + (cp_parser_operator): Likewise. + * pt.c (find_parameter_packs_r): Likewise. + (tsubst_aggr_type): Adjust fall through comment. + * semantics.c (finish_omp_clauses): Add FALLTHRU. + * tree.c (lvalue_kind): Likewise. + +2016-08-12 Alexandre Oliva <aoliva@redhat.com> + + PR debug/63240 + * cp-objcp-common.c (cp_function_decl_defaulted): New. + (cp_function_decl_explicit_p): Const_tree-ify. + (cp_function_decl_deleted_p): Likewise. + * cp-objcp-common.h (cp_function_decl_defaulted): Declare. + (cp_function_decl_explicit_p): Const_tree-ify. + (cp_function_decl_deleted_p): Likewise. + (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine. + +2016-08-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/72868 + * constexpr.c (label_matches): Handle case range expressions. + +2016-08-11 Jason Merrill <jason@redhat.com> + + PR c++/73456 + * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION. + +2016-08-10 Jason Merrill <jason@redhat.com> + + Implement C++17 constexpr if. + * cp-tree.h (IF_STMT_CONSTEXPR_P): New. + * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it. + * parser.h (struct cp_parser): Add in_discarded_stmt field. + * parser.c (cp_parser_selection_statement): Handle 'if constexpr'. + (cp_parser_jump_statement): Avoid deducing from a discarded return. + * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if. + * semantics.c (begin_if_stmt): Set the binding level this_entity. + (finish_if_stmt_cond): Require the condition of a + constexpr if to be constant. + * decl.c (level_for_constexpr_if): New. + (named_label_entry): Add in_constexpr_if field. + (poplevel_named_label_1): Set it. + (check_goto): Check it. + (check_previous_goto_1): Check level_for_constexpr_if. + +2016-08-09 Jason Merrill <jason@redhat.com> + + PR c++/68703 + * decl2.c (any_dependent_type_attributes_p): New. + * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it. + * semantics.c (finish_id_expression): Check it. + * typeck.c (finish_class_member_access_expr): Check it. + + PR c++/71712 + * class.c (check_abi_tags): Don't duplicate tags for conversion ops. + + Adjust mangling of ABI tags on class template member functions. + * class.c (missing_abi_tags): New. + (check_abi_tags): Don't check template. Add just_checking mode. + * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New. + (sorted_abi_tags): Split out from write_abi_tags. + (struct releasing_vec): New. + (write_unqualified_name): Only look for the primary + template for types. Implement backward compatibility. + + PR c++/72849 + * constexpr.c (cxx_eval_constant_expression): Check + COMPLETE_TYPE_P before calling is_really_empty_class. + * class.c (is_really_empty_class): Don't call complete_type. + + PR c++/56701 + * typeck.c (cp_build_addr_expr_1): Remove special *this handling. + +2016-08-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/72809 + * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for + builtin aggregate types without TYPE_BINFO. + +2016-08-08 Jason Merrill <jason@redhat.com> + + Implement C++17 constexpr lambda. + * class.c (finalize_literal_type_property): Handle lambdas. + * constexpr.c (is_valid_constexpr_fn): Likewise. No longer static. + (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle + lambdas. + (cxx_eval_constant_expression): Handle capture proxy. + (var_in_constexpr_fn): Don't check for C++14. + (var_in_maybe_constexpr_fn): New. + (potential_constant_expression_1): Use it. Check DECL_EXPR for + declarations not allowed in constexpr function. Handle + STATIC_ASSERT, RANGE_FOR_STMT. + * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn. + (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members. + * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P. + (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location. + (lambda_static_thunk_p): New. + * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR. + (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator. + (cp_parser_decl_specifier_seq): Handle it. + (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq. + * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P. + (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P. + * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS. + (dump_expr) [FUNCTION_DECL]: Pass it. + +2016-08-08 Jason Merrill <jason@redhat.com> + + PR c++/67131 + * class.c (is_really_empty_class): Call complete_type. + * constexpr.c (cxx_eval_constant_expression): Check + is_really_empty_class. + (potential_constant_expression_1): Likewise. Check for error type. + +2016-08-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/58706 + * parser.c: Include tree-iterator.h. + (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init + to FOR_BLOCK. + (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK + entries. + +2016-08-06 Jonathan Wakely <jwakely@redhat.com> + + * call.c (convert_like_real): Harmonize diagnostics for invalid + reference binding. + +2016-08-05 Martin Sebor <msebor@redhat.com> + + * constexpr.c (cxx_eval_store_expression): Remove hyphen from + the spelling of "constant-expression" in diagnostic messages + for consistency. + (cxx_eval_constant_expression): Same. + (cxx_eval_outermost_constant_expr): Same. + (potential_constant_expression_1): Same. + +2016-08-05 Nathan Sidwell <nathan@acm.org> + + PR c++/68724 + * pt.c (unify): TRAIT_EXPR is an expr. + +2016-08-04 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/72800 + * lambda.c (add_capture): Check lambda_capture_field_type return + value for error_mark_node. + +2016-08-04 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/72759 + * pt.c (tsubst_qualified_id): Return error_mark_node if + template_args is error_mark_node. + +2016-08-04 Jason Merrill <jason@redhat.com> + + PR c++/72415 + * pt.c (tsubst_pack_expansion): Pull a single pack expansion out + of the TREE_VEC. + + * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P. + (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS. + * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c, + name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust. + + PR c++/72796 + * typeck.c (finish_class_member_access_expr): Avoid stripping + SCOPE_REF to dependent base. + +2016-08-04 Thomas Schwinge <thomas@codesourcery.com> + + * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics. + (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics. + (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine): + Simplify code, and improve diagnostics. + (cp_parser_oacc_routine): Likewise. Move pragma context + checking... + (cp_parser_pragma): ... here. + + * parser.h (struct cp_omp_declare_simd_data): New. + (struct cp_parser): Use it for oacc_routine member. + * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine) + (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine): + Use it. Simplify code. + (cp_parser_new): Initialize all members pointing to special + parsing data structures. + (cp_parser_cilk_simd_fn_vector_attrs): Initialize + parser->cilk_simd_fn_info->clauses. + (cp_parser_omp_declare_simd): Initialize + parser->omp_declare_simd->clauses. + (cp_parser_late_parsing_omp_declare_simd): Simplify code. + +2016-08-04 Marek Polacek <polacek@redhat.com> + + PR c++/70229 + * constexpr.c (check_constexpr_ctor_body_1): Allow typedef + declarations. + +2016-08-01 Jason Merrill <jason@redhat.com> + + * mangle.c (mangle_decl): Warn about mangled name change even if + DECL_REALLY_EXTERN. + + * mangle.c (get_abi_tags): New. + (find_substitution, write_unqualified_name, write_abi_tags) + (maybe_check_abi_tags): Use it. + + * mangle.c (mangle_decl): Fix mangled name change warning. + + PR c++/72766 + * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy + of nelts. + * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in + C++11 and up. + +2016-07-30 Martin Sebor <msebor@redhat.com> + + PR c++/60760 + PR c++/71091 + * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions + involving null pointers. + (cxx_eval_component_reference): Reject null pointer dereferences. + (cxx_eval_indirect_ref): Reject indirecting through null pointers. + (cxx_eval_constant_expression): Reject invalid expressions involving + null pointers. + +2016-07-29 Marek Polacek <polacek@redhat.com> + + PR c/71926 + * semantics.c (maybe_convert_cond): Use the location of COND for the + parentheses warning. + +2016-07-29 Jason Merrill <jason@redhat.com> + + * decl.c (build_enumerator): Tweak diagnostic. + + PR c++/72457 + * init.c (expand_aggr_init_1): Only handle value-init of bases. + * constexpr.c (build_data_member_initialization): Handle multiple + initializers for the same field. + +2016-07-28 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71665 + * decl.c (build_enumerator): Check the type of the enumerator before + calling cxx_constant_value. + +2016-07-27 Jason Merrill <jason@redhat.com> + + PR c++/71747 + * pt.c (get_partial_spec_bindings): Replace tparms and spec_args + parameters with spec_tmpl. Call push_tinst_level. + (most_specialized_partial_spec): Adjust. + (more_specialized_partial_spec): Adjust. + +2016-07-25 Jason Merrill <jason@redhat.com> + + PR c++/65970 + * cp-gimplify.c (genericize_cp_loop): Revert location change. + + PR c++/71837 + * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST. + (build_lambda_object): Call build_x_compound_expr_from_list. + * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise. + + PR c++/71833 + PR c++/54440 + * pt.c (coerce_template_parameter_pack): Fix logic for + pack index. + + PR c++/65970 + * constexpr.c (cxx_eval_loop_expr): Count iterations. + * cp-gimplify.c (genericize_cp_loop): Use start_locus even for + infinite loops. + + PR c++/71972 + * constexpr.c (cxx_eval_array_reference): Handle looking for the + value of an element we're currently modifying. + +2016-07-24 Jason Merrill <jason@redhat.com> + + PR c++/71515 + * pt.c (resolve_typename_type): Try to avoid calling + currently_open_class. + +2016-07-23 Jason Merrill <jason@redhat.com> + + PR c++/66617 + * call.c (add_list_candidates): Handle VTT parm. + (build_new_method_call_1): Likewise. + + PR c++/55922 + PR c++/63151 + * init.c (expand_aggr_init_1): Handle list-initialization from {}. + + PR c++/70709 + * class.c (walk_subobject_offsets): Handle 0-length array. + + PR c++/70778 + * pt.c (tsubst): Also substitute into the template of a + BOUND_TEMPLATE_TEMPLATE_PARM. + + PR c++/71738 + * pt.c (lookup_template_class_1): Handle getting template from tsubst. + + PR c++/71350 + * decl.c (reshape_init_r): Check complain for missing braces warning. + +2016-07-22 Jason Merrill <jason@redhat.com> + + PR c++/71576 + * call.c (convert_like_real): Use lvalue_kind. + + PR c++/71748 + PR c++/52746 + * pt.c (tsubst_baselink): Call + adjust_result_of_qualified_name_lookup for unqualified + destructors. + +2016-07-21 Jason Merrill <jason@redhat.com> + + PR c++/69223 + * semantics.c (apply_deduced_return_type): Call + complete_type_or_else before building the new RESULT_DECL. + + PR c++/71274 + * decl2.c (maybe_instantiate_decl): Split out from mark_used. + (decl_constant_var_p): Use it instead. + + PR c++/71630 + * pt.c (instantiate_decl): Fix pattern_defined for namespace scope + variable templates. + + PR c++/71913 + * call.c (unsafe_copy_elision_p): It's OK to elide when + initializing an unknown object. + + * call.c (build_over_call): Check unsafe_copy_elision_p even for + trivial constructors. + * method.c (do_build_copy_constructor): Don't copy tail padding + even in a trivial constructor. + +2016-07-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/71728 + * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>: + Replace assert with test, return false if the goto isn't break + or continue. Formatting fix. + +2016-07-21 Richard Biener <rguenther@suse.de> + + * vtable-class-hierarchy.c (vtv_generate_init_routine): Set + DECL_IGNORED_P. + +2016-07-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/71941 + * cp-gimplify.c (cp_genericize): For nested cp_genericize calls + save/restore bc_label array. + +2016-07-21 Jason Merrill <jason@redhat.com> + + PR c++/70781 + * parser.c (cp_parser_lambda_expression): Unset OK if there was an + error parsing the lambda-declarator. + + PR c++/71896 + * constexpr.c (cxx_eval_binary_expression): Handle comparison + between lowered and unlowered PTRMEM_CST. + + PR c++/65168 + * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr. + Don't set c_inhibit_evaluation_warnings. + + PR c++/71121 + * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value. + +2016-07-21 Andrew Sutton <andrew.n.sutton@gmail.com> + Jason Merrill <jason@redhat.com> + + Improving concepts performance and diagnostics. + PR c++/67565 + PR c++/67579 + PR c++/71843 + * cp-tree.def (CHECK_CONSTR): New. + * cp-tree.h (CHECK_CONSTR_CONCEPT): New. + (CHECK_CONSTR_ARGS): New. + * constraint.cc (make_predicate_constraint): Remove in favor of + normalize_expression. + (resolve_constraint_check): Actually return error_mark_node when + resolution fails. + (resolve_variable_concept_check): Perform coercion as if processing + a template. Also return errors on resolution failure. + (lift_*): Remove all of these functions. Don't unnecessarily inline + concepts. + (learn_*): Add facilities to memoize implications for subsumption + during normalization. + (expanding_concept): New. + (expand_concept): New. Return the inlined and normalized definition + of a concept when needed. + (transform_*, xform_*): Rename to normalize_* to better reflect the + responsibility of those functions. + (normalize_template_id_expression): Check for non-boolean operands + when possible. Generate check constraints instead of normal variable + references. + (normalize_call_expression): Report errors when resolution fails. + (check_for_logical_overloads): Rewrite this check to more accurately + report the error. + (normalize_atom): Check for overloaded calls and invalid types before + determining if the expression refers to a concept. + (build_constraints): Don't cache normalized constraints or decomposed + assumptions. + (finish_shorthand_constraint): Return a normalized expression instead + of a predicate constraint. + (finish_template_introduction): Same. + (placeholder_extract_concept_and_args): Rewrite this since we only + ever get check constraints here. + (equivalent_placeholder_constraints): Rewrite in terms of check + constraints, and handle error_mark_nodes correctly. + (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr) + (tsubst_implicit_conversion_constr) + (tsubst_argument_deduction_constr, tsubst_exception_constr) + (tsubst_parameterized_constraint, tsubst_constraint): New. + (tsbust_conjunection): Replace with tsubst_logical_operator and + actually generate the right kind of constraint. + (tsubst_requirement_body): Reverse the order of substituted arguments + so that they appear in the order written (helps diagnostics). + (satisfy_check_constraint): New. + (satisfy_conjunction): Simplify. + (satisfy_disjunction): Same. + (satisfy_constraint_1): Handle check constraints. + (eval_constr): New (private) global state. + (evaluating_constraints_sentinel): New. Manages eval_constr. + (satisfy_constraint): Add timing variables. + (satisfy_associated_constraints): Add hooks for memoization. + (evaluate_function_concept): Build a check constraint instead of + normalizing its definition. + (evaluate_variable_concept): Same. + (evaluate_constraint_expression): Normalize, but in the current + declaration processing context. + (evaluating_constraints_p): New. + (elide_constraint_failure_p): Actually emit constraint_thresh errors. + (diagnose_*): Remove artificial indentation. Add a new parameter to + each that tracks the current (complete) constraint prior to any + substitutions. + (diagnose_expression): Removed. + (diagnose_call_expression): Same. + (diagnose_template_id): Same. + (diagnose_template_id): New. + (diagnose_logical_constraint): New. + (diagnose_expression_constraint): Show the original expression. + (diagnose_type_constraint): Show the original type. + (diagnose_implicit_conversion_constraint): Be specific about + failures, don't re-diagnose a known-to-be-failed substitutions, + and manage elisions properly. + (diagnose_argument_deduction_constraint): Same. + (diagnose_exception_constraint): Same. + (diagnose_parameterized_constraint): Same. + (constraint_p): Allow EXPR_PACK_EXPANSION. + * logic.cc (next_by_distance): Removed. No longer used. + (any_p): Renamed from any_of. + (term_entry, term_hasher): New. + (term_list): Rewrite to include a hash table for quick lookup. + Also, make less stateful. + (proof_state): Extend to allow goals to be discharged once + satisfied. + (non_atomic_constraint_p): New. + (any_non_atomic_constraints_p): New. + (...rest...): Previous implementation completely replaced with an + iterative algorithm that opportunistically prunes the search space + before committing to using more memory. + * parser.c: (cp_parser_type_parameter): Normalize constraints. + (cp_parser_explicit_template_declaration): Same. + * pt.c: (finish_template_variable): Be less redundant with this error + message. + (template_args_equal): No longer static. + (tsubst_decl): Don't try to find specializations of variables that + have already been instantiated. + (build_non_dependent_expr): Avoid infinite recursion during concept + expansion. + (make_constrained_auto): Normalize constraints. + (do_auto_deduction): When doing auto deduction from a + partial-concept-id, be sure to include the explicit args checking + the constraints. + (constraint_sat_*): New. Memoize satisfied constraints. + (concept_spec_*): New. Memoize expressions associated with a concept + specialization. + (constraint_memos, concept_memos): New. + (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New. + (lookup_concept_satisfaction, memoize_concept_satisfaction): New. + (get_concept_expansion, save_concept_expansion): New. + (hash_subsumption_args): New. + (comp_subsumption_args): New. + (subsumption_*): New. Memoize parts of the subsumption relation. + (lookup_subsumption_result, save_subsumption_result): New. + (init_constraint_processing): Initialize memo tables. + (get_constraints): Shortcut if !flag_concepts. + * decl.c (grokfndecl): Normalize constraints. + * error.c (dump_simple_decl): Print "concept" when appropriate. + (dump_function_decl): Same. + (dump_template_decl): Don't write requirements when we're not + printing the header. + (dump_expr): Handle fold expressions. + * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle + fold expressions. + (get_fold_operator): New. + (pp_cxx_unary_left_fold_expression): New. + (pp_cxx_unary_right_fold_expression): New. + (pp_cxx_binary_fold_expression): New. + (pp_cxx_check_constraint): New. + (pp_cxx_*_constraint): Rewrite the grammar of internal constraints + to make them easier to read when debugging. + * search.c (accessible_p): Don't shortcut when evaluating constraints. + * tree.c (cp_tree_equal): Handle CHECK_CONSTR. + +2016-07-20 David Malcolm <dmalcolm@redhat.com> + + PR c/70339 + PR c/71858 + * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h, + and parser.h. + (suggest_alternatives_for): If no candidates are found, try + lookup_name_fuzzy and report if if finds a suggestion. + (consider_binding_level): New function. + (lookup_name_fuzzy) New function. + * parser.c: Include gcc-rich-location.h. + (cp_lexer_next_token_is_decl_specifier_keyword): Move most of + logic into... + (cp_keyword_starts_decl_specifier_p): ...this new function. + (cp_parser_diagnose_invalid_type_name): When issuing + "does not name a type" errors, attempt to make a suggestion using + lookup_name_fuzzy. + * parser.h (cp_keyword_starts_decl_specifier_p): New prototype. + * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject + types that are not CLASS_TYPE_P, rather than rejecting individual + tree codes. + +2016-07-20 Jakub Jelinek <jakub@redhat.com> + + PR c++/71909 + * parser.c (cp_parser_save_member_function_body): Consume + __transaction_relaxed or __transaction_atomic with optional + attribute. Only skip catch with block if try keyword is seen. + + PR c++/50060 + * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval + when evaluating call arguments. Use fold_builtin_call_array instead + of fold_build_call_array_loc, return t if it returns NULL. Otherwise + check the result with potential_constant_expression and call + cxx_eval_constant_expression on it. + +2016-07-19 Jason Merrill <jason@redhat.com> + + PR c++/67164 + * pt.c (iterative_hash_template_arg, template_args_equal): Don't + handle ARGUMENT_PACK_SELECT. + +2016-07-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/70869 + PR c++/71054 + * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change. + * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL + non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and + DECL_SIZE_UNIT. + + PR c++/71835 + * call.c (build_op_call_1): Use convert_like_with_context only + if cand->fn is a decl. + + PR c++/71828 + * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>: + For lval don't use cxx_eval_unary_expression and instead recurse + and if needed rebuild the reference. + + PR c++/71826 + * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P. + + PR c++/71822 + * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively + fold *expr_p before genericizing it. + + PR c++/71871 + * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change. + +2016-07-15 Jason Merrill <jason@redhat.com> + + PR c++/71495 + * call.c (convert_like_real): Mask complain. + * semantics.c (perform_koenig_lookup): Likewise. + + PR c++/71092 + * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph + threw away DECL_SAVED_TREE. + + PR c++/71117 + Core 2189 + * call.c (add_template_conv_candidate): Disable if there are + viable candidates. + + PR c++/71511 + * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE. + + PR c++/71513 + * pt.c (tsubst_attributes): Fix loop logic. + + PR c++/71604 + PR c++/54430 + * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly. + (cp_parser_simple_declaration): Diagnose type definition in + for-range-declaration. + + PR c++/71711 + * operators.def: Add *_FOLD_EXPR. + * cp-tree.h (FOLD_EXPR_P): Parenthesize. + * mangle.c (write_expression): Handle fold-expressions. + * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold) + (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle + partial instantiation. + + PR c++/71814 + * mangle.c (write_expression): Handle sizeof... an argument pack. + + PR c++/71718 + * pt.c (push_tinst_level_loc): Set at_eof before fatal_error. + + PR c++/70824 + * init.c (constant_value_1): Don't instantiated DECL_INITIAL of + artificial variables. + +2016-07-15 Cesar Philippidis <cesar@codesourcery.com> + + * parser.c (cp_parser_oacc_declare): Don't scan for + GOMP_MAP_POINTER. + * semantics.c (handle_omp_array_sections): Mark data clauses with + GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having + zero-length subarrays. + +2016-07-11 Jason Merrill <jason@redhat.com> + + * decl.c (store_parm_decls): Remove check for void parm. + +2016-07-08 Jason Merrill <jason@redhat.com> + + * cp-tree.h: Unpoison lvalue_p. + * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c, + tree.c, typeck.c, typeck2.c: Use lvalue_p instead of + real_lvalue_p. + + * tree.c (obvalue_p): Rename from lvalue_p. + (lvalue_p): Define for c-common. + * call.c, cp-tree.h, cvt.c, init.c: Adjust. + * typeck.c: Adjust. + (cp_build_addr_expr_1): Remove obsolete code. + + * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p. + * call.c, cp-tree.h, typeck.c: Adjust. + + * lambda.c (maybe_add_lambda_conv_op): Fix null object argument. + + P0145R2: Refining Expression Order for C++. + * cp-gimplify.c (lvalue_has_side_effects): New. + (cp_gimplify_expr): Implement assignment ordering. + * call.c (op_is_ordered, build_over_call): Adjust for + -fargs-in-order renaming to -fstrong-eval-order. + * cp-gimplify.c (cp_gimplify_expr): Likewise. + +2016-07-07 Jakub Jelinek <jakub@redhat.com> + Kai Tietz <ktietz70@googlemail.com> + + PR c++/70869 + PR c++/71054 + * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static + artificial vars, genericize their initializers. + +2016-07-05 David Malcolm <dmalcolm@redhat.com> + + PR c++/62314 + * parser.c (cp_parser_class_specifier_1): When reporting + missing semicolons, use a fixit-hint to suggest insertion + of a semicolon immediately after the closing brace, + offsetting the reported column accordingly. + +2016-07-04 Jan Beulich <jbeulich@suse.com> + + * lang-specs.h ("@c++-header"): Conditionalize "-o". + +2016-06-29 Thomas Schwinge <thomas@codesourcery.com> + + * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>: + Move pragma context checking into... + (cp_parser_omp_cancellation_point): ... here, and improve + diagnostic messages. + * semantics.c (finish_omp_cancel, finish_omp_cancellation_point): + Improve diagnostic messages. + +2016-06-28 Jakub Jelinek <jakub@redhat.com> + + * Make-lang.in: Don't cat ../stage_current if it does not exist. + +2016-06-24 Jason Merrill <jason@redhat.com> + + P0145R2: Refining Expression Order for C++. + * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS. + + * tree.c (get_target_expr_sfinae): Handle bit-fields. + (build_target_expr): Call mark_rvalue_use. + +2016-06-24 Jakub Jelinek <jakub@redhat.com> + + * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p. + (build_over_call): For magic == 3, do no conversion only on 3rd + argument. + +2016-06-23 Andi Kleen <ak@linux.intel.com> + + * Make-lang.in: Add support for autofdo. + +2016-06-21 Jason Merrill <jason@redhat.com> + + * constraint.cc (constraints_satisfied_p): Keep as many levels of + args as our template has levels of parms. + + * pt.c (template_parm_outer_level, uses_outer_template_parms): New. + (type_dependent_expression_p): Use uses_outer_template_parms. + +2016-06-20 David Malcolm <dmalcolm@redhat.com> + + * parser.c (cp_parser_string_literal): Convert non-standard + concatenation error to directly use a rich_location, and + use that to add the location of the first literal to the + diagnostic. + +2016-06-17 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (validate_constexpr_redeclaration): Change pair of errors + to error + inform. + * error.c (dump_function_decl): Save the constexpr specifier too. + +2016-06-17 Jakub Jelinek <jakub@redhat.com> + + * tree.c (builtin_valid_in_constant_expr_p): Test for + DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just + DECL_BUILT_IN. + (bot_manip): Likewise. + * call.c (magic_varargs_p): Likewise. + +2016-06-17 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (grokfndecl): Change pair of errors to error + inform. + +2016-06-17 Jason Merrill <jason@redhat.com> + + PR c++/71209 + * typeck.c (finish_class_member_access_expr): Avoid "not a base" + warning when there are dependent bases. + +2016-06-17 Jakub Jelinek <jakub@redhat.com> + + * semantics.c (handle_omp_array_sections_1): Don't ICE when + processing_template_decl when checking for bitfields and unions. + Look through REFERENCE_REF_P as base of COMPONENT_REF. + (finish_omp_clauses): Look through REFERENCE_REF_P even for + array sections with COMPONENT_REF bases. + +2016-06-16 Jakub Jelinek <jakub@redhat.com> + + * parser.c (cp_parser_omp_var_list_no_open): Call + convert_from_reference before cp_parser_postfix_dot_deref_expression. + * semantics.c (finish_omp_clauses): Don't ICE when + processing_template_decl when checking for bitfields and unions. + Look through REFERENCE_REF_P as base of COMPONENT_REF. + +2016-06-15 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and + "%qF" in warning_at instead of "%q+F" in warning. + (check_redeclaration_exception_specification): Likewise in pedwarn + (and error, inform, for consistency). + * call.c (joust): Likewise. + +2016-06-15 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70202 + * decl.c (xref_basetypes): Revert r117839 changes; add fix-up + code at the end of the for loop; also revert r159637 changes, + add back the gcc_assert. + * cp-tree.h (xref_basetypes): Adjust declaration. + * parser.c (cp_parser_class_head): Adjust xref_basetypes call. + +2016-06-14 David Malcolm <dmalcolm@redhat.com> + + * search.c: Include spellcheck-tree.h rather than spellcheck.h. + +2016-06-14 David Malcolm <dmalcolm@redhat.com> + + * typeck.c: Include "gcc-rich-location.h". + (finish_class_member_access_expr): Simplify fixit code by + using gcc_rich_location::add_fixit_misspelled_id. + +2016-06-14 Jason Merrill <jason@redhat.com> + + P0145R2: Refining Expression Order for C++. + * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS) + (CALL_EXPR_REVERSE_ARGS): New. + * call.c (build_new_op_1): Set them. + (extract_call_expr, op_is_ordered): New. + (build_over_call): Set CALL_EXPR_ORDERED_ARGS. + * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags. + * pt.c (tsubst_copy_and_build): Copy new flags. + * semantics.c (simplify_aggr_init_expr): Likewise. + * tree.c (build_aggr_init_expr): Likewise. + (build_min_non_dep_op_overload): Likewise. + +2016-06-14 Jakub Jelinek <jakub@redhat.com> + + PR c++/71528 + * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external + olddecl vars, preserve their TREE_READONLY bit. + + PR c++/71516 + * decl.c (complete_vars): Handle gracefully type == error_mark_node. + +2016-06-14 Paolo Carlini <paolo.carlini@oracle.com> + + * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init. + +2016-06-13 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (grokdeclarator): Fix typo in pedwarn text. + +2016-06-10 Thomas Schwinge <thomas@codesourcery.com> + + PR c/71381 + * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>: + Loosen checking. + +2016-06-09 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71465 + Revert: + 2016-06-04 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70202 + * parser.c (cp_parser_class_head): When xref_basetypes fails and + emits an error do not zero the type. + +2016-06-08 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (maybe_deduce_size_from_array_init): Use + DECL_SOURCE_LOCATION in error_at. + (layout_var_decl): Likewise. + (check_array_initializer): Likewise. + (check_initializer): Likewise. + (duplicate_decls, check_elaborated_type_specifier): Tidy. + +2016-06-08 Martin Sebor <msebor@redhat.com> + Jakub Jelinek <jakub@redhat.com> + + PR c++/70507 + PR c/68120 + * constexpr.c: Include gimple-fold.h. + (cxx_eval_internal_function): New function. + (cxx_eval_call_expression): Call it. + (potential_constant_expression_1): Handle integer arithmetic + overflow built-ins. + * tree.c (builtin_valid_in_constant_expr_p): Handle + BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P. + +2016-06-08 Paolo Carlini <paolo.carlini@oracle.com> + + * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the + return value of tsubst_aggr_type for error_mark_node. + +2016-06-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/71442 + * pt.c (tsubst_copy): Only set TREE_USED on DECLs. + +2016-06-06 Jakub Jelinek <jakub@redhat.com> + Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70847 + PR c++/71330 + PR c++/71393 + * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL + right after cp_fold call if cp_fold has returned the same stmt + already in some earlier cp_fold_r call. + (cp_fold_function): Add pset automatic variable, pass its address + to cp_walk_tree. + +2016-06-04 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70202 + * parser.c (cp_parser_class_head): When xref_basetypes fails and + emits an error do not zero the type. + +2016-06-03 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/27100 + * decl.c (duplicate_decls): Properly copy the + DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and + DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL. + +2016-06-03 Chung-Lin Tang <cltang@codesourcery.com> + + * semantics.c (finish_omp_clauses): Mark OpenACC reduction + arguments as addressable when async clause exists. + +2016-06-02 Jan Hubicka <jh@suse.cz> + + * cp-gimplify.c (genericize_continue_stmt): Force addition of + predict stmt. + +2016-06-02 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (xref_tag_1): Change pairs of errors to error + inform. + (start_enum): Likewise. + * parser.c (cp_parser_class_head): Likewise. + +2016-06-02 Jakub Jelinek <jakub@redhat.com> + + PR c++/71372 + * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression + is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS + and TREE_THIS_VOLATILE flags. For ARRAY_REF and ARRAY_RANGE_REF, copy + over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags + to the newly built tree. + +2016-05-31 Jason Merrill <jason@redhat.com> + + * pt.c (instantiate_decl): Avoid recalculation. + + PR c++/60095 + PR c++/69515 + PR c++/69009 + * pt.c (instantiate_template_1): Don't put the partial + specialization in DECL_TI_TEMPLATE. + (partial_specialization_p, impartial_args): Remove. + (regenerate_decl_from_template): Add args parm. + (instantiate_decl): Look up the partial specialization again. + + PR c++/71227 + * pt.c (check_explicit_specialization): Give better diagnostic about + specializing a hidden friend. + +2016-05-31 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71248 + * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION + to obtain correct locations; avoid redundant diagnostics on + out-of-class definitions. + +2016-05-30 Martin Sebor <msebor@redhat.com> + + PR c++/71306 + * init.c (warn_placement_new_too_small): Handle placement new arguments + that are elements of arrays more carefully. Remove a pointless loop. + +2016-05-30 Jakub Jelinek <jakub@redhat.com> + + PR c++/71349 + * parser.c (cp_parser_omp_for): Don't disallow nowait clause + when combined with target construct. + (cp_parser_omp_parallel): Pass cclauses == NULL as last argument + to cp_parser_omp_all_clauses. + +2016-05-30 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71238 + * lex.c (unqualified_name_lookup_error): Take a location too. + (unqualified_fn_lookup_error): Take a cp_expr. + * cp-tree.h (unqualified_name_lookup_error, + unqualified_fn_lookup_error): Adjust declarations. + * semantics.c (perform_koenig_lookup): Adjust + unqualified_fn_lookup_error call, pass the location of + the identifier too as part of a cp_expr. + +2016-05-30 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71099 + * parser.c (cp_parser_function_specifier_opt): Use current_class_type + to improve the diagnostic about wrong uses of 'virtual'. + +2016-05-29 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/71105 + * lambda.c (maybe_add_lambda_conv_op): Early return also when + LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE. + +2016-05-28 Ville Voutilainen <ville.voutilainen@gmail.com> + + Revert: + PR c++/69855 + * name-lookup.c (pushdecl_maybe_friend_1): Push local function + decls into the global scope after stripping template bits + and setting DECL_ANTICIPATED. + +2016-05-27 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/60385 + * name-lookup.c (push_namespace): Return bool, false when pushdecl + fails. + * name-lookup.h (push_namespace): Adjust declaration. + * parser.c (cp_parser_namespace_definition): Check push_namespace + return value. + +2016-05-27 Ville Voutilainen <ville.voutilainen@gmail.com> + + PR c++/69855 + * name-lookup.c (pushdecl_maybe_friend_1): Push local function + decls into the global scope after stripping template bits + and setting DECL_ANTICIPATED. + +2016-05-26 Jakub Jelinek <jakub@redhat.com> + + * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn + if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive. + +2016-05-26 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70822 + PR c++/70106 + * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to + SCOPE_REFs too. + * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set + on the qualified_id then propagate it to the resulting + expression. + (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs + too. + * semantics.c (force_paren_expr): If given a SCOPE_REF, just set + its REF_PARENTHESIZED_P flag. + +2016-05-25 Jason Merrill <jason@redhat.com> + + PR c++/71173 + PR c++/70522 + * cp-tree.h (enum tag_types): Add scope_type. + * parser.c (cp_parser_class_name): Use scope_type. + (prefer_type_arg): Handle scope_type. + (cp_parser_lookup_name): Use prefer_type_arg. + * name-lookup.c (lookup_qualified_name): Change bool is_type_p to + int prefer_type, use lookup_flags. + * name-lookup.h: Adjust. + +2016-05-24 Cesar Philippidis <cesar@codesourcery.com> + + * parser.c (cp_parser_oacc_declare): Add support for + GOMP_MAP_FIRSTPRIVATE_POINTER. + * semantics.c (handle_omp_array_sections_1): Replace bool is_omp + argument with enum c_omp_region_type ort. Don't privatize OpenACC + non-static members. + (handle_omp_array_sections): Replace bool is_omp argument with enum + c_omp_region_type ort. Update call to handle_omp_array_sections_1. + (finish_omp_clauses): Add specific errors and warning messages for + OpenACC. Use firsrtprivate pointers for OpenACC subarrays. Update + call to handle_omp_array_sections. + +2016-05-24 Jason Merrill <jason@redhat.com> + + PR c++/70584 + * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold + returns a decl. + (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue. + +2016-05-24 Martin Sebor <msebor@redhat.com> + + PR c++/71147 + * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p. + * pt.c (instantiate_class_template_1): Try to complete the element + type of a flexible array member. + (can_complete_type_without_circularity): Handle arrays of unknown bound. + * typeck.c (complete_type): Also complete the type of the elements of + arrays with an unspecified bound. + +2016-05-24 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/69872 + * typeck2.c (check_narrowing): Check pedwarn return value. + +2016-05-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/71257 + * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>: + For OMP_CLAUSE_LINEAR_REF don't require type to be + integral or pointer. + +2016-05-24 Richard Biener <rguenther@suse.de> + + PR middle-end/70434 + PR c/69504 + * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR. + * constexpr.c (cxx_eval_array_reference): Handle indexed + vectors. + * typeck.c (cp_build_array_ref): Adjust. + +2016-05-23 Jason Merrill <jason@redhat.com> + + PR c++/70344 + * constexpr.c (cxx_eval_call_expression): Check for + fun == current_function_decl again. + + PR c++/70584 + * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call + maybe_undo_parenthesized_ref. + + PR c++/70735 + * pt.c (tsubst_copy): Just return a local variable from + non-template context. Don't call rest_of_decl_compilation for + duplicated static locals. + (tsubst_decl): Set DECL_CONTEXT of local static from another + function. + +2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70972 + * method.c (forward_parm): Use cp_build_reference_type. + +2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/69095 + * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs. + +2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> + + * pt.c (check_for_bare_parameter_packs): Improve error message + location for expressions. + +2016-05-20 Nathan Sidwell <nathan@acm.org> + + * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if + ... goto. + (cxx_eval_call_expression): Fix comment grammar. + +2016-05-20 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70572 + * decl.c (cp_finish_decl): Check do_auto_deduction return value + and return immediately in case of erroneous code. + +2016-05-19 Marek Polacek <polacek@redhat.com> + + PR c++/71075 + * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD. + +2016-05-19 Jason Merrill <jason@redhat.com> + + PR c++/10200 + * pt.c (fn_type_unification): Add outer template args if needed. + (type_unification_real): Handle getting full args. + +2016-05-19 David Malcolm <dmalcolm@redhat.com> + + PR c++/71184 + * parser.c (cp_parser_operator): For array new/delete, check that + cp_parser_require returned a non-NULL token before dereferencing + it. + +2016-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de> + + * decl.c (finish_enum_value_list): Use the specified mode. + +2016-05-18 Jason Merrill <jason@redhat.com> + + * pt.c (value_dependent_expression_p): Tweak new cases to better + match the wording in the standard. + +2016-05-18 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/69793 + * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token + when the previous cp_lexer_peek_token returns CPP_EOF. + +2016-05-18 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70466 + * call.c (convert_like_real): Check that we are actually converting + from an init list. + +2016-05-16 Matthew Wahab <matthew.wahab@arm.com> + + * decl.c (grokdeclarator): Remove errmsg and use of + targetm.invalid_return_type. + (grokparms): Remove errmsg and use of + targetm.invalid_parameter_type. + +2016-05-13 Jason Merrill <jason@redhat.com> + + PR c++/10200 + PR c++/69753 + * pt.c (tsubst_decl): Use uses_template_parms. + (instantiate_template_1): Handle non-dependent calls in templates. + (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL. + (type_dependent_expression_p): Only consider innermost template args. + (dependent_template_arg_p): Check enclosing class of a template here. + (dependent_template_p): Not here. + (type_dependent_object_expression_p): New. + * typeck.c (finish_class_member_access_expr): Use it. + * parser.c (cp_parser_postfix_expression): Use it. + (cp_parser_postfix_dot_deref_expression): Use it. Use comptypes + to detect the current instantiation. + (cp_parser_lookup_name): Really implement DR 141. + * search.c (lookup_field_r): Prefer a dependent using-declaration. + (any_dependent_bases_p): Split out from... + * name-lookup.c (do_class_using_decl): ...here. + * call.c (build_new_method_call_1): Use it. + * semantics.c (finish_call_expr): 'this' doesn't make a call dependent. + * tree.c (non_static_member_function_p): Remove. + * typeck2.c (build_x_arrow): Use dependent_scope_p. + + * parser.c (cp_parser_postfix_dot_deref_expression): Use + complete_type_or_else for unknown_type_node, too. + +2016-05-12 Marek Polacek <polacek@redhat.com> + + PR c/70756 + * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr. + * cp-tree.h (cp_build_modify_expr): Update declaration. + (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline + overloads. + * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to + cp_build_modify_expr. + * decl2.c (set_guard): Likewise. + (handle_tls_init): Likewise. + * init.c (perform_member_init): Likewise. + (expand_virtual_init): Likewise. + (build_new_1): Likewise. + (build_vec_delete_1): Likewise. + (get_temp_regvar): Likewise. + (build_vec_init): Likewise. + * method.c (do_build_copy_assign): Likewise. + (assignable_expr): Likewise. + * semantics.c (finish_omp_for): Likewise. + * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and + cp_pointer_int_sum. + (cp_pointer_int_sum): Add location parameter. Pass it down to + pointer_int_sum. + (pointer_diff): Add location parameter. Use it. + (build_modify_expr): Pass location down to cp_build_modify_expr. + (cp_build_modify_expr): Add location parameter. Use it. + (build_x_modify_expr): Pass location down to cp_build_modify_expr. + * typeck2.c (cxx_incomplete_type_diagnostic, + cxx_incomplete_type_error): Add location parameter. + +2016-05-11 Marek Polacek <polacek@redhat.com> + + PR c++/71024 + * decl.c (duplicate_decls): Call diagnose_mismatched_decls. + +2016-05-05 Jakub Jelinek <jakub@redhat.com> + + * parser.c (cp_parser_selection_statement): For RID_SWITCH, + pass if_p instead of NULL to cp_parser_implicitly_scoped_statement. + +2016-05-04 Marek Polacek <polacek@redhat.com> + + * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses + with OPT_Wdangling_else. + +2016-05-03 Martin Sebor <msebor@redhat.com> + + PR c++/66561 + * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE, + BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions. + +2016-05-03 Marek Polacek <polacek@redhat.com> + + PR c/70859 + * call.c (build_cxx_call): Pass location and vNULL down to + check_builtin_function_arguments. + +2016-05-03 Richard Biener <rguenther@suse.de> + + * Make-lang.in (cc1plus-checksum.c): For stage-final re-use + the checksum from the previous stage. + +2016-05-02 David Malcolm <dmalcolm@redhat.com> + + PR c++/62314 + * typeck.c (finish_class_member_access_expr): When + giving a hint about a possibly-misspelled member name, + add a fix-it replacement hint. + +2016-05-02 Cesar Philippidis <cesar@codesourcery.com> + + * cp-tree.h (finish_omp_clauses): Update prototype. + * parser.c (cp_parser_oacc_all_clauses): Update call to + finish_omp_clauses. + (cp_parser_omp_all_clauses): Likewise. + (cp_parser_omp_for_loop): Likewise. + (cp_omp_split_clauses): Likewise. + (cp_parser_oacc_cache): Likewise. + (cp_parser_oacc_loop): Likewise. + (cp_parser_omp_declare_target): + (cp_parser_cilk_simd_all_clauses): Likewise. + (cp_parser_cilk_for): Likewise. + * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd + arguments with enum c_omp_region_type ort. + (tsubst_omp_clauses): Update calls to finish_omp_clauses. + (tsubst_omp_attribute): Update calls to tsubst_omp_clauses. + (tsubst_omp_for_iterator): Update calls to finish_omp_clauses. + (tsubst_expr): Update calls to tsubst_omp_clauses. + * semantics.c (finish_omp_clauses): Replace bool arguments + allow_fields, declare_simd, and is_cilk with bitmask ort. + (finish_omp_for): Update call to finish_omp_clauses. + +2016-05-02 David Malcolm <dmalcolm@redhat.com> + + PR c++/62314 + * parser.c (cp_parser_class_head): Capture the start location; + use it to emit a fix-it insertion hint when complaining + about missing "template <> " in explicit specializations. + +2016-05-02 Richard Sandiford <richard.sandiford@arm.com> + + * init.c (build_new_1): Use shift operators instead of wi:: shifts. + +2016-05-02 Richard Biener <rguenther@suse.de> + + * decl.c (grokdeclarator): Properly insert a DECL_EXPR for + anonymous VLAs. + +2016-04-29 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/66644 + * class.c (check_field_decl): Remove final int* parameter, change + the return type to bool; fix logic in order not to reject multiple + initialized fields in anonymous struct. + (check_field_decls): Adjust call. + +2016-04-29 Cesar Philippidis <cesar@codesourcery.com> + + PR middle-end/70626 + * parser.c (cp_parser_oacc_loop): Don't augment mask with + OACC_LOOP_CLAUSE_MASK. + (cp_parser_oacc_kernels_parallel): Update call to + c_oacc_split_loop_clauses. + +2016-04-28 Jason Merrill <jason@redhat.com> + + Implement C++17 [[nodiscard]] attribute. + PR c++/38172 + PR c++/54379 + * parser.c (cp_parser_std_attribute): Handle [[nodiscard]]. + * tree.c (handle_nodiscard_attribute): New. + (cxx_attribute_table): Add [[nodiscard]]. + * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New. + (maybe_warn_nodiscard): New. + (convert_to_void): Call it. + + * cvt.c (cp_get_callee): New. + * constexpr.c (get_function_named_in_call): Use it. + * cxx-pretty-print.c (postfix_expression): Use it. + * except.c (check_noexcept_r): Use it. + * method.c (check_nontriv): Use it. + * tree.c (build_aggr_init_expr): Use it. + * cp-tree.h: Declare it. + +2015-04-27 Ryan Burn <contact@rnburn.com> + Jeff Law <law@redhat.com> + + PR c++/69024 + PR c++/68997 + * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap + instead of cilk_detect_spawn_and_unwrap. + * cp-cilkplus.c (is_conversion_operator_function_decl_p): New. + (find_spawn): New. + (cilk_cp_detect_spawn_and_unwrap): New. + * lambda.c: Include cp-cilkplus.h. + * parser.c: Include cp-cilkplus.h. + * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into... + * cp-cilkpus.h: New file. + +2016-04-27 Nathan Sidwell <nathan@acm.org> + + * constexpr.c (get_fundef_copy): Use the original function for + non-recursive evaluations. + (save_fundef_copy): Always expect a slot to be available. + +2016-04-27 Bernd Schmidt <bschmidt@redhat.com> + + * parser.c (cp_parser_postfix_expression): Call + warn_for_memset instead of warning directly here. + +2016-04-26 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70241 + * decl.c (build_enumerator): Set current_access_specifier when + declaring an enumerator belonging to an in-class enumeration. + * parser.c (cp_parser_check_access_in_redecleration): Also + consider in-class enumerations. + +2016-04-26 Marek Polacek <polacek@redhat.com> + + PR c++/70744 + * call.c (build_conditional_expr_1): Call cp_stabilize_reference + instead of stabilize_reference. + (build_over_call): Likewise. + * cp-tree.h (cp_stabilize_reference): Declare. + * tree.c (cp_stabilize_reference): New function. + * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of + stabilize_reference. + (unary_complex_lvalue): Likewise. + (cp_build_modify_expr): Likewise. + +2016-04-26 Jakub Jelinek <jakub@redhat.com> + + PR bootstrap/70704 + * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of + just flag_checking. + +2016-04-25 Jason Merrill <jason@redhat.com> + + * tree.c (std_attribute_table): New. + (init_tree): Register it. + +2016-04-22 Jason Merrill <jason@redhat.com> + + * parser.c (cp_parser_perform_range_for_lookup): Decay the array. + +2016-04-21 Patrick Palka <ppalka@gcc.gnu.org> + + * name-lookup.c (free_saved_scope): New free list of saved_scope + structures. + (push_to_top_level): Attempt to reuse a saved_scope struct + from free_saved_scope instead of allocating a new one each time. + (pop_from_top_level_1): Chain the now-unused saved_scope structure + onto free_saved_scope. + +2016-04-21 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70540 + * semantics.c (process_outer_var_ref): Unconditionally return + error_mark_node when mark_used returns false. + +2016-04-21 Marek Polacek <polacek@redhat.com> + + PR c++/70513 + * parser.c (cp_parser_enum_specifier): Check and possibly error for + extra qualification. + +2016-04-20 Nathan Sidwell <nathan@acm.org> + + PR c++/55635 + * init.c (build_vec_delete_1): Protect operator delete call in try + finally. + (build_delete): Likewise. + * optimize.c (build_delete_destructor_body): Likewise. + +2016-04-20 Ilya Verbin <ilya.verbin@intel.com> + + PR c++/69363 + * cp-tree.h (finish_omp_clauses): Add new default argument. + * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses + instead of c_finish_cilk_clauses. + * semantics.c (finish_omp_clauses): Add new argument. Allow + floating-point variables in the linear clause for Cilk Plus. + +2016-04-20 Nathan Sidwell <nathan@acm.org> + + * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a + TARGET_EXPR. + +2016-04-19 Jason Merrill <jason@redhat.com> + + PR c++/66543 + * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR. + * pt.c (make_pack_expansion): Call mark_exp_read. + * semantics.c (finish_id_expression): Call mark_type_use in + unevaluated context. + + DR 2137 + * call.c (implicit_conversion): If we choose a copy constructor + for list-initialization from the same type, the conversion is an + exact match. + + * constexpr.c (breaks): Handle EXIT_EXPR. + (cxx_eval_loop_expr): Handle COMPOUND_EXPR body. + (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling + of COMPOUND_EXPR. + + PR c++/68206 + PR c++/68530 + * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR + and GOTO_EXPR. + + * pt.c (tsubst_expr): Remove shadowing declaration. + (tsubst_pack_expansion): Add assert. + + * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION. + + PR c++/70522 + * name-lookup.c (qualified_lookup_using_namespace): Look through + hidden names. + +2016-04-18 Michael Matz <matz@suse.de> + + * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN. + (layout_class_type): Ditto. + (build_base_field): Use SET_DECL_ALIGN. + (fixup_attribute_variants): Use SET_TYPE_ALIGN. + * decl.c (duplicate_decls): Use SET_DECL_ALIGN. + (record_unknown_type): Use SET_TYPE_ALIGN. + (cxx_init_decl_processing): Ditto. + (copy_type_enum): Ditto. + (grokfndecl): Use SET_DECL_ALIGN. + (copy_type_enum): Use SET_TYPE_ALIGN. + * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN. + (tsubst): Ditto. + * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN. + * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN. + * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN. + * rtti.c (emit_tinfo_decl): Ditto. + +2016-04-18 Jason Merrill <jason@redhat.com> + + PR c++/70690 + PR c++/70528 + * class.c (type_maybe_constexpr_default_constructor): New. + (type_has_constexpr_default_constructor): Revert. + +2016-04-16 Sandra Loosemore <sandra@codesourcery.com> + + PR target/1078 + + * tree.c (cxx_attribute_table): Remove "com_interface" entry. + (handle_com_interface_attribute): Delete. + +2016-04-15 Jason Merrill <jason@redhat.com> + + PR c++/70685 + * constexpr.c (get_fundef_copy): Handle null *slot. + + PR c++/70505 + * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR + unknown_type_node, too. + +2016-04-15 Jason Merrill <jason@redhat.com> + Nathan Sidwell <nathan@acm.org> + + PR c++/70594 + * constexpr.c (constexpr_call_table): Preserve in GC. + (struct fundef_copy, struct fundef_copies_table_t): Delete. + (fundef_copies_table): Preserve in GC. Change to pointer to + tree->tree hash. + (maybe_initialize_fundef_copies_table): Adjust. + (get_fundef_copy): Return a TREE_LIST. Use non-inserting search. + (save_fundef_copy): Adjust for a TREE_LIST. + (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST. + (fini_constexpr): New. + * cp-tree.h (fini_constexpr): Declare. + * decl2.c (c_parse_final_cleanups): Call fini_constexpr. + +2016-04-15 Jakub Jelinek <jakub@redhat.com> + + PR c/70436 + * parser.c (cp_parser_pragma): Add IF_P argument, pass it down + where needed. + (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt, + cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd, + cp_parser_oacc_routine): Adjust cp_parser_pragma callers. + (cp_parser_statement): Likewise. Adjust cp_parser_cilk_for caller. + (cp_parser_omp_structured_block): Add IF_P argument, pass it down to + cp_parser_statement. + (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop, + cp_parser_oacc_kernels_parallel, cp_parser_omp_critical, + cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master, + cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single, + cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute, + cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target, + cp_parser_omp_taskloop, cp_parser_omp_construct, + cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for): + Add IF_P argument, pass it down where needed. + (cp_parser_omp_for_loop): Likewise. Clear IF_P if nbraces. + (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block + calls. + +2016-04-14 Jason Merrill <jason@redhat.com> + + PR c++/70494 + * decl.c (cxx_maybe_build_cleanup): Handle non-decls. + * typeck2.c (split_nonconstant_init_1): Use it. + + PR c++/70528 + * class.c (type_has_constexpr_default_constructor): Return true + for an implicitly declared constructor. + + PR c++/70622 + * parser.c (cp_parser_init_declarator): Add auto_result parm. + (cp_parser_simple_declaration): Pass it. + (strip_declarator_types): New. + + PR c++/70543 + * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent + initializer also makes the variable value-dependent. + + PR c++/70648 + * constexpr.c (cxx_eval_store_expression): Also copy + CONSTRUCTOR_NO_IMPLICIT_ZERO. + +2016-04-14 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * cp-tree.h, decl.c, init.c, typeck2.c: Revert. + +2016-04-14 Jason Merrill <jason@redhat.com> + + * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty + parameter ABI change. + +2016-04-13 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new + functions. + * decl.c (check_initializer, cp_finish_decl): Call them. + (reshape_init_r): Reject incompletely braced intializer-lists + for VLAs. + * init.c (throw_bad_array_length, build_vla_check) + (build_vla_size_check, build_vla_init_check): Define new functions. + * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p() + to detect a VLA. + (store_init_value): Same. + +2016-04-13 Jason Merrill <jason@redhat.com> + + Warn about empty parameter ABI with -Wabi=9. + * call.c (empty_class_msg, mark_for_abi_warning) + (warn_empty_class_abi): New. + (build_call_a): Use them. + * decl.c (store_parm_decls): Use mark_for_abi_warning. + * error.c (pp_format_to_string): New. + + Pass empty class parameters like C. + * call.c (pass_as_empty_struct, empty_class_arg): New. + (type_passed_as, build_x_va_arg): Use pass_as_empty_struct. + (build_call_a): Use empty_class_arg. + * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New. + * decl.c (cxx_init_decl_processing): Create empty_struct_type. + +2016-04-13 Jason Merrill <jason@redhat.com> + + PR c++/70627 + * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE. + +2016-04-13 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70635 + * pt.c (resolve_typename_type): Fix typos in infinite recursion + avoidance mechanism. + +2016-04-13 Jason Merrill <jason@redhat.com> + + PR c++/70634 + * pt.c (instantiation_dependent_uneval_expression_p): Split out + from instantiation_dependent_expression_p. + (value_dependent_expression_p): Use it for unevaluated operands. + (instantiation_dependent_r): Don't check value-dependence. + (instantiation_dependent_expression_p): Check + value-dependence of the expression as a whole. + * cp-tree.h: Declare instantiation_dependent_uneval_expression_p. + * semantics.c (finish_decltype_type): Use it. + + * constexpr.c (potential_nondependent_constant_expression): New. + (potential_nondependent_static_init_expression): New. + (maybe_constant_value_1, fold_non_dependent_expr) + (maybe_constant_init): Use them. + * pt.c (instantiate_non_dependent_expr_sfinae) + (instantiate_non_dependent_or_null, convert_nontype_argument): Use + them. + * cp-tree.h: Declare them. + +2016-04-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/70594 + * decl.c (pop_labels_1): Removed. + (note_label, sort_labels): New functions. + (pop_labels): During named_labels traversal, just push the slot + pointers into a vector, then qsort it by DECL_UID and only then + call pop_label and chain it into BLOCK_VARS. + +2016-04-13 Jason Merrill <jason@redhat.com> + + PR c++/70615 + * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here. + (cp_gimplify_expr): Not here. + +2016-04-12 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70610 + * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally + recurse into it. + * typeck.c (build_x_conditional_expr): Unconditionally remember + that the result is an lvalue or xvalue. + +2016-04-12 Jason Merrill <jason@redhat.com> + + * class.c (is_really_empty_class): A zero-length array is empty. + An unnamed bit-field doesn't make a class non-empty. + +2016-04-12 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/68722 + * parser.c (cp_parser_cache_defarg): When file ends in default + argument simply return error_mark_node. + +2016-04-12 Nathan Sidwell <nathan@acm.org> + + PR c++/70501 + * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE + similarly to PMF. + +2016-04-11 Jason Merrill <jason@redhat.com> + + * mangle.c (decl_is_template_id): The template itself counts as a + template-id. + +2016-04-08 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70590 + PR c++/70452 + * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr + on the result if it's not a CONSTRUCTOR. + +2016-04-07 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70452 + * constexpr.c (find_constructor): New function. + (unshare_constructor): New function. + (cxx_eval_call_expression): Use unshare_constructor instead of + unshare_expr. + (find_array_ctor_elt): Likewise. + (cxx_eval_vec_init_1): Likewise. + (cxx_eval_store_expression): Likewise. + (cxx_eval_constant_expression): Likewise. + +2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> + + PR c/70436 + * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid + potentially generating a future -Wparentheses warning in its + callers. + +2016-04-06 Jason Merrill <jason@redhat.com> + + * class.c (check_abi_tags): Fix function template handling. + +2016-04-05 Nathan Sidwell <nathan@acm.org> + + PR c++/70512 + * class.c (fixup_may_alias): New. + (fixup_attribute_variants): Call it. + +2016-04-05 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70452 + * constexpr.c (struct fundef_copy): New struct. + (struct fundef_copies_table_t): New struct. + (fundef_copies_table): New static variable. + (maybe_initialize_fundef_copies_table): New static function. + (get_fundef_copy): New static function. + (save_fundef_copy): New static function. + (cxx_eval_call_expression): Use get_fundef_copy, and + save_fundef_copy. + (constexpr_call_table): Add "deletable" GTY marker. + +2016-04-05 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70452 + * cp-tree.h (class cache_map): Remove. + * constexpr.c (cv_cache): Change type to + GTY((deletable)) hash_map<tree, tree> *. + (maybe_constant_value): Adjust following the change to cv_cache. + (clear_cv_cache): New static function. + (clear_cv_and_fold_caches): Use it. + * cp-gimplify.c (fold_cache): Change type to + GTY((deletable)) hash_map<tree, tree> *. + (clear_fold_cache): Adjust following the change to fold_cache. + (cp_fold): Likewise. + +2016-04-02 Martin Sebor <msebor@redhat.com> + + PR c++/67376 + PR c++/70170 + PR c++/70172 + PR c++/70228 + * constexpr.c (diag_array_subscript): New function. + (cxx_eval_array_reference): Detect out of bounds array indices. + +2016-04-01 Jason Merrill <jason@redhat.com> + + PR c++/70449 + PR c++/70344 + * pt.c (instantiate_decl): A function isn't fully defined if + DECL_INITIAL is error_mark_node. + * constexpr.c (cxx_eval_call_expression): Likewise. + +2016-04-01 Jakub Jelinek <jakub@redhat.com> + Marek Polacek <polacek@redhat.com> + + PR c++/70488 + * init.c (warn_placement_new_too_small): Test whether + DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi. + +2016-04-01 Nathan Sidwell <nathan@acm.org> + + PR c++/68475 + * decl.c (check_redeclaration_exception_specification): Check + regardless of -fno-exceptions. + * typeck2.c (merge_exception_specifiers): Relax assert by checking + flag_exceptions too. + +2016-03-31 Nathan Sidwell <nathan@acm.org> + + * decl.c (start_preparsed_function): Remove unnecessary bracing. + (finish_destructor_body): Don't emit operator delete here. + +2016-03-31 Nathan Sidwell <nathan@acm.org> + + PR c++/70393 + * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR + elements in field order. + +2016-03-31 Marek Polacek <polacek@redhat.com> + + PR c/70297 + * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN. + +2016-03-31 Richard Biener <rguenther@suse.de> + + PR c++/70430 + * typeck.c (cp_build_binary_op): Fix operand order of vector + conditional in truth op handling. + +2016-03-29 Jason Merrill <jason@redhat.com> + + PR c++/70353 + * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics + in constexpr functions. + +2016-03-28 Jason Merrill <jason@redhat.com> + + PR c++/70422 + PR c++/64266 + PR c++/70353 + * decl.c, pt.c, constexpr.c: Revert last patch. + +2016-03-25 Jason Merrill <jason@redhat.com> + Martin Liška <mliska@suse.cz> + + PR c++/64266 + PR c++/70353 + Core issue 1962 + * decl.c (cp_fname_init): Decay the initializer to pointer. + (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P, + DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. + Don't call cp_finish_decl. + * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR, + DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. Don't call cp_finish_decl. + * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]: + Handle DECL_VALUE_EXPR. + +2016-03-24 Jason Merrill <jason@redhat.com> + + PR c++/70386 + * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs. + + PR c++/70323 + * constexpr.c (cxx_eval_call_expression): Don't cache result if + *overflow_p. + +2016-03-24 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/62212 + * tree.c (build_cplus_array_type): Determine type-dependentess + with uses_template_parms instead of with dependent_type_p. + +2016-03-23 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70347 + * typeck.c (process_init_constructor_union): If the initializer + is empty, use the union's NSDMI if it has one. + +2016-03-23 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70332 + * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an + NSDMI that's part of an aggregrate initialization. + +2016-03-23 Jakub Jelinek <jakub@redhat.com> + + PR c++/70001 + * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers + for 1..max even for multi-dimensional arrays. Call unshare_expr + on it. + + PR c++/70323 + * constexpr.c (cxx_eval_constant_expression): Diagnose overflow + on TREE_OVERFLOW constants. + + PR c++/70376 + * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES + for OMP_TASKLOOP here. + (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call + genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY. + +2016-03-23 Alexandre Oliva <aoliva@redhat.com> + Jason Merrill <jason@redhat.com> + Jakub Jelinek <jakub@redhat.com> + + PR c++/69315 + * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove. + * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove. + (finish_function): Don't set or test them. + * decl2.c (mark_used): Don't handle defer_mark_used_calls. + +2016-03-23 Jason Merrill <jason@redhat.com> + + PR c++/70344 + * constexpr.c (cxx_eval_call_expression): Catch invalid recursion. + +2016-03-23 Marek Polacek <polacek@redhat.com> + + PR c++/69884 + * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes. + +2016-03-22 Ilya Enkovich <enkovich.gnu@gmail.com> + + * call.c (build_conditional_expr_1): Always use original + condition type for vector type checks and build. + +2016-03-22 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70096 + * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl. + +2016-03-22 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70204 + * constexpr.c (non_const_var_error): Check + DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. + +2016-03-21 Richard Henderson <rth@redhat.com> + + PR c++/70273 + * decl.c (notice_forced_label_r): New. + (cp_finish_decl): Use it. + +2016-03-21 Jason Merrill <jason@redhat.com> + + PR c++/70285 + * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields. + +2016-03-18 Jason Merrill <jason@redhat.com> + + PR c++/70139 + * constexpr.c (cxx_eval_call_expression): Fix trivial copy. + + PR c++/70147 + * class.c (vptr_via_virtual_p): New. + (most_primary_binfo): Factor out of build_rtti_vtbl_entries. + * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear + a vptr from any virtual base in a not-in-charge 'structor. + + * decl.c (build_clobber_this): Factor out of + start_preparsed_function and begin_destructor_body. Handle + virtual bases better. + + * class.c (build_if_in_charge): Split out from build_base_path. + * init.c (expand_virtual_init, expand_default_init): Use it. + * call.c (build_special_member_call): Use it. + +2016-03-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/70267 + * init.c (build_new_1): Complain and return error_mark_node + if alloc_fn is not _Jv_AllocObject function returning pointer. + +2016-03-18 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70205 + * search.c (adjust_result_of_qualified_name_lookup): Don't + update the BASELINK_BINFO of DECL if the second call + to lookup_base fails. + +2016-03-18 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70218 + * parser.c (cp_parser_lambda_expression): Move call to + pop_deferring_access_checks ahead of the call to + cp_parser_end_tentative_firewall. + +2016-03-17 Jakub Jelinek <jakub@redhat.com> + + PR c++/70144 + * cp-tree.h (magic_varargs_p): Return int instead of bool. + * call.c (magic_varargs_p): Return int instead of bool, return 2 for + Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal + varargs. + (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin, + if magic_varargs_p == 1, call decay_conversion + instead of mark_type_use. Don't store error_mark_node arguments to + argarray, instead return error_mark_node. + + PR c++/70272 + * decl.c (begin_destructor_body): Don't insert clobber if + is_empty_class (current_class_type). + +2016-03-17 Marek Polacek <polacek@redhat.com> + + PR c++/70194 + * typeck.c (warn_for_null_address): New function. + (cp_build_binary_op): Call it. + +2016-03-16 Jason Merrill <jason@redhat.com> + + PR c++/70259 + * decl.c (start_preparsed_function): Don't clobber an empty base. + +2016-03-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/70147 + * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize + BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm. + + PR c++/70147 + * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily + set in_base_initializer. + +2016-03-15 Marek Polacek <polacek@redhat.com> + + PR c++/70209 + * tree.c (strip_typedefs): Call strip_typedefs again on the + DECL_ORIGINAL_TYPE result. + +2016-03-15 Jason Merrill <jason@redhat.com> + + PR c++/70095 + * pt.c (instantiate_decl): Fix call to variable_template_p. + + PR c++/70141 + * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE. + +2016-03-14 Casey Carter <casey@carter.net> + Jason Merrill <jason@redhat.com> + + P0184R0: Generalizing the Range-Based For Loop + * parser.c (cp_convert_range_for): Set the type of __end separately. + (cp_parser_perform_range_for_lookup): Allow different begin/end + types if they are comparable. + +2016-03-12 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70106 + * semantics.c (force_paren_expr): Just build a PAREN_EXPR when + processing_template_decl and EXPR is a SCOPE_REF. + +2016-03-10 Patrick Palka <ppalka@gcc.gnu.org> + Jakub Jelinek <jakub@redhat.com> + + PR c++/70001 + * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse + return value from cxx_eval_constant_expression from earlier + elements if it is valid constant initializer requiring no + relocations. + +2016-03-10 Marek Polacek <polacek@redhat.com> + + PR c++/70153 + * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR. + +2016-03-09 Cesar Philippidis <cesar@codesourcery.com> + + * parser.c (cp_parser_oacc_loop): Update cclauses and clauses + when calling c_finish_omp_clauses. + +2016-03-08 Jason Merrill <jason@redhat.com> + + * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful + diagnostic for use of "concept". + (cp_parser_requires_clause_opt): And "requires". + (cp_parser_type_parameter, cp_parser_late_return_type_opt) + (cp_parser_explicit_template_declaration): Adjust. + * Make-lang.in (check-c++-all): Add "concepts" to std list. + + P0036R0: Unary Folds and Empty Parameter Packs + * pt.c (expand_empty_fold): Remove special cases for *,+,&,|. + +2016-03-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/70135 + * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs + even after the last iteration of the loop. + + * decl.c (duplicate_decls): Fix spelling - becuase -> because. + +2016-03-07 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/66786 + * pt.c (get_template_info): Handle PARM_DECL. + (template_class_depth): Check DECL_P instead of + VAR_OR_FUNCTION_DECL_P. + +2016-03-05 Jason Merrill <jason@redhat.com> + + PR c++/67364 + * constexpr.c (cxx_eval_store_expression): Replace + CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too. + +2016-03-05 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/66786 + * pt.c (template_class_depth): Given a lambda type, iterate + into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its + TYPE_CONTEXT. Given a VAR_DECL, iterate into its + CP_DECL_CONTEXT. + +2016-03-04 Jason Merrill <jason@redhat.com> + + PR c++/69203 + * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New. + * init.c (build_vec_delete_1): Set it. + * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it. + +2016-03-04 Jakub Jelinek <jakub@redhat.com> + + * decl.c (start_preparsed_function): Don't emit start clobber at the + start of constructor clones. + + PR c++/70035 + * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype. + * decl.c (start_preparsed_function): Call + cp_ubsan_maybe_initialize_vtbl_ptrs if needed. + * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs, + cp_ubsan_maybe_initialize_vtbl_ptrs): New functions. + +2016-03-04 Jason Merrill <jason@redhat.com> + + PR c++/67364 + * constexpr.c (cxx_eval_component_reference): Further tweak. + + * constexpr.c (struct constexpr_ctx): Add save_exprs field. + (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping. + (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set. + (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize. + + PR c++/70067 + * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the + same type. + +2016-03-03 Jason Merrill <jason@redhat.com> + + * method.c (synthesized_method_walk): operator= can also be constexpr. + + * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get + LAMBDA_EXPR_RETURN_TYPE from the instantiated closure. + + PR c++/67164 + * pt.c (copy_template_args): New. + (tsubst_pack_expansion): Use it. + + * call.c (build_aggr_conv): Use get_nsdmi. + + PR c++/51406 + * typeck.c (build_static_cast_1): Avoid folding back to lvalue. + + PR c++/67364 + * constexpr.c (cxx_eval_component_reference): Just return an empty + CONSTRUCTOR for an empty class. + +2016-03-01 Jason Merrill <jason@redhat.com> + + PR c++/70036 + * parser.c (cp_parser_requires_clause): Call + check_for_bare_parameter_packs. + + PR c++/51489 + * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT + the operands. + + PR c++/69995 + * constexpr.c (cxx_eval_call_expression): Unshare arg. + (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init. + [TARGET_EXPR]: Unshare init. + +2016-03-01 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/68948 + PR c++/69961 + * pt.c (tsubst_baselink): Reinstate the check for an invalid + constructor call. + +2016-02-28 Jason Merrill <jason@redhat.com> + + PR c++/69995 + * constexpr.c (cxx_eval_store_expression): Unshare init. + +2016-02-26 Jason Merrill <jason@redhat.com> + + PR c++/69958 + * pt.c (make_argument_pack): New. + (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion. + (tsubst_copy_and_build): Likewise. + +2016-02-25 Jason Merrill <jason@redhat.com> + + PR c++/69889 + * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New. + * tree.c (build_aggr_init_expr): Set it. + * semantics.c (simplify_aggr_init_expr): Check it. + * cp-gimplify.c (cp_genericize_r): Don't walk into + a call/aggr_init from a thunk. + + PR c++/69842 + * method.c (forward_parm): Handle parameter packs. + * lambda.c (maybe_add_lambda_conv_op): Use it for them. + + PR c++/67364 + * constexpr.c (cxx_eval_component_reference): Don't complain about + unevaluated empty classes. + + PR c++/68049 + * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE. + +2016-02-25 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69736 + * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation. + (maybe_undo_parenthesized_ref): Declare. + * semantics.c (maybe_undo_parenthesized_ref): Split out from + check_return_expr. + (finish_call_expr): Use it. + * typeck.c (check_return_expr): Use it. + * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the + REF_PARENTHESIZED_P flag. + +2016-02-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/69922 + * class.c (build_base_path): Set TREE_NO_WARNING on the null_test. + Avoid folding it. + * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL + tests. + * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL, + unless they are folded into INTEGER_CST, error_mark_node or some + comparison with NULL, avoid folding them and use either the original + comparison or non-folded comparison of folded arguments. + * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the + comparison, don't fold the comparison right away. + +2016-02-24 Jason Merrill <jason@redhat.com> + + PR c++/69323 + * friend.c (make_friend_class): Likewise. + * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend. + +2016-02-24 Jason Merrill <jason@redhat.com> + + PR c++/69323 + * pt.c (instantiate_class_template_1): Set + processing_template_decl before substituting friend_type. + +016-02-24 Martin Sebor <msebor@redhat.com> + + PR c++/69912 + * tree.c (build_ctor_subob_ref): Compare types' main variants + instead of the types as they are. + +2016-02-24 Jason Merrill <jason@redhat.com> + + * decl.c (start_preparsed_function): Condition ctor clobber on + flag_lifetime_dse > 1. + + * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline. + +2016-02-19 Jason Merrill <jason@redhat.com> + + PR c++/69743 + * call.c (remaining_arguments): No longer static. + * cp-tree.h: Declare it. + * pt.c (more_specialized_fn): Use it. + +2016-02-19 Jakub Jelinek <jakub@redhat.com> + Bernd Edlinger <bernd.edlinger@hotmail.de> + + * Make-lang.in: Invoke gperf with -L C++. + * cfns.gperf: Remove prototypes for hash and libc_name_p + inlines. + * cfns.h: Regenerated. + * except.c (nothrow_libfn_p): Adjust. + +2016-02-19 Jakub Jelinek <jakub@redhat.com> + + PR c++/69850 + * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use + NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR. + +2016-02-19 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/68948 + * pt.c (tsubst_baselink): Don't diagnose an invalid constructor + call here. + * semantics.c (finish_call_expr): Don't assume a constructor + call is dependent if only the "this" pointer is dependent. When + building a constructor call, always use a dummy object. + +2016-02-19 Jakub Jelinek <jakub@redhat.com> + + PR c++/69850 + * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR + condition. + * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary + operators if folding preserved the binop, just with different + arguments. + + PR c++/67767 + * parser.c (cp_parser_std_attribute_spec_seq): Don't assume + attr_spec is always single element chain, chain all the attributes + properly together in the right order. + +2016-02-18 Jason Merrill <jason@redhat.com> + + * mangle.c (maybe_check_abi_tags): Add for_decl parm. Call + mangle_decl. + (mangle_decl): Call maybe_check_abi_tags for function scope. + (mangle_guard_variable): Call maybe_check_abi_tags here. + (write_guarded_var_name): Not here. + +2016-02-17 Jason Merrill <jason@redhat.com> + + PR c++/65985 + * constexpr.c (build_constexpr_constructor_member_initializers): + Handle an additional STATEMENT_LIST. + + PR c++/68585 + * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection. + + PR c++/68679 + * decl2.c (reset_type_linkage_2): Look through member templates. + +2016-02-17 Jakub Jelinek <jakub@redhat.com> + + PR c++/69850 + * init.c (build_delete): Set TREE_NO_WARNING on ifexp. + +2016-02-17 Jason Merrill <jason@redhat.com> + + PR c++/69842 + * method.c (forward_parm): Split out from... + (add_one_base_init): ...here. + * lambda.c (maybe_add_lambda_conv_op): Use it. + +2016-02-16 Jason Merrill <jason@redhat.com> + + PR c++/10200 + PR c++/69753 + * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c, + tree.c, typeck2.c: Revert earlier changes. + * parser.c (cp_parser_lookup_name): Ignore namespace-scope + non-type templates after -> or . + +2016-02-16 Jakub Jelinek <jakub@redhat.com> + + PR c/69835 + * typeck.c (cp_build_binary_op): Revert 2015-09-09 change. + +2016-02-16 Jason Merrill <jason@redhat.com> + + PR c++/69657 + * name-lookup.c (lookup_qualified_name): Add find_hidden parm. + (set_decl_namespace): Pass it. Complain about finding a hidden friend. + * name-lookup.h: Adjust. + +2016-02-16 James Norris <jnorris@codesourcery.com> + + * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking. + * semantics.c (finish_omp_clauses): Add deviceptr checking. + +2016-02-15 Jakub Jelinek <jakub@redhat.com> + + PR c++/69658 + * init.c (expand_default_init): Only call reshape_init + in the direct-initialization from an initializer list case. + +2016-02-15 Jason Merrill <jason@redhat.com> + + PR c++/69753 + * semantics.c (finish_call_expr): Implicit 'this' does not make + the call dependent. + * search.c (any_dependent_bases_p): Split out... + * name-lookup.c (do_class_using_decl): ...from here. + * call.c (build_new_method_call_1): Don't complain about missing object + if there are dependent bases. Tweak error. + * tree.c (non_static_member_function_p): Remove. + * pt.c (type_dependent_expression_p): A member template of a + dependent type is dependent. + * cp-tree.h: Adjust. + + PR c++/68890 + * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check. + +2016-02-12 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69098 + * pt.c (lookup_and_finish_template_variable): New function, + extracted from ... + (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here. Use it. + (tsubst_qualified_id): Consider that EXPR might be a variable + template. + * typeck.c (check_template_keyword): Don't emit an error + if DECL is a variable template. + +2016-02-12 Jakub Jelinek <jakub@redhat.com> + + * error.c: Spelling fixes - behaviour -> behavior and + neighbour -> neighbor. + * decl.c: Likewise. + * typeck.c (cp_build_binary_op): Fix up behavior spelling in + diagnostics. + * init.c (build_delete): Likewise. + +2016-02-11 Jakub Jelinek <jakub@redhat.com> + + PR c/69768 + * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop + arguments for -Waddress warning. Fix up formatting. + +2016-02-11 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/68726 + * pt.c (lookup_template_class_1): Check tsubst return value for + error_mark_node. + +2016-02-10 Jason Merrill <jason@redhat.com> + + PR c++/68926 + * pt.c (resolve_nondeduced_context): Add complain parm. + (do_auto_deduction): Pass it. + * cvt.c (convert_to_void): Likewise. + * decl.c (cp_finish_decl): Likewise. + * init.c (build_new): Likewise. + * rtti.c (get_tinfo_decl_dynamic): Likewise. + * semantics.c (finish_decltype_type): Likewise. + * typeck.c (decay_conversion): Likewise. + * cp-tree.h: Adjust declaration. + * call.c (standard_conversion): Add complain parm, pass it along. + (implicit_conversion): Pass it. + + PR c++/69657 + * name-lookup.c (ambiguous_decl): Call remove_hidden_names. + (lookup_name_real_1): Likewise. + (remove_hidden_names): Handle non-functions too. + + PR c++/10200 + * parser.c (cp_parser_lookup_name): When looking for a template + after . or ->, only consider class templates. + (cp_parser_postfix_dot_deref_expression): Handle the current + instantiation. Remember a dependent object expression. + * typeck2.c (build_x_arrow): Handle the current instantiation. + + * ptree.c (debug_tree): Implement for cp_expr. + +2016-02-08 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69139 + * parser.c (cp_parser_simple_type_specifier): Make the check + for disambiguating between an 'auto' placeholder and an implicit + template parameter more robust. + +2016-02-08 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69283 + PR c++/67835 + * decl2.c (mark_used): When given a TEMPLATE_DECL, return after + setting its TREE_USED flag. + +2016-02-08 Jason Merrill <jason@redhat.com> + + PR c++/69657 + * name-lookup.c (do_nonmember_using_decl): Leave anticipated + built-ins alone. + +2016-02-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/59627 + * parser.c (cp_parser_omp_declare_reduction): Set assembler name + of the DECL_OMP_DECLARE_REDUCTION_P decls. + +2016-02-08 Marek Polacek <polacek@redhat.com> + + PR c++/69688 + * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache. + Call clear_fold_cache. + * cp-tree.h: Adjust declaration. + * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches + rather than clear_cv_cache and clear_fold_cache. + * typeck2.c (store_init_value): Call clear_cv_and_fold_caches. + +2016-02-08 Jason Merrill <jason@redhat.com> + + * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New. + * cvt.c (convert): Pass CONV_BACKEND_CONVERT. + (ocp_convert): Use *_maybe_fold. + (cp_convert_to_pointer): Add dofold parameter. + * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert. + +2016-02-05 Martin Sebor <msebor@redhat.com> + + PR c++/69662 + * init.c (find_field_init): New function. + (warn_placement_new_too_small): Call it. Handle one-element arrays + at ends of structures special. + +2016-02-05 Jason Merrill <jason@redhat.com> + + PR c++/68948 + * semantics.c (finish_expr_stmt): If expr is error_mark_node, + make sure we've seen_error(). + +2016-02-05 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/68948 + * pt.c (tsubst_baselink): Diagnose an invalid constructor call + if lookup_fnfields returns NULL_TREE and the name being looked + up has the form A::A. + +2016-02-04 Patrick Palka <ppalka@gcc.gnu.org> + + * constexpr.c (cxx_eval_binary_expression): Fold equality + comparisons involving PTRMEM_CSTs. + +2016-02-04 Jakub Jelinek <jakub@redhat.com> + + * class.c (find_flexarrays): Don't declare dom variable. + (diagnose_flexarray): Likewise. + +2016-02-02 Martain Sebor <msebor@redhat.com> + + PR c++/69251 + PR c++/69253 + PR c++/69290 + PR c++/69277 + PR c++/69349 + * class.c (walk_subobject_offsets): Avoid testing the upper bound + of a flexible array member for equality to null. + (find_flexarrays): Remove spurious whitespace introduced in r231665. + (diagnose_flexarrays): Avoid checking the upper bound of arrays. + (check_flexarrays): Same. + * decl.c (compute_array_index_type): Avoid special case for flexible + array members. + (grokdeclarator): Avoid calling compute_array_index_type for flexible + array members. + * error.c (dump_type_suffix): Revert changes introduced in r231665 + and rendered unnecessary by the changes above. + * pt.c (tsubst): Same. + * tree.c (build_ctor_subob_ref): Handle flexible array members. + * typeck2.c (digest_init_r): Revert changes introduced in r231665. + (process_init_constructor_array): Same. + (process_init_constructor_record): Same. + +2016-02-03 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69056 + * pt.c (try_one_overload): Handle comparing argument packs so + that there is no conflict if we deduced more arguments of an + argument pack than were explicitly specified. + +2016-01-31 Jakub Jelinek <jakub@redhat.com> + Jason Merrill <jason@redhat.com> + + PR c++/68763 + * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new + function type if nothing is changing. + +2016-01-31 Jason Merrill <jason@redhat.com> + + PR c++/69009 + * pt.c (partial_specialization_p, impartial_args): New. + (instantiate_decl): Call impartial_args. + + * mangle.c (maybe_check_abi_tags): New. + (write_guarded_var_name): Call it. + (mangle_ref_init_variable): Call check_abi_tags. + + * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES + between template and instantiation. + +2016-01-29 Jakub Jelinek <jakub@redhat.com> + + PR debug/66869 + * decl.c (wrapup_globals_for_namespace): Warn about unused static + function declarations. + +2016-01-29 Marek Polacek <polacek@redhat.com> + + PR c++/69509 + PR c++/69516 + * constexpr.c (cxx_eval_array_reference): Give the "array subscript + out of bound" error earlier. + * init.c (build_vec_init): Change NE_EXPR into GT_EXPR. Update the + commentary. + +2016-01-29 Patrick Palka <ppalka@gcc.gnu.org> + + * name-lookup.c (begin_scope): After reusing a cp_binding_level + structure, update free_binding_level before the structure's + level_chain field gets cleared, not after. + +2016-01-28 Jason Merrill <jason@redhat.com> + + PR c++/67407 + * search.c (dfs_walk_once, dfs_walk_once_r) + (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use + hash_set instead of BINFO_MARKED. + (dfs_unmark_r): Remove. + +2016-01-28 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/24208 + * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro. + (cp_lexer_debugging_p): Use it. + (cp_lexer_start_debugging): Likewise. + (cp_lexer_stop_debugging): Likewise. + +2016-01-27 Marek Polacek <polacek@redhat.com> + + PR c/68062 + * typeck.c (cp_build_binary_op): Promote operand to unsigned, if + needed. Add -Wsign-compare warning. + +2016-01-27 Ryan Burn <contact@rnburn.com> + + PR cilkplus/69267 + * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed + superfluous post_p argument in call to + cilk_gimplify_call_params_in_spawned_fn. + +2016-01-27 Marek Polacek <polacek@redhat.com> + + PR c++/69379 + * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs + wrapped in NOP_EXPRs. + +2016-01-27 Martin Sebor <msebor@redhat.com> + + PR c++/69317 + * mangle.c (mangle_decl): Reference the correct (saved) version + of the ABI in -Wabi diagnostics. + +2016-01-27 Marek Polacek <polacek@redhat.com> + + PR c++/69496 + * constexpr.c (cxx_eval_array_reference): Evaluate the number of + elements of the array. + +2016-01-26 Jason Merrill <jason@redhat.com> + + PR c++/68949 + * constexpr.c (register_constexpr_fundef): Keep the un-massaged body. + (cxx_eval_call_expression): Don't look through clones. + * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias. + * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of + maybe-in-charge *tor. + +2016-01-26 Jason Merrill <jason@redhat.com> + + PR c++/68782 + * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT + and TREE_SIDE_EFFECTS. + (cxx_eval_constant_expression) [CONSTRUCTOR]: Call + verify_constructor_flags. + +2016-01-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/68357 + * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node, + return error_mark_node instead of building trees with error_mark_node + operands. + +2016-01-26 David Malcolm <dmalcolm@redhat.com> + + PR other/69006 + * error.c (print_instantiation_partial_context_line): Add missing + newlines from output for the t == NULL case. + (print_instantiation_partial_context): Remove call to pp_newline. + +2016-01-24 Patrick Palka <ppalka@gcc.gnu.org> + + Revert: + 2016-01-18 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/11858 + PR c++/24663 + PR c++/24664 + * decl.c (grokdeclarator): Don't decay array parameter type to + a pointer type if it's dependent. + (grokparms): Invoke strip_top_quals instead of directly invoking + cp_build_qualified_type. + * pt.c (decay_dependent_array_parm_type): New static function. + (type_unification_real): Call decay_dependent_array_parm_type + to decay a dependent array parameter type to its corresponding + pointer type before unification. + (more_specialized_fn): Likewise. + (get_bindings): Likewise. + * tree.c (cp_build_qualified_type): Trivial typofix in + documentation. + +2016-01-23 Martin Sebor <msebor@redhat.com> + + PR c++/58109 + PR c++/69022 + * decl2.c (is_late_template_attribute): Handle dependent argument + to attribute align and attribute vector_size. + +2016-01-21 Jason Merrill <jason@redhat.com> + + PR c++/69392 + * lambda.c (lambda_capture_field_type): Handle 'this' specially + for init-capture, too. + + PR c++/65687 + * decl.c (type_is_deprecated): Don't look into a typedef. + + PR c++/40751 + PR c++/64987 + * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN. + + PR c++/43407 + * decl.c (start_enum): Add attributes parameter. + * parser.c (cp_parser_enum_specifier): Pass it. + * pt.c (lookup_template_class_1): Pass it. + * cp-tree.h: Adjust. + +2016-01-19 Jason Merrill <jason@redhat.com> + + PR c++/59759 + * pt.c (convert_template_argument): Handle VAR_DECL properly. + +2016-01-19 Marek Polacek <polacek@redhat.com> + + PR c++/68586 + * constexpr.c (clear_cv_cache): New. + * cp-gimplify.c (clear_fold_cache): New. + * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare. + * decl.c (finish_enum_value_list): Call them. + + PR c++/68965 + * pt.c (tsubst_copy): Mark elements in expanded vector as used. + +2016-01-18 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/11858 + PR c++/24663 + PR c++/24664 + * decl.c (grokdeclarator): Don't decay array parameter type to + a pointer type if it's dependent. + (grokparms): Invoke strip_top_quals instead of directly invoking + cp_build_qualified_type. + * pt.c (decay_dependent_array_parm_type): New static function. + (type_unification_real): Call decay_dependent_array_parm_type + to decay a dependent array parameter type to its corresponding + pointer type before unification. + (more_specialized_fn): Likewise. + (get_bindings): Likewise. + * tree.c (cp_build_qualified_type): Trivial typofix in + documentation. + +2016-01-18 Jason Merrill <jason@redhat.com> + + * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input. + + * cp-gimplify.c (cp_fold): Remove unnecessary special cases. + + PR c++/68767 + * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify. Do fold COND_EXPR. + (contains_label_1, contains_label_p): Remove. + +2016-01-16 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69091 + * pt.c (type_dependent_expression_p): For a function template + specialization, a type is dependent iff any of its template + arguments are. + +2016-01-16 Patrick Palka <ppalka@gcc.gnu.org> + + * cp-array-notation.c (cp_expand_cond_array_notations): Return + error_mark_node only if find_rank failed, not if it was + successful. + +2016-01-16 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/68936 + * tree.c (build_min_non_dep_call_vec): Don't retain the + KOENIG_LOOKUP_P flag of the non-dependent expression that's + been built. + (build_min_non_dep_op_overload): Instead, do it here. + +2016-01-15 Jakub Jelinek <jakub@redhat.com> + + PR bootstrap/68271 + * parser.h (cp_token): Remove pragma_kind field. Add comment + with number of unused bits. + * parser.c (eof_token): Remove pragma_kind field initializer. + (cp_lexer_get_preprocessor_token): Don't set pragma_kind + field, don't clear CPP_PRAGMA u.value. + (cp_parser_pragma_kind): New function. + (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel, + cp_parser_omp_construct, cp_parser_initial_pragma, + cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing + pragma_kind field. + +2016-01-15 Jason Merrill <jason@redhat.com> + + PR c++/68847 + * call.c (build_cxx_call): Use fold_non_dependent_expr. + + * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of + value. + + PR c++/69257 + * typeck.c (decay_conversion): Don't call mark_rvalue_use for + array/function-to-pointer conversion. Call + complete_type_or_maybe_complain for lvalue-to-rvalue conversion. + * call.c (convert_like_real): Print call context if + decay_conversion errors. + +2016-01-14 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/68773 + * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't + set force_output. + +2016-01-14 Jason Merrill <jason@redhat.com> + + PR c++/69261 + * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR. + +2016-01-12 Marek Polacek <polacek@redhat.com> + + PR c++/68979 + * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than + error_at and adjust the return value. + +2016-01-12 Jakub Jelinek <jakub@redhat.com> + + PR objc++/68511 + PR c++/69213 + * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return + GS_ERROR whenever seen_error (), only if *expr_p contains + cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed. + + PR c++/66808 + PR c++/69000 + * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO. + +2016-01-11 Jason Merrill <jason@redhat.com> + + PR c++/69131 + * method.c (walk_field_subobs): Add dtor_from_ctor parm. + (process_subob_fn): Likewise. Don't consider triviality if true. + (synthesize_method_walk): Pass it. + +2016-01-11 David Malcolm <dmalcolm@redhat.com> + + PR c++/68795 + * parser.c (cp_parser_postfix_expression): Initialize + close_paren_loc to UNKNOWN_LOCATION; only use it if + it has been written to by + cp_parser_parenthesized_expression_list. + (cp_parser_parenthesized_expression_list): Document the behavior + with respect to the CLOSE_PAREN_LOC param. + +2016-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/69211 + * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR + folded operands have side-effects, but folding changed any of them, + build a new tree with the folded operands instead of returning the + unfolded tree. + +2016-01-09 Marek Polacek <polacek@redhat.com> + + PR c++/69113 + * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set. + +2016-01-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/69164 + * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs. + +2016-01-08 Jason Merrill <jason@redhat.com> + + PR c++/69158 + * constexpr.c (cxx_fold_indirect_ref): Handle array type differing + in completion. + +2016-01-08 Marek Polacek <polacek@redhat.com> + + PR c++/68449 + * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer. + +2016-01-08 Jason Merrill <jason@redhat.com> + + * constexpr.c (cxx_eval_call_expression): Remove convert_to_void + workaround. + + PR c++/68983 + PR c++/67557 + * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of + TREE_ADDRESSABLE type. + + PR c++/68983 + PR c++/67557 + * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR. + +2016-01-05 Nathan Sidwell <nathan@acm.org> + + PR c++/58583 + * pt.c (build_non_dependent_expr): Don't try a checking fold when + parsing an nsdmi. + +2016-01-04 Jakub Jelinek <jakub@redhat.com> + + Update copyright years. + +Copyright (C) 2016 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 84c9ba4..85834dd 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -1,5 +1,5 @@ # Top level -*- makefile -*- fragment for GNU C++. -# Copyright (C) 1994-2016 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/cp/NEWS b/gcc/cp/NEWS index 72a9a6c..94c8649 100644 --- a/gcc/cp/NEWS +++ b/gcc/cp/NEWS @@ -401,7 +401,7 @@ the exception handling work. -Copyright (C) 1997-2016 Free Software Foundation, Inc. +Copyright (C) 1997-2017 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 894f98e..e431221 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -1,5 +1,5 @@ /* Functions related to invoking -*- C++ -*- methods and overloaded functions. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) and modified by Brendan Kehoe (brendan@cygnus.com). diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf index 5453f5a..bf40476 100644 --- a/gcc/cp/cfns.gperf +++ b/gcc/cp/cfns.gperf @@ -2,7 +2,7 @@ %define class-name libc_name %struct-type %{ -/* Copyright (C) 2000-2016 Free Software Foundation, Inc. +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/cfns.h b/gcc/cp/cfns.h index 5634ab6..059e071 100644 --- a/gcc/cp/cfns.h +++ b/gcc/cp/cfns.h @@ -30,7 +30,7 @@ #line 4 "cfns.gperf" -/* Copyright (C) 2000-2016 Free Software Foundation, Inc. +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index df4d73c..1c6b401 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -1,5 +1,5 @@ /* Functions related to building classes and their related objects. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/config-lang.in b/gcc/cp/config-lang.in index 276fc1d..1ce8cd72 100644 --- a/gcc/cp/config-lang.in +++ b/gcc/cp/config-lang.in @@ -1,5 +1,5 @@ # Top level configure fragment for GNU C++. -# Copyright (C) 1994-2016 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index ca259cb..1e83b0b 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -2,7 +2,7 @@ constexpr functions. These routines are used both during actual parsing and during the instantiation of template functions. - Copyright (C) 1998-2016 Free Software Foundation, Inc. + Copyright (C) 1998-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc index 801f5a3..e91b116 100644 --- a/gcc/cp/constraint.cc +++ b/gcc/cp/constraint.cc @@ -1,5 +1,5 @@ /* Processing rules for constraints. - Copyright (C) 2013-2016 Free Software Foundation, Inc. + Copyright (C) 2013-2017 Free Software Foundation, Inc. Contributed by Andrew Sutton (andrew.n.sutton@gmail.com) This file is part of GCC. diff --git a/gcc/cp/cp-array-notation.c b/gcc/cp/cp-array-notation.c index 633ab09..a0c54fd 100644 --- a/gcc/cp/cp-array-notation.c +++ b/gcc/cp/cp-array-notation.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support It contains routines to handle Array Notation expression handling routines in the C++ Compiler. - Copyright (C) 2013-2016 Free Software Foundation, Inc. + Copyright (C) 2013-2017 Free Software Foundation, Inc. Contributed by Balaji V. Iyer <balaji.v.iyer@intel.com>, Intel Corporation diff --git a/gcc/cp/cp-cilkplus.c b/gcc/cp/cp-cilkplus.c index 7cde099..ce326b6 100644 --- a/gcc/cp/cp-cilkplus.c +++ b/gcc/cp/cp-cilkplus.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains routines to handle Cilk Plus specific routines for the C++ Compiler. - Copyright (C) 2013-2016 Free Software Foundation, Inc. + Copyright (C) 2013-2017 Free Software Foundation, Inc. Contributed by Aldy Hernandez <aldyh@redhat.com>. This file is part of GCC. diff --git a/gcc/cp/cp-cilkplus.h b/gcc/cp/cp-cilkplus.h index a93711e..bfefc5a 100644 --- a/gcc/cp/cp-cilkplus.h +++ b/gcc/cp/cp-cilkplus.h @@ -1,6 +1,6 @@ /* C++-specific tree lowering bits; see also c-gimplify.c and tree-gimple.c. - Copyright (C) 2002-2016 Free Software Foundation, Inc. + Copyright (C) 2002-2017 Free Software Foundation, Inc. Contributed by Jason Merrill <jason@redhat.com> This file is part of GCC. diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 0678243..e792cfd 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -1,6 +1,6 @@ /* C++-specific tree lowering bits; see also c-gimplify.c and tree-gimple.c. - Copyright (C) 2002-2016 Free Software Foundation, Inc. + Copyright (C) 2002-2017 Free Software Foundation, Inc. Contributed by Jason Merrill <jason@redhat.com> This file is part of GCC. diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index e1b4737..d4776a2 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -1,5 +1,5 @@ /* Language-dependent hooks for C++. - Copyright (C) 2001-2016 Free Software Foundation, Inc. + Copyright (C) 2001-2017 Free Software Foundation, Inc. Contributed by Alexandre Oliva <aoliva@redhat.com> This file is part of GCC. diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c index b78d24d..2c93252 100644 --- a/gcc/cp/cp-objcp-common.c +++ b/gcc/cp/cp-objcp-common.c @@ -1,5 +1,5 @@ /* Some code common to C++ and ObjC++ front ends. - Copyright (C) 2004-2016 Free Software Foundation, Inc. + Copyright (C) 2004-2017 Free Software Foundation, Inc. Contributed by Ziemowit Laski <zlaski@apple.com> This file is part of GCC. diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index f0e45c5..6692ca8 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -1,5 +1,5 @@ /* Language hooks common to C++ and ObjC++ front ends. - Copyright (C) 2004-2016 Free Software Foundation, Inc. + Copyright (C) 2004-2017 Free Software Foundation, Inc. Contributed by Ziemowit Laski <zlaski@apple.com> This file is part of GCC. diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def index 9e44076..038227b 100644 --- a/gcc/cp/cp-tree.def +++ b/gcc/cp/cp-tree.def @@ -1,7 +1,7 @@ /* This file contains the definitions and documentation for the additional tree codes used in the GNU C++ compiler (see tree.def for the standard codes). - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index ef6265e..f1a5835 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1,5 +1,5 @@ /* Definitions for C++ parsing and type checking. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/cp-ubsan.c b/gcc/cp/cp-ubsan.c index 9c8f6e6..71d315e 100644 --- a/gcc/cp/cp-ubsan.c +++ b/gcc/cp/cp-ubsan.c @@ -1,5 +1,5 @@ /* UndefinedBehaviorSanitizer, undefined behavior detector. - Copyright (C) 2014-2016 Free Software Foundation, Inc. + Copyright (C) 2014-2017 Free Software Foundation, Inc. Contributed by Jakub Jelinek <jakub@redhat.com> This file is part of GCC. diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index 400566f..ae9991a 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -1,5 +1,5 @@ /* Language-level data type conversion for GNU C++. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c index 8c701ff..150b603 100644 --- a/gcc/cp/cxx-pretty-print.c +++ b/gcc/cp/cxx-pretty-print.c @@ -1,5 +1,5 @@ /* Implementation of subroutines for the GNU C++ pretty-printer. - Copyright (C) 2003-2016 Free Software Foundation, Inc. + Copyright (C) 2003-2017 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> This file is part of GCC. diff --git a/gcc/cp/cxx-pretty-print.h b/gcc/cp/cxx-pretty-print.h index 1eb55df..72e6559 100644 --- a/gcc/cp/cxx-pretty-print.h +++ b/gcc/cp/cxx-pretty-print.h @@ -1,5 +1,5 @@ /* Interface for the GNU C++ pretty-printer. - Copyright (C) 2003-2016 Free Software Foundation, Inc. + Copyright (C) 2003-2017 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> This file is part of GCC. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index e70b34c..26c11e2 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -1,5 +1,5 @@ /* Process declarations and variables for C++ compiler. - Copyright (C) 1988-2016 Free Software Foundation, Inc. + Copyright (C) 1988-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/decl.h b/gcc/cp/decl.h index 1a4b1d4..3e1d91f 100644 --- a/gcc/cp/decl.h +++ b/gcc/cp/decl.h @@ -1,5 +1,5 @@ /* Variables and structures for declaration processing. - Copyright (C) 1993-2016 Free Software Foundation, Inc. + Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 257d211..a0375ad 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1,5 +1,5 @@ /* Process declarations and variables for C++ compiler. - Copyright (C) 1988-2016 Free Software Foundation, Inc. + Copyright (C) 1988-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c index 12c2549..e150ae2 100644 --- a/gcc/cp/dump.c +++ b/gcc/cp/dump.c @@ -1,5 +1,5 @@ /* Tree-dumping functionality for intermediate representation. - Copyright (C) 1999-2016 Free Software Foundation, Inc. + Copyright (C) 1999-2017 Free Software Foundation, Inc. Written by Mark Mitchell <mark@codesourcery.com> This file is part of GCC. diff --git a/gcc/cp/error.c b/gcc/cp/error.c index d025fcb..fde8499 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1,6 +1,6 @@ /* Call-backs for C++ error reporting. This code is non-reentrant. - Copyright (C) 1993-2016 Free Software Foundation, Inc. + Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify diff --git a/gcc/cp/except.c b/gcc/cp/except.c index f2d7cd1..034c35a 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -1,5 +1,5 @@ /* Handle exceptional things in C++. - Copyright (C) 1989-2016 Free Software Foundation, Inc. + Copyright (C) 1989-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann <tiemann@cygnus.com> Rewritten by Mike Stump <mrs@cygnus.com>, based upon an initial re-implementation courtesy Tad Hunt. diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c index e879f3c..77af54e 100644 --- a/gcc/cp/expr.c +++ b/gcc/cp/expr.c @@ -1,6 +1,6 @@ /* Convert language-specific tree expression to rtl instructions, for GNU compiler. - Copyright (C) 1988-2016 Free Software Foundation, Inc. + Copyright (C) 1988-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c index 5e4b2d1..9eec9e4 100644 --- a/gcc/cp/friend.c +++ b/gcc/cp/friend.c @@ -1,5 +1,5 @@ /* Help friends in C++. - Copyright (C) 1997-2016 Free Software Foundation, Inc. + Copyright (C) 1997-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c index 03cbde0..ffcc87c 100644 --- a/gcc/cp/g++spec.c +++ b/gcc/cp/g++spec.c @@ -1,5 +1,5 @@ /* Specific flags and argument handling of the C++ front end. - Copyright (C) 1996-2016 Free Software Foundation, Inc. + Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 47428b9..8f68c88b 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1,5 +1,5 @@ /* Handle initialization things in C++. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index c48cd52..715a61d 100644 --- a/gcc/cp/lambda.c +++ b/gcc/cp/lambda.c @@ -3,7 +3,7 @@ building RTL. These routines are used both during actual parsing and during the instantiation of template functions. - Copyright (C) 1998-2016 Free Software Foundation, Inc. + Copyright (C) 1998-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h index 9217950..6b383e1 100644 --- a/gcc/cp/lang-specs.h +++ b/gcc/cp/lang-specs.h @@ -1,5 +1,5 @@ /* Definitions for specs for C++. - Copyright (C) 1995-2016 Free Software Foundation, Inc. + Copyright (C) 1995-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index eec8b5d..797dd96 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -1,5 +1,5 @@ /* Separate lexical analyzer for GNU C++. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/logic.cc b/gcc/cp/logic.cc index b86e740..dd17c3b 100644 --- a/gcc/cp/logic.cc +++ b/gcc/cp/logic.cc @@ -1,5 +1,5 @@ /* Derivation and subsumption rules for constraints. - Copyright (C) 2013-2016 Free Software Foundation, Inc. + Copyright (C) 2013-2017 Free Software Foundation, Inc. Contributed by Andrew Sutton (andrew.n.sutton@gmail.com) This file is part of GCC. diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 4fffe0b..5f2fa35 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -1,5 +1,5 @@ /* Name mangling for the 3.0 -*- C++ -*- ABI. - Copyright (C) 2000-2016 Free Software Foundation, Inc. + Copyright (C) 2000-2017 Free Software Foundation, Inc. Written by Alex Samuel <samuel@codesourcery.com> This file is part of GCC. diff --git a/gcc/cp/method.c b/gcc/cp/method.c index a5271a4..5b366f0 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1,6 +1,6 @@ /* Handle the hair of processing (but not expanding) inline functions. Also manage function and variable name overloading. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 223838c..c422d2f 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -1,5 +1,5 @@ /* Definitions for C++ name lookup routines. - Copyright (C) 2003-2016 Free Software Foundation, Inc. + Copyright (C) 2003-2017 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> This file is part of GCC. diff --git a/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h index fd71038..8d8d723 100644 --- a/gcc/cp/name-lookup.h +++ b/gcc/cp/name-lookup.h @@ -1,5 +1,5 @@ /* Declarations for C++ name lookup routines. - Copyright (C) 2003-2016 Free Software Foundation, Inc. + Copyright (C) 2003-2017 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> This file is part of GCC. diff --git a/gcc/cp/operators.def b/gcc/cp/operators.def index 5b4f1b0..d26f2a1 100644 --- a/gcc/cp/operators.def +++ b/gcc/cp/operators.def @@ -5,7 +5,7 @@ non-overloadable operators (like the `?:' ternary operator). Written by Mark Mitchell <mark@codesourcery.com> - Copyright (C) 2000-2016 Free Software Foundation, Inc. + Copyright (C) 2000-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index b926ef7..f61d035 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -1,5 +1,5 @@ /* Perform optimizations on tree structure. - Copyright (C) 1998-2016 Free Software Foundation, Inc. + Copyright (C) 1998-2017 Free Software Foundation, Inc. Written by Mark Michell (mark@codesourcery.com). This file is part of GCC. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index e2a0a49..b94270d 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -1,5 +1,5 @@ /* -*- C++ -*- Parser. - Copyright (C) 2000-2016 Free Software Foundation, Inc. + Copyright (C) 2000-2017 Free Software Foundation, Inc. Written by Mark Mitchell <mark@codesourcery.com>. This file is part of GCC. diff --git a/gcc/cp/parser.h b/gcc/cp/parser.h index 6a52b12..f242f4c 100644 --- a/gcc/cp/parser.h +++ b/gcc/cp/parser.h @@ -1,5 +1,5 @@ /* Data structures and function exported by the C++ Parser. - Copyright (C) 2010-2016 Free Software Foundation, Inc. + Copyright (C) 2010-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3fa2ce9..fc21750 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1,5 +1,5 @@ /* Handle parameterized types (templates) for GNU -*- C++ -*-. - Copyright (C) 1992-2016 Free Software Foundation, Inc. + Copyright (C) 1992-2017 Free Software Foundation, Inc. Written by Ken Raeburn (raeburn@cygnus.com) while at Watchmaker Computing. Rewritten by Jason Merrill (jason@cygnus.com). diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c index 67a4ee8..109e41a 100644 --- a/gcc/cp/ptree.c +++ b/gcc/cp/ptree.c @@ -1,5 +1,5 @@ /* Prints out trees in human readable form. - Copyright (C) 1992-2016 Free Software Foundation, Inc. + Copyright (C) 1992-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c index 0a1535d..a732bc0 100644 --- a/gcc/cp/repo.c +++ b/gcc/cp/repo.c @@ -1,5 +1,5 @@ /* Code to maintain a C++ template repository. - Copyright (C) 1995-2016 Free Software Foundation, Inc. + Copyright (C) 1995-2017 Free Software Foundation, Inc. Contributed by Jason Merrill (jason@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 247a98f..94b8fe7 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -1,5 +1,5 @@ /* RunTime Type Identification - Copyright (C) 1995-2016 Free Software Foundation, Inc. + Copyright (C) 1995-2017 Free Software Foundation, Inc. Mostly written by Jason Merrill (jason@cygnus.com). This file is part of GCC. diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 325ef98..ec8f4ab 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1,6 +1,6 @@ /* Breadth-first and depth-first routines for searching multiple-inheritance lattice for GNU C++. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index a41bc73..2ab0723 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -3,7 +3,7 @@ building RTL. These routines are used both during actual parsing and during the instantiation of template functions. - Copyright (C) 1998-2016 Free Software Foundation, Inc. + Copyright (C) 1998-2017 Free Software Foundation, Inc. Written by Mark Mitchell (mmitchell@usa.net) based on code found formerly in parse.y and pt.c. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 9ded9f2..25927ae 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1,5 +1,5 @@ /* Language-dependent node constructors for parse phase of GNU compiler. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/type-utils.h b/gcc/cp/type-utils.h index 70c89a7..7d6b916 100644 --- a/gcc/cp/type-utils.h +++ b/gcc/cp/type-utils.h @@ -1,5 +1,5 @@ /* Utilities for querying and manipulating type trees. - Copyright (C) 2013-2016 Free Software Foundation, Inc. + Copyright (C) 2013-2017 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 21282c7..57a69ef 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -1,5 +1,5 @@ /* Build expressions with type checking for C++ compiler. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index b214c99..014de5c 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1,6 +1,6 @@ /* Report error messages, build initializers, and perform some front-end optimizations for C++ compiler. - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2017 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/vtable-class-hierarchy.c b/gcc/cp/vtable-class-hierarchy.c index 8c5f4c2..1162b8c 100644 --- a/gcc/cp/vtable-class-hierarchy.c +++ b/gcc/cp/vtable-class-hierarchy.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2016 Free Software Foundation, Inc. +/* Copyright (C) 2012-2017 Free Software Foundation, Inc. This file is part of GCC. |