+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