aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog4383
-rw-r--r--gcc/cp/ChangeLog-20164388
-rw-r--r--gcc/cp/Make-lang.in2
-rw-r--r--gcc/cp/NEWS2
-rw-r--r--gcc/cp/call.c2
-rw-r--r--gcc/cp/cfns.gperf2
-rw-r--r--gcc/cp/cfns.h2
-rw-r--r--gcc/cp/class.c2
-rw-r--r--gcc/cp/config-lang.in2
-rw-r--r--gcc/cp/constexpr.c2
-rw-r--r--gcc/cp/constraint.cc2
-rw-r--r--gcc/cp/cp-array-notation.c2
-rw-r--r--gcc/cp/cp-cilkplus.c2
-rw-r--r--gcc/cp/cp-cilkplus.h2
-rw-r--r--gcc/cp/cp-gimplify.c2
-rw-r--r--gcc/cp/cp-lang.c2
-rw-r--r--gcc/cp/cp-objcp-common.c2
-rw-r--r--gcc/cp/cp-objcp-common.h2
-rw-r--r--gcc/cp/cp-tree.def2
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/cp/cp-ubsan.c2
-rw-r--r--gcc/cp/cvt.c2
-rw-r--r--gcc/cp/cxx-pretty-print.c2
-rw-r--r--gcc/cp/cxx-pretty-print.h2
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/cp/decl.h2
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/cp/dump.c2
-rw-r--r--gcc/cp/error.c2
-rw-r--r--gcc/cp/except.c2
-rw-r--r--gcc/cp/expr.c2
-rw-r--r--gcc/cp/friend.c2
-rw-r--r--gcc/cp/g++spec.c2
-rw-r--r--gcc/cp/init.c2
-rw-r--r--gcc/cp/lambda.c2
-rw-r--r--gcc/cp/lang-specs.h2
-rw-r--r--gcc/cp/lex.c2
-rw-r--r--gcc/cp/logic.cc2
-rw-r--r--gcc/cp/mangle.c2
-rw-r--r--gcc/cp/method.c2
-rw-r--r--gcc/cp/name-lookup.c2
-rw-r--r--gcc/cp/name-lookup.h2
-rw-r--r--gcc/cp/operators.def2
-rw-r--r--gcc/cp/optimize.c2
-rw-r--r--gcc/cp/parser.c2
-rw-r--r--gcc/cp/parser.h2
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/cp/ptree.c2
-rw-r--r--gcc/cp/repo.c2
-rw-r--r--gcc/cp/rtti.c2
-rw-r--r--gcc/cp/search.c2
-rw-r--r--gcc/cp/semantics.c2
-rw-r--r--gcc/cp/tree.c2
-rw-r--r--gcc/cp/type-utils.h2
-rw-r--r--gcc/cp/typeck.c2
-rw-r--r--gcc/cp/typeck2.c2
-rw-r--r--gcc/cp/vtable-class-hierarchy.c2
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.