summaryrefslogtreecommitdiff
path: root/gcc/cp/ChangeLog-2018
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/ChangeLog-2018')
-rw-r--r--gcc/cp/ChangeLog-20185477
1 files changed, 5477 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog-2018 b/gcc/cp/ChangeLog-2018
new file mode 100644
index 00000000000..a53ea052510
--- /dev/null
+++ b/gcc/cp/ChangeLog-2018
@@ -0,0 +1,5477 @@
+2018-12-27 Martin Liska <mliska@suse.cz>
+
+ PR c++/88263
+ * decl2.c (get_local_tls_init_fn): Add location_t argument and
+ use it.
+ (get_tls_init_fn): Call it with location of variable for which
+ we'll need to create tls_init function.
+ (handle_tls_init): Likewise.
+
+2018-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86524
+ PR c++/88446
+ * cp-tree.h (cp_fold_maybe_rvalue, cp_fold_rvalue): Declare.
+ (fold_non_dependent_expr): Add manifestly_const_eval argument.
+ * constexpr.c (cxx_eval_builtin_function_call): Evaluate
+ __builtin_constant_p if ctx->manifestly_const_eval even in constexpr
+ functions. Don't reuse dummy{1,2} vars between different arguments.
+ Use cp_fold_rvalue instead of cp_fully_fold. Fix comment typo.
+ (fold_non_dependent_expr): Add manifestly_const_eval argument, pass
+ it through to cxx_eval_outermost_constant_expr and
+ maybe_constant_value.
+ * cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): No longer
+ static.
+ * semantics.c (finish_static_assert): Call fold_non_dependent_expr
+ with true as manifestly_const_eval.
+
+2018-12-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88196 - ICE with class non-type template parameter.
+ * pt.c (convert_nontype_argument): If the expr is a PTRMEM_CST, also
+ check if the type we're converting it to is TYPE_PTRMEM_P.
+
+2018-12-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR c/51628
+ * call.c (convert_for_arg_passing): Call
+ warn_for_address_or_pointer_of_packed_member.
+ * typeck.c (convert_for_assignment): Likewise.
+
+2018-12-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88180
+ * parser.c (cp_parser_class_specifier_1): If
+ cp_parser_check_type_definition fails, skip default arguments, NSDMIs,
+ etc. like for erroneous template args.
+
+ * cp-tree.h (cp_fully_fold_init): Declare.
+ * cp-gimplify.c (cp_fully_fold_init): New function.
+ * typeck2.c (split_nonconstant_init, store_init_value): Use it
+ instead of cp_fully_fold.
+
+2018-12-19 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers
+ on top-level asm.
+
+2018-12-19 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * parser.c (cp_parser_asm_definition) <RID_CONST, RID_RESTRICT>: Give
+ a more specific error message (instead of just falling through).
+
+2018-12-19 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * parser.c (cp_parser_asm_definition): Rewrite the loop to work without
+ "done" boolean variable.
+ * parser.c (cp_parser_asm_definition): Keep track of the location each
+ asm qualifier is first seen; use that to give nicer "duplicate asm
+ qualifier" messages.
+
+2018-12-19 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * parser.c (cp_parser_asm_definition): Rewrite the loop to work without
+ "done" boolean variable.
+
+2018-12-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/88375
+ * typeck.c (convert_for_assignment): Capture location of rhs
+ before stripping, and if available. Use the location when
+ complaining about bad conversions, labelling it with the
+ rhstype if the location was present.
+ * typeck2.c (digest_init_r): Capture location of init before
+ stripping.
+
+2018-12-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/87504
+ * call.c (op_error): Convert 1st param from location_t to
+ const op_location_t &. Use binary_op_rich_location for binary
+ ops.
+ (build_conditional_expr_1): Convert 1st param from location_t to
+ const op_location_t &.
+ (build_conditional_expr): Likewise.
+ (build_new_op_1): Likewise.
+ (build_new_op): Likewise.
+ * cp-tree.h (build_conditional_expr): Likewise.
+ (build_new_op): Likewise.
+ (build_x_binary_op): Likewise.
+ (cp_build_binary_op): Likewise.
+ * parser.c (cp_parser_primary_expression): Build a location
+ for id-expression nodes.
+ (cp_parser_binary_expression): Use an op_location_t when
+ calling build_x_binary_op.
+ (cp_parser_operator): Build a location for user-defined literals.
+ * typeck.c (build_x_binary_op): Convert 1st param from location_t
+ to const op_location_t &.
+ (cp_build_binary_op): Likewise. Use binary_op_rich_location.
+
+2018-12-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/43064
+ PR c++/43486
+ * call.c (build_conditional_expr_1): Strip location wrappers when
+ checking for CONST_DECL.
+ (conversion_null_warnings): Use location of "expr" if available.
+ * class.c (fixed_type_or_null): Handle location wrappers.
+ * constexpr.c (potential_constant_expression_1): Likewise.
+ * cvt.c (ignore_overflows): Strip location wrappers when
+ checking for INTEGER_CST, and re-wrap the result if present.
+ (ocp_convert): Call fold_for_warn before checking for INTEGER_CST.
+ * decl.c (reshape_init_r): Strip any location wrapper.
+ (undeduced_auto_decl): Likewise.
+ * expr.c (mark_discarded_use): Likewise for expr.
+ * init.c (build_aggr_init): Likewise before checking init for
+ DECL_P.
+ (warn_placement_new_too_small): Call fold_for_warn on adj before
+ checking for CONSTANT_CLASS_P, and on nelts. Strip any location
+ wrapper from op0 and on oper before checking for VAR_P.
+ * parser.c (cp_parser_primary_expression): Call
+ maybe_add_location_wrapper on numeric and string literals.
+ (cp_parser_postfix_expression): Strip any location wrapper when
+ checking for DECL_IS_BUILTIN_CONSTANT_P.
+ (cp_parser_unary_expression): Ensure that folding of NEGATE_EXPR
+ around a constant happens in the presence of location wrappers and
+ returns a wrapped result.
+ (cp_parser_has_attribute_expression): Strip any location wrapper
+ from "oper".
+ (cp_parser_binary_expression): Strip any location wrapper when
+ checking for DECL_P on the lhs.
+ (cp_parser_decltype): Strip any location wrapper from result of
+ cp_parser_decltype_expr.
+ (cp_parser_mem_initializer): Add location wrappers to the
+ parenthesized expression list.
+ (cp_parser_template_parameter_list): Don't create wrapper nodes
+ within a template-parameter-list.
+ (cp_parser_template_argument_list): Don't create wrapper nodes
+ within a template-argument-list.
+ (cp_parser_parameter_declaration): Strip location wrappers from
+ default arguments.
+ (cp_parser_gnu_attribute_list): Don't create wrapper nodes.
+ (cp_parser_std_attribute_spec_seq): Likewise.
+ (cp_parser_omp_all_clauses): Don't create wrapper nodes within
+ OpenMP clauses.
+ (cp_parser_omp_for_loop): Likewise.
+ (cp_parser_omp_declare_reduction_exprs): Likewise.
+ * pt.c (convert_nontype_argument_function): Strip location
+ wrappers from fn_no_ptr before checking for FUNCTION_DECL.
+ (tsubst_default_argument): Move note about which callsite led to
+ instantiation to after the check_default_argument call.
+ (do_auto_deduction): Likewise from init before checking for
+ DECL_P.
+ * semantics.c (force_paren_expr): Likewise from expr before
+ checking for DECL_P.
+ (finish_parenthesized_expr): Likewise from expr before
+ checking for STRING_CST.
+ (perform_koenig_lookup): Likewise from fn.
+ (finish_call_expr): Likewise.
+ (finish_id_expression): Rename to...
+ (finish_id_expression_1): ...this, calling
+ maybe_add_location_wrapper on the result.
+ (capture_decltype): Use lookup_name_real rather than value_member
+ when looking up decl within the capture-list.
+ * tree.c (cp_stabilize_reference): Strip any location wrapper.
+ (builtin_valid_in_constant_expr_p): Likewise.
+ (strip_typedefs_expr): Strip any location wrapper before checking
+ for decls or constants.
+ (is_overloaded_fn): Likewise.
+ (maybe_get_fns): Likewise.
+ (selftest::test_lvalue_kind): Verify lvalue_p.
+ * typeck.c (cxx_sizeof_expr): Strip any location wrapper.
+ (cxx_alignof_expr): Likewise.
+ (is_bitfield_expr_with_lowered_type): Handle location wrappers.
+ (cp_build_array_ref): Call maybe_constant_value on "idx".
+ (cp_build_binary_op): Strip location wrapper from first_arg before
+ checking for PARM_DECL. Likewise for op1 before checking for
+ INTEGER_CST in two places. Likewise for orig_op0 and orig_op1
+ when checking for STRING_CST.
+ (cp_build_addr_expr_1): Likewise for arg when checking for
+ FUNCTION_DECL.
+ (cp_build_modify_expr): Likewise for newrhs when checking for
+ STRING_CST.
+ (convert_for_assignment): Don't strip location wrappers when
+ stripping NON_LVALUE_EXPR.
+ (maybe_warn_about_returning_address_of_local): Strip location
+ wrapper from whats_returned before checking for DECL_P.
+ (can_do_nrvo_p): Strip location wrapper from retval.
+ (treat_lvalue_as_rvalue_p): Likewise.
+ (check_return_expr): Likewise.
+ * typeck2.c (cxx_incomplete_type_diagnostic): Strip location
+ wrapper from value before checking for VAR_P or PARM_DECL.
+ (digest_init_r): Strip location wrapper from init. When
+ copying "init", also copy the wrapped node.
+
+2018-12-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87934
+ * constexpr.c (cxx_eval_constant_expression) <case CONSTRUCTOR>: Do
+ re-process TREE_CONSTANT CONSTRUCTORs if they aren't reduced constant
+ expressions.
+
+2018-12-19 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/87012
+ * pt.c (convert_template_argument): Canonicalize type after
+ tsubst/deduce.
+
+ PR c++/88146
+ * method.c (do_build_copy_constructor): Guard cvquals init and
+ loop over fields to run for non-inherited ctors only.
+ (synthesize_method): Retain location of inherited ctor.
+
+2018-12-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88410
+ * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: For offsetof-like folding,
+ call maybe_constant_value on val to see if it is INTEGER_CST.
+
+2018-12-17 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/52321
+ * typeck.c (build_static_cast): Print a note when the destination
+ type or the operand is a pointer/reference to incomplete class type.
+
+2018-12-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88482
+ * except.c (verify_library_fn): New function.
+ (declare_library_fn): Use it. Initialize TM even if the non-TM
+ library function has been user declared.
+ (do_end_catch): Don't set TREE_NOTHROW on error_mark_node.
+ (expand_start_catch_block): Don't call initialize_handler_parm
+ for error_mark_node.
+ (build_throw): Use verify_library_fn. Initialize TM even if the
+ non-TM library function has been user declared. Don't crash if
+ any library fn is error_mark_node.
+
+2018-12-14 Jason Merrill <jason@redhat.com>
+
+ * pt.c (tsubst_expr) [DECL_EXPR]: Ignore class-scope bindings when
+ looking up a capture proxy.
+
+2018-12-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84644
+ * decl.c (check_tag_decl): A decltype with no declarator
+ doesn't declare anything.
+
+2018-12-14 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/87814
+ * pt.c (tsubst_exception_specification): Handle
+ DEFERRED_NOEXCEPT with !defer_ok.
+
+2018-12-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/86823
+ * parser.c (cp_parser_template_id): Rearrange deferred access
+ checks into the firewall.
+
+2018-12-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/82294
+ PR c++/87436
+ * init.c (build_vec_init): Change num_initialized_elts type from int
+ to HOST_WIDE_INT. Build a RANGE_EXPR if e needs to be repeated more
+ than once.
+
+2018-12-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88216 - ICE with class type in non-type template parameter.
+ * mangle.c (write_expression): Handle TARGET_EXPR and
+ VIEW_CONVERT_EXPR.
+ * pt.c (convert_nontype_argument): Don't call
+ get_template_parm_object for value-dependent expressions.
+
+2018-12-13 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/87531
+ * class.c (finish_struct): Set DECL_CONTEXT of template assign op.
+ * name-lookup.c (get_class_binding_direct): Don't strip using-decl
+ of overload here.
+ * parser.c (cp_parser_postfix_expression): Cope with using decl in
+ overload set.
+ * semantics.c (finish_id_expr): Likewise.
+
+2018-12-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (grokdeclarator): Fix location of error message about
+ static data member definition.
+
+2018-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88446
+ * cp-tree.h (maybe_constant_value): Add manifestly_const_eval
+ argument.
+ * constexpr.c (struct constexpr_call): Rename pretend_const_required
+ member to manifestly_const_eval.
+ (struct constexpr_ctx): Likewise.
+ (constexpr_call_hasher::equal): Adjust users.
+ (cxx_eval_builtin_function_call): Likewise. Formatting fix.
+ (cxx_eval_call_expression): Adjust users.
+ (cxx_eval_outermost_constant_expr, maybe_constant_init_1,
+ maybe_constant_init): Rename pretend_const_required argument to
+ manifestly_const_eval, adjust function comments.
+ (maybe_constant_value): Add manifestly_const_eval argument. If true,
+ don't cache and call cxx_eval_outermost_constant_expr with true as
+ manifestly_const_eval.
+ * decl.c (compute_array_index_type_loc): Call maybe_constant_value
+ with true as manifestly_const_eval.
+
+ PR c++/88449
+ * constexpr.c (struct constexpr_call): Add pretend_const_required
+ member.
+ (constexpr_call_hasher::equal): Return false if pretend_const_required
+ members differ.
+ (cxx_eval_call_expression): Adjust new_call initialization. Hash in
+ ctx->pretend_const_required.
+
+2018-12-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87861
+ * class.c (build_vtbl_initializer): For TARGET_VTABLE_USES_DESCRIPTORS
+ bump index for each added word.
+ * constexpr.c (find_array_ctor_elt): Add forward declaration.
+ (cxx_eval_call_expression): Handle TARGET_VTABLE_USES_DESCRIPTORS
+ vtable calls.
+ (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Divide token
+ by TARGET_VTABLE_USES_DESCRIPTORS if non-zero.
+
+2018-12-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86608 - reading constexpr volatile variable.
+ * constexpr.c (potential_constant_expression_1): Check want_rval
+ instead of checking if we have a decl.
+ * decl2.c (decl_maybe_constant_var_p): Don't consider volatile
+ constexpr variables as maybe constant.
+
+2018-12-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (grokvardecl): Add location_t parameter and use it
+ in build_lang_decl_loc and build_decl calls.
+ (grokdeclarator): Move up loc declaration and use it in the
+ grokvardecl call too.
+
+2018-12-09 Cesar Philippidis <cesar@codesourcery.com>
+
+ * parser.c (cp_parser_oacc_kernels_parallel): Adjust EXPR_LOCATION
+ on the combined acc loop.
+
+2018-12-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in error messages
+ about bit-fields with function type, warn_if_not_aligned type, and
+ static bit-fields; avoid DECL_NAME for unnamed declarations.
+
+2018-12-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86669
+ * call.c (make_temporary_var_for_ref_to_temp): Call pushdecl even for
+ automatic vars.
+
+ PR c++/87506
+ * constexpr.c (adjust_temp_type): Handle EMPTY_CLASS_EXPR.
+
+2018-12-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * class.c (check_bitfield_decl): In error message about non-integral
+ type print the type itself too.
+ * decl.c (grokdeclarator): Do not ICE on unnamed bit-fields declared
+ friends; when calling build_decl for a FIELD_DECL possibly pass the
+ declarator->id_loc.
+
+2018-12-06 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/86747
+ * pt.c (tsubst_friend_class): Enter tsubsted class context.
+
+ PR c++/86397
+ * except.c (build_noexcept_spec): Resolve nondependent
+ expressions.
+
+2018-12-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/88136 - -Wdeprecated-copy false positives
+ * class.c (classtype_has_depr_implicit_copy): Rename from
+ classtype_has_user_copy_or_dtor.
+ * method.c (lazily_declare_fn): Adjust.
+ * decl2.c (cp_warn_deprecated_use): Refer to -Wdeprecated-copy-dtor
+ if deprecation is due to a destructor.
+
+2018-12-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88373 - wrong parse error with ~.
+ * parser.c (cp_parser_template_name): Check tag_type for
+ none_type.
+
+2018-12-06 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * cp-tree.h (finish_asm_stmt): Update declaration.
+ * parser.c (cp_parser_asm_definition): Detect the inline keyword
+ after asm. Pass a flag for it to finish_asm_stmt.
+ * pt.c (tsubst_expr): Pass the ASM_INLINE_P flag to finish_asm_stmt.
+ * semantics.c (finish_asm_stmt): Add inline_p parameter. Use it to
+ set ASM_INLINE_P.
+
+2018-12-06 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR inline-asm/55681
+ * parser.c (cp_parser_asm_definition): Update grammar. Allow any
+ combination of volatile and goto, in any order, without repetitions.
+
+2018-12-06 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85110
+ * call.c (conversion_null_warnings): Try to use the location of
+ the expression for the warnings. Add notes showing the parameter
+ of the function decl, where available.
+ (get_fndecl_argument_location): For implicitly-declared functions,
+ use the fndecl location rather than that of the param.
+ (maybe_inform_about_fndecl_for_bogus_argument_init): New function.
+ (convert_like_real): Use it in various places to avoid repetition.
+ (complain_about_bad_argument): Likewise.
+ * cp-tree.h (maybe_inform_about_fndecl_for_bogus_argument_init):
+ New declaration.
+ * decl2.c (check_default_args): Put all diagnostics for the fndecl
+ into a diagnostic group. Use the location of the parameter when
+ complaining about parameters with missing default arguments in
+ preference to that of the fndecl. Attempt to record the location
+ of the first parameter with a default argument and emit a note
+ for the first parameter that's missing one.
+ * typeck.c (convert_arguments): When complaining about parameters
+ with incomplete types, attempt to use the location of the
+ argument. Where available, add a note showing the pertinent
+ parameter in the fndecl.
+ (convert_for_assignment): When complaining about bad conversions
+ at function calls, use the location of the unstripped argument.
+ (convert_for_initialization): When checking for bogus references,
+ add an auto_diagnostic_group, and update the note to use the
+ location of the pertinent parameter, rather than just the callee.
+
+2018-12-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in error message;
+ print the type too; fix thinko in INDIRECT_TYPE_P use.
+
+2018-12-05 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/85569
+ * constexpr.c (adjust_temp_type): Test for type equality with
+ same_type_p.
+ (constexpr_call_hasher::equal): Likewise.
+
+2018-12-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84636
+ * decl.c (grokdeclarator): Avoid crashing on an anonymous bit-field
+ with function type.
+
+2018-12-04 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88184 - ICE when treating name as template-name.
+ * pt.c (lookup_template_function): Always build the TEMPLATE_ID_EXPR
+ with unknown_type_node.
+
+2018-12-04 Julian Brown <julian@codesourcery.com>
+
+ * parser.c (cp_parser_oacc_wait_list): Fix error message and avoid
+ duplicate diagnostic.
+
+2018-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88103
+ * typeck.c (build_class_member_access_expr): If unary_complex_lvalue
+ turned xvalue_p into non-xvalue_p, call move on it.
+
+2018-12-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88258
+ * parser.c (cp_parser_skip_to_closing_parenthesis_1,
+ cp_parser_skip_to_end_of_statement,
+ cp_parser_skip_to_end_of_block_or_statement,
+ cp_parser_skip_to_closing_brace,
+ cp_parser_skip_to_closing_square_bracket,
+ cp_parser_skip_balanced_tokens): Don't treat CPP_PRAGMA_EOL specially
+ if in_pragma is false.
+
+2018-12-01 Marek Polacek <polacek@redhat.com>
+
+ Implement P0634R3, Down with typename!
+ * parser.c (CP_PARSER_FLAGS_TYPENAME_OPTIONAL): New enumerator.
+ (cp_parser_type_name): Remove declaration.
+ (cp_parser_postfix_expression): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
+ to cp_parser_type_id.
+ (cp_parser_new_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
+ cp_parser_type_specifier_seq.
+ (cp_parser_lambda_declarator_opt): Pass
+ CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
+ cp_parser_parameter_declaration_clause.
+ (cp_parser_condition): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator.
+ (cp_parser_simple_declaration): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_init_declarator.
+ (cp_parser_conversion_type_id): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_type_specifier_seq.
+ (cp_parser_default_type_template_argument): Pass
+ CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_type_id.
+ (cp_parser_template_parameter): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
+ to cp_parser_parameter_declaration.
+ (cp_parser_explicit_instantiation): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator.
+ (cp_parser_simple_type_specifier): Adjust call to cp_parser_type_name
+ to relay if we should treat the typename keyword as optional. Maybe
+ call cp_parser_make_typename_type is parsing a template-id and it's
+ not a TYPE_DECL.
+ (cp_parser_type_name): Remove unused function.
+ (cp_parser_enum_specifier): Pass to CP_PARSER_FLAGS_NONE
+ cp_parser_type_specifier_seq.
+ (cp_parser_alias_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
+ to cp_parser_type_id.
+ (cp_parser_init_declarator): New parameter. Pass it down to
+ cp_parser_declarator.
+ (cp_parser_declarator): New parameter. Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator. Pass the new parameter to
+ cp_parser_direct_declarator.
+ (cp_parser_direct_declarator): New parameter. Pass it to
+ cp_parser_parameter_declaration_clause and cp_parser_declarator.
+ (cp_parser_declarator_id):
+ (cp_parser_type_id_1): New parameter. Pass it to
+ cp_parser_type_specifier_seq. Adjust call to cp_parser_declarator.
+ (cp_parser_type_id): New parameter. Pass it to cp_parser_type_id_1.
+ (cp_parser_template_type_arg): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_type_id_1.
+ (cp_parser_trailing_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
+ to cp_parser_type_id_1.
+ (cp_parser_type_specifier_seq): New parameter.
+ (function_being_declared_is_template_p):
+ (cp_parser_parameter_declaration_clause): New parameter. Pass it to
+ cp_parser_parameter_declaration_list.
+ (cp_parser_parameter_declaration_list): New parameter. Pass it to
+ cp_parser_parameter_declaration.
+ (cp_parser_parameter_declaration): New parameter. Pass it to
+ cp_parser_decl_specifier_seq. Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator.
+ (cp_parser_member_declaration): Adjust call to
+ cp_parser_decl_specifier_seq to also include
+ CP_PARSER_FLAGS_TYPENAME_OPTIONAL. Pass
+ CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_declarator.
+ (cp_parser_exception_declaration): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_type_specifier_seq and cp_parser_declarator.
+ (cp_parser_requirement_parameter_list): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_parameter_declaration_clause.
+ (cp_parser_constructor_declarator_p): Resolve the TYPENAME_TYPE.
+ (cp_parser_single_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
+ to cp_parser_decl_specifier_seq and cp_parser_init_declarator.
+ (cp_parser_cache_defarg): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator and cp_parser_parameter_declaration_list.
+ (cp_parser_objc_method_tail_params_opt): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_parameter_declaration.
+ (cp_parser_objc_class_ivars): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator.
+ (cp_parser_objc_try_catch_finally_statement): Pass CP_PARSER_FLAGS_NONE
+ to cp_parser_parameter_declaration
+ (cp_parser_objc_struct_declaration): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator.
+ (cp_parser_omp_for_loop_init): Pass CP_PARSER_FLAGS_NONE to
+ cp_parser_declarator and cp_parser_type_specifier_seq.
+
+2018-11-30 David Malcolm <dmalcolm@redhat.com>
+
+ * typeck2.c: Include "gcc-rich-location.h".
+ (cxx_incomplete_type_diagnostic): When complaining about possibly
+ missing parens, add a fix-it hint if the member function takes no
+ additional params.
+
+2018-11-30 James Norris <jnorris@codesourcery.com>
+
+ * parser.c (cp_parser_oacc_enter_exit_data): Use existing local
+ variable.
+
+2018-11-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (compute_array_index_type_loc): New, like the current
+ compute_array_index_type but takes a location_t too.
+ (compute_array_index_type): Forward to the latter.
+ (create_array_type_for_decl): Use compute_array_index_type_loc.
+
+2018-11-29 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/88121
+ * cp-name-hint.h (suggest_alternative_in_scoped_enum): New decl.
+ * error.c (dump_scope): Ensure that we print any scope for values
+ of unscoped enums. Print the scope of values of scoped enums.
+ (qualified_name_lookup_error): Offer suggestions for failures
+ within scoped enums by calling suggest_alternative_in_scoped_enum.
+ * name-lookup.c (class namespace_hints): Update comment to mention
+ scoped enums.
+ (namespace_hints::namespace_hints): Call
+ maybe_add_candidate_for_scoped_enum.
+ (namespace_hints::maybe_add_candidate_for_scoped_enum): New member
+ (suggest_alternatives_for): Update comment to mention scoped
+ enums.
+ (suggest_alternative_in_scoped_enum): New function.
+
+2018-11-28 Marek Polacek <polacek@redhat.com>
+
+ Implement P1094R2, Nested inline namespaces.
+ * parser.c (cp_parser_namespace_definition): Parse the optional inline
+ keyword in a nested-namespace-definition. Adjust push_namespace call.
+ Formatting fix.
+
+2018-11-28 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/87531
+ * class.c (finish_struct): In a template, add artificial using
+ decl for operator=.
+
+2018-11-28 Jan Hubicka <hubicka@ucw.cz>
+
+ * except.c (do_allocate_exception): Annotate __cxa_allocate_exception
+ as COLD.
+
+2018-11-28 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88222 - ICE with bit-field with invalid type.
+ * decl.c (grokdeclarator): Check if declarator is null.
+
+2018-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87476
+ * typeck2.c (digest_init_r): Re-add handing of signed/unsigned char
+ strings and add it to the initialization of wide array from non-wide
+ string diagnostics too.
+
+2018-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88187
+ * decl.c (grokdeclarator): Don't diagnose deduction guide errors
+ if !funcdecl_p.
+
+ PR c++/88181
+ * class.c (fixup_attribute_variants): Also propagate TYPE_PACKED
+ to variants.
+
+2018-11-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88120 - ICE when calling save_expr in a template.
+ * typeck.c (cp_build_binary_op): Call cp_save_expr instead of
+ save_expr.
+
+2018-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87386
+ * parser.c (cp_parser_operator): Use str.get_value () instead of just
+ str in USERDEF_LITERAL_VALUE and USERDEF_LITERAL_SUFFIX_ID arguments.
+
+2018-11-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88122
+ * method.c (maybe_explain_implicit_delete): If
+ FUNCTION_FIRST_USER_PARMTYPE (decl) is NULL, set const_p to false
+ instead of ICEing.
+
+ PR c++/87386
+ * parser.c (cp_parser_primary_expression): Use
+ id_expression.get_location () instead of id_expr_token->location.
+ Adjust the range from id_expr_token->location to
+ id_expressio.get_finish ().
+ (cp_parser_operator_function_id): Pass location of the operator
+ token down to cp_parser_operator.
+ (cp_parser_operator): Add start_loc argument, always construct a
+ location with caret at start_loc and range from start_loc to the
+ finish of the last token.
+
+ PR c++/87393
+ * parser.c (cp_parser_linkage_specification): Remove useless
+ dereference of the consume_open method result.
+
+2018-11-20 Martin Sebor <msebor@redhat.com>
+
+ * cp-tree.h (cp_check_const_attributes): Declare.
+ * decl2.c (cp_check_const_attributes): Declare extern.
+ * parser.c (cp_parser_has_attribute_expression): New function.
+ (cp_parser_unary_expression): Handle RID_HAS_ATTRIBUTE_EXPRESSION.
+ (cp_parser_gnu_attribute_list): Add argument.
+
+2018-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88110
+ * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Punt
+ if get_base_address of ADDR_EXPR operand is not a DECL_P.
+
+2018-11-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87781 - detect invalid elaborated-type-specifier.
+ * parser.c (cp_parser_elaborated_type_specifier): Ensure that
+ typename follows a nested-name-specifier.
+
+2018-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl2.c (grokfield): Remove obsolete _vptr check; fix
+ explicit template argument list error location.
+
+2018-11-16 Kamlesh Kumar <kamleshbhalui@gmail.com>
+
+ DR 1207
+ PR c++/52869
+ * parser.c (cp_parser_noexcept_specification_opt): Call
+ inject_this_parameter.
+
+2018-11-16 Jason Merrill <jason@redhat.com>
+
+ Implement P0479R5, [[likely]] and [[unlikely]].
+ * tree.c (handle_likeliness_attribute): New.
+ (std_attribute_table): Add likely/unlikely.
+ * cp-gimplify.c (lookup_hotness_attribute, remove_hotness_attribute)
+ (process_stmt_hotness_attribute, first_stmt): New.
+ (genericize_if_stmt): Check for duplicate predictions.
+ * parser.c (cp_parser_statement): Call
+ process_stmt_hotness_attribute.
+ (cp_parser_label_for_labeled_statement): Apply attributes to case.
+ * decl.c (finish_case_label): Give label in template type void.
+ * pt.c (tsubst_expr) [CASE_LABEL_EXPR]: Copy attributes.
+ [PREDICT_EXPR]: Handle.
+
+2018-11-16 Nathan Sidwell <nathan@acm.org>
+
+ Remove ovl_used, it is no longer needed
+ * cp-tree.h (OVL_USED_P): Delete.
+ (lookup_keep): Delete.
+ * friend.c (add_friend): Don't call it.
+ * parser.c (lookup_literal_operator): Likewise.
+ (cp_parser_primary_expression): Likewise.
+ * semantics.c (perform_koenig_lookup): Likewise.
+ * pt.c (tsubst_copy <OVERLOAD>): Don't assert OVL_USED_P.
+ * tree.c (ovl_copy): Delete.
+ (ovl_insert): Remove OVL_USED_P checks.
+ (ovl_iterator::reveal_node): Likewise.
+ (ovl_iterator::remove__node): Likewise.
+ (ovl_used, lookup_keep): Delete.
+
+ PR c++/87269
+ * parser.c (lookup_literal_operator): Mark overload for keeping
+ when inside template. Refactor.
+
+2018-11-15 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/86246
+ PR c++/87989
+ * typeck.c (finish_class_member_access_expr): Conversion operator
+ to dependent type is dependent.
+
+2018-11-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * constexpr.c (ensure_literal_type_for_constexpr_object): Use
+ DECL_SOURCE_LOCATION in error_at calls.
+
+2018-11-15 Nathan Sidwell <nathan@acm.org>
+
+ DR 2336
+ * cp-tree.h (enum special_function_kind): Add sfk_virtual_destructor.
+ * method.c (type_has_trivial_fn): Add it.
+ (SFK_DTOR_P): Likewise.
+ (synthesized_method_base_walk): Don't check access of vbases of
+ abstract classes when sfk_virtual_destructor.
+ (synthesized_method_walk): Skip vbases of abstract classes except
+ when sfk_virtual_destructor.
+ (get_defaulted_eh_spec): Set sfk_virtual_destructor as needed.
+
+ * cp-tree.h (enum special_function_kind): Reorder and comment.
+ * method.c (SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P)
+ (SFK_MOVE_P): New predicates.
+ (walk_field_subobs, synthesized_method_base_walk): Drop
+ copy_arg_p, move_p, assign_p args. Use new SFK predicates. Order
+ parameters consistently.
+ (synthesized_method_walk): Drop ctor_p, copy_arg_p, move_p,
+ assign_p calculations. Use new SFK predicates. Adjust calls to
+ worker functions.
+
+2018-11-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * parser.c (make_id_declarator): Add location_t parameter.
+ (cp_parser_lambda_declarator_opt): Adjust call.
+ (cp_parser_decomposition_declaration): Likewise.
+ (cp_parser_alias_declaration): Likewise.
+ (cp_parser_direct_declarator): Likewise.
+ (cp_parser_member_declaration): Likewise.
+ (cp_parser_objc_class_ivars): Likewise.
+ * decl.c (grokdeclarator): Use declarator->id_loc in two error
+ messages.
+
+2018-11-14 Jakub Jelinek <jakub@redhat.com>
+
+ P1236R1 - Signed integers are two's complement
+ * constexpr.c (cxx_eval_check_shift_p): Disable the signed LSHIFT_EXPR
+ checks for c++2a.
+
+2018-11-13 David Malcolm <dmalcolm@redhat.com>
+
+ * call.c: Replace "source_location" with "location_t".
+ * cp-tree.h: Likewise.
+ * cvt.c: Likewise.
+ * name-lookup.c: Likewise.
+ * parser.c: Likewise.
+ * typeck.c: Likewise.
+
+2018-11-12 Jason Merrill <jason@redhat.com>
+
+ Implement P0315R4, Lambdas in unevaluated contexts.
+ * decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR.
+ * mangle.c (write_expression): Handle LAMBDA_EXPR.
+ * parser.c (cp_parser_lambda_expression): Allow lambdas in
+ unevaluated context. Start the tentative firewall sooner.
+ (cp_parser_lambda_body): Use cp_evaluated.
+ * pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR.
+ (tsubst_function_decl): Substitute a lambda even if it isn't
+ dependent.
+ (tsubst_lambda_expr): Use cp_evaluated. Always complain.
+ (tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial.
+ * semantics.c (begin_class_definition): Allow in template parm list.
+ * tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR.
+ (cp_tree_equal): Handle LAMBDA_EXPR.
+
+ * pt.c (fn_type_unification): If we have a full set of explicit
+ arguments, go straight to substitution.
+
+ * decl2.c (min_vis_expr_r, expr_visibility): New.
+ (min_vis_r): Call expr_visibility.
+ (constrain_visibility_for_template): Likewise.
+
+ Implement P0722R3, destroying operator delete.
+ * call.c (std_destroying_delete_t_p, destroying_delete_p): New.
+ (aligned_deallocation_fn_p, usual_deallocation_fn_p): Use
+ destroying_delete_p.
+ (build_op_delete_call): Handle destroying delete.
+ * decl2.c (coerce_delete_type): Handle destroying delete.
+ * init.c (build_delete): Don't call dtor with destroying delete.
+ * optimize.c (build_delete_destructor_body): Likewise.
+
+ Implement P0780R2, pack expansion in lambda init-capture.
+ * parser.c (cp_parser_lambda_introducer): Parse pack init-capture.
+ * pt.c (tsubst_pack_expansion): Handle init-capture packs.
+ (lookup_init_capture_pack): New.
+ (tsubst_expr) [DECL_EXPR]: Use it.
+ (tsubst_lambda_expr): Remember field pack expansions for
+ init-captures.
+
+ * cp-tree.h (struct cp_evaluated): New.
+ * init.c (get_nsdmi): Use it.
+ * parser.c (cp_parser_enclosed_template_argument_list): Use it.
+ * pt.c (coerce_template_parms, tsubst_aggr_type): Use it.
+
+2018-11-09 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_clause_final, cp_parser_omp_clause_if): Use
+ cp_parser_assignment_expression instead of cp_parser_condition.
+ (cp_parser_omp_clause_num_threads, cp_parser_omp_clause_num_tasks,
+ cp_parser_omp_clause_grainsize, cp_parser_omp_clause_priority,
+ cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
+ cp_parser_omp_clause_linear, cp_parser_omp_clause_device): Use
+ cp_parser_assignment_expression instead of cp_parser_expression.
+ (cp_parser_omp_clause_hint): Likewise. Formatting fix.
+
+ * parser.c (cp_parser_omp_clause_reduction): Call sorry_at on
+ reduction clause with inscan modifier.
+
+ * parser.c (cp_parser_omp_requires): Call sorry_at on requires
+ clauses other than atomic_default_mem_order.
+
+2018-11-09 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/81824
+ * pt.c (warn_spec_missing_attributes): Move code to attribs.c.
+ Call decls_mismatched_attributes.
+
+2018-11-08 Jakub Jelinek <jakub@redhat.com>
+
+ * constexpr.c (potential_constant_expression_1): Handle OMP_DEPOBJ.
+ * cp-gimplify.c (cp_genericize_r): Handle
+ OMP_CLAUSE_{IN,TASK}_REDUCTION.
+ (cxx_omp_predetermined_sharing_1): Don't return
+ OMP_CLAUSE_DEFAULT_SHARED for const qualified decls with no mutable
+ member. Return OMP_CLAUSE_DEFAULT_FIRSTPRIVATE for this pointer.
+ * cp-objcp-common.c (cp_common_init_ts): Handle OMP_DEPOBJ.
+ * cp-tree.def (OMP_DEPOBJ): New tree code.
+ * cp-tree.h (OMP_ATOMIC_DEPENDENT_P): Return true also for first
+ argument being OMP_CLAUSE.
+ (OMP_DEPOBJ_DEPOBJ, OMP_DEPOBJ_CLAUSES): Define.
+ (cp_convert_omp_range_for, cp_finish_omp_range_for): Declare.
+ (finish_omp_atomic): Add LOC, CLAUSES and MO arguments. Remove
+ SEQ_CST argument.
+ (finish_omp_for_block): Declare.
+ (finish_omp_flush): Add MO argument.
+ (finish_omp_depobj): Declare.
+ * cxx-pretty-print.c (cxx_pretty_printer::statement): Handle
+ OMP_DEPOBJ.
+ * dump.c (cp_dump_tree): Likewise.
+ * lex.c (cxx_init): Likewise.
+ * parser.c: Include memmodel.h.
+ (cp_parser_for): Pass false as new is_omp argument to
+ cp_parser_range_for.
+ (cp_parser_range_for): Add IS_OMP argument, return before finalizing
+ if it is true.
+ (cp_parser_omp_clause_name): Handle nontemporal, in_reduction and
+ task_reduction clauses.
+ (cp_parser_omp_var_list_no_open): Handle
+ OMP_CLAUSE_{IN,TASK}_REDUCTION. For OMP_CLAUSE_DEPEND, parse clause
+ operands as either an array section, or lvalue assignment expression.
+ (cp_parser_omp_clause_if): Handle cancel and simd modifiers.
+ (cp_parser_omp_clause_defaultmap): Parse new kinds of defaultmap
+ clause.
+ (cp_parser_omp_clause_reduction): Add IS_OMP and KIND arguments.
+ Parse reduction modifiers. Pass KIND to c_parser_omp_variable_list.
+ (cp_parser_omp_clause_lastprivate, cp_parser_omp_iterators): New
+ functions.
+ (cp_parser_omp_clause_depend): Parse iterator modifier and handle
+ iterators. Parse mutexinoutset and depobj kinds.
+ (cp_parser_oacc_all_clauses): Adjust cp_parser_omp_clause_reduction
+ callers.
+ (cp_parser_omp_all_clauses): Likewise. Handle
+ PRAGMA_OMP_CLAUSE_NONTEMPORAL and
+ PRAGMA_OMP_CLAUSE_{IN,TASK}_REDUCTION. Call
+ cp_parser_omp_clause_lastprivate for OpenMP lastprivate clause.
+ (cp_parser_omp_atomic): Pass pragma_tok->location as
+ LOC to finish_omp_atomic. Parse hint and memory order clauses.
+ Handle default memory order from requires directive if any. Adjust
+ finish_omp_atomic caller.
+ (cp_parser_omp_critical): Allow comma in between (name) and hint
+ clause.
+ (cp_parser_omp_depobj): New function.
+ (cp_parser_omp_flush): Parse flush with memory-order-clause.
+ (cp_parser_omp_for_cond): Allow NE_EXPR even in OpenMP loops.
+ (cp_convert_omp_range_for, cp_finish_omp_range_for): New functions.
+ (cp_parser_omp_for_loop): Parse C++11 range for loops among omp
+ loops. Handle OMP_CLAUSE_IN_REDUCTION like OMP_CLAUSE_REDUCTION.
+ (OMP_SIMD_CLAUSE_MASK): Add if and nontemporal clauses.
+ (cp_parser_omp_simd, cp_parser_omp_for): Call keep_next_level before
+ begin_omp_structured_block and call finish_omp_for_block on
+ finish_omp_structured_block result.
+ (cp_parser_omp_master): Add p_name, mask and cclauses arguments.
+ Allow to be called while parsing combined parallel master.
+ Parse combined master taskloop{, simd}.
+ (cp_parser_omp_parallel): Parse combined
+ parallel master{, taskloop{, simd}} constructs.
+ (cp_parser_omp_single): Use SET_EXPR_LOCATION.
+ (OMP_TASK_CLAUSE_MASK): Add in_reduction clause.
+ (OMP_TASKWAIT_CLAUSE_MASK): Define.
+ (cp_parser_omp_taskwait): Handle taskwait with depend clauses.
+ (OMP_TASKGROUP_CLAUSE_MASK): Define.
+ (cp_parser_omp_taskgroup): Parse taskgroup clauses, adjust
+ c_finish_omp_taskgroup caller.
+ (cp_parser_omp_distribute): Call keep_next_level before
+ begin_omp_structured_block and call finish_omp_for_block on
+ finish_omp_structured_block result.
+ (cp_parser_omp_teams): Force a BIND_EXPR with BLOCK around teams
+ body.
+ (cp_parser_omp_target_data): Allow target data with only
+ use_device_ptr clauses.
+ (cp_parser_omp_target): Set OMP_REQUIRES_TARGET_USED bit in
+ omp_requires_mask.
+ (cp_parser_omp_requires): New function.
+ (OMP_TASKLOOP_CLAUSE_MASK): Add reduction and in_reduction clauses.
+ (cp_parser_omp_taskloop): Add forward declaration. Disallow
+ in_reduction clause when combined with parallel master. Call
+ keep_next_level before begin_omp_structured_block and call
+ finish_omp_for_block on finish_omp_structured_block result.
+ (cp_parser_omp_construct): Adjust cp_parser_omp_master caller.
+ (cp_parser_pragma): Handle PRAGMA_OMP_DEPOBJ and PRAGMA_OMP_REQUIRES.
+ * pt.c (tsubst_omp_clause_decl): Add iterators_cache argument.
+ Adjust recursive calls. Handle iterators.
+ (tsubst_omp_clauses): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION and
+ OMP_CLAUSE_NONTEMPORAL. Adjust tsubst_omp_clause_decl callers.
+ (tsubst_decomp_names):
+ (tsubst_omp_for_iterator): Change orig_declv into a reference.
+ Handle range for loops. Move orig_declv handling after declv/initv
+ handling.
+ (tsubst_expr): Force a BIND_EXPR with BLOCK around teams body.
+ Adjust finish_omp_atomic caller. Call keep_next_level before
+ begin_omp_structured_block. Call cp_finish_omp_range_for for range
+ for loops and use {begin,finish}_omp_structured_block instead of
+ {push,pop}_stmt_list if there are any range for loops. Call
+ finish_omp_for_block on finish_omp_structured_block result.
+ Handle OMP_DEPOBJ. Handle taskwait with depend clauses. For
+ OMP_ATOMIC call tsubst_omp_clauses on clauses if any, adjust
+ finish_omp_atomic caller. Use OMP_ATOMIC_MEMORY_ORDER rather
+ than OMP_ATOMIC_SEQ_CST. Handle clauses on OMP_TASKGROUP.
+ (dependent_omp_for_p): Always return true for range for loops if
+ processing_template_decl. Return true if class type iterator
+ does not have INTEGER_CST increment.
+ * semantics.c: Include memmodel.h.
+ (handle_omp_array_sections_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION
+ like OMP_CLAUSE_REDUCTION.
+ (handle_omp_array_sections): Likewise. Call save_expr on array
+ reductions before calling build_index_type. Handle depend clauses
+ with iterators.
+ (finish_omp_reduction_clause): Call save_expr for whole array
+ reduction sizes. Don't mark OMP_CLAUSE_DECL addressable if it has
+ reference type. Do mark decl_placeholder addressable if needed.
+ Use error_at with OMP_CLAUSE_LOCATION (c) as first argument instead
+ of error.
+ (cp_omp_finish_iterators): New function.
+ (finish_omp_clauses): Don't diagnose nonmonotonic clause with static,
+ runtime or auto schedule kinds. Diagnose nogroup clause used with
+ reduction clause(s). Handle depend clause with
+ OMP_CLAUSE_DEPEND_DEPOBJ. Diagnose bit-fields. Require
+ omp_depend_t type for OMP_CLAUSE_DEPEND_DEPOBJ kinds and
+ some different type for other kinds. Use cp_build_addr_expr
+ and cp_build_indirect_ref instead of cxx_mark_addressable.
+ Handle depend clauses with iterators. Only handle static data members
+ in the special case that const qualified vars may be specified in
+ firstprivate clause. Complain if const qualified vars without mutable
+ members are mentioned in data-sharing clauses other than firstprivate
+ or shared. Use error_at with OMP_CLAUSE_LOCATION (c) as first
+ argument instead of error. Diagnose more than one nontemporal clause
+ refering to the same variable. Use error_at rather than error for
+ priority and hint clause diagnostics. Fix pasto for hint clause.
+ Diagnose hint expression that doesn't fold into INTEGER_CST.
+ Diagnose if clause with modifier other than cancel. Handle
+ OMP_CLAUSE_{IN,TASK}_REDUCTION like OMP_CLAUSE_REDUCTION. Allow any
+ lvalue as OMP_CLAUSE_DEPEND operand (besides array section), adjust
+ diagnostics.
+ (handle_omp_for_class_iterator): Don't create a new TREE_LIST if one
+ has been created already for range for, just fill TREE_PURPOSE and
+ TREE_VALUE. Call cp_fully_fold on incr.
+ (finish_omp_for): Don't check cond/incr if cond is global_namespace.
+ Pass to c_omp_check_loop_iv_exprs orig_declv if non-NULL. Don't
+ use IS_EMPTY_STMT on NULL pre_body. Adjust c_finish_omp_for caller.
+ (finish_omp_for_block): New function.
+ (finish_omp_atomic): Add LOC argument, pass it through
+ to c_finish_omp_atomic and set it as location of OMP_ATOMIC* trees.
+ Remove SEQ_CST argument. Add CLAUSES and MO arguments. Adjust
+ c_finish_omp_atomic caller. Stick clauses if any into first argument
+ of wrapping OMP_ATOMIC.
+ (finish_omp_depobj): New function.
+ (finish_omp_flush): Add MO argument, if not
+ MEMMODEL_LAST, emit __atomic_thread_fence call with the given value.
+ (finish_omp_cancel): Diagnose if clause with modifier other than
+ cancel.
+
+2018-11-07 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/87904
+ * cp-tree.h (struct tree_overload): Fix comment.
+ * tree.c (ovl_iterator::reveal_node): Propagate OVL_DEDUP_P.
+
+2018-11-04 Jason Merrill <jason@redhat.com>
+
+ Implement UDL changes from P0732R2.
+ * cp-tree.h (struct releasing_vec): Move from mangle.c.
+ Add get_ref method.
+ * parser.c (cp_parser_userdef_string_literal): Use it. Handle
+ passing the string to a single template parameter of class type.
+ (cp_parser_template_declaration_after_parameters): Allow it.
+ Pedwarn about the character pack template that was proposed but not
+ accepted for C++14, and don't suggest it.
+
+ Implement P0732R2, class types in non-type template parameters.
+ * error.c (dump_simple_decl): Look through a template parm object.
+ * mangle.c (write_template_arg): Likewise.
+ (mangle_template_parm_object): New.
+ * pt.c (template_parm_object_p, get_template_parm_object): New.
+ (invalid_tparm_referent_p): Factor from convert_nontype_argument.
+ (convert_nontype_argument, invalid_nontype_parm_type_p): Handle
+ class-type template arguments.
+ * tree.c (lvalue_kind): Likewise.
+
+ * cvt.c (ocp_convert): Don't wrap a CONSTRUCTOR in a NOP_EXPR.
+ * constexpr.c (initialized_type): Fix AGGR_INIT_EXPR handling.
+ (cxx_eval_vec_init_1): Correct type of AGGR_INIT_EXPR.
+ (cxx_eval_outermost_constant_expr): Make sure a CONSTRUCTOR has the
+ right type. Don't wrap a CONSTRUCTOR if one was passed in.
+ * tree.c (build_aggr_init_expr): Check for void.
+
+ PR c++/60503 - wrong lambda attribute syntax.
+ * parser.c (cp_parser_lambda_declarator_opt): Fix attribute
+ handling.
+
+2018-11-02 Nathan Sidwell <nathan@acm.org>
+
+ * decl.c (duplicate_decls): Refactor checks.
+
+2018-11-01 Marek Polacek <polacek@redhat.com>
+
+ Implement P0846R0, ADL and function templates.
+ * decl.c (grokfndecl): Allow FUNCTION_DECL in assert.
+ * lex.c (unqualified_fn_lookup_error): Handle TEMPLATE_ID_EXPR.
+ * parser.c (cp_parser_postfix_expression): Do ADL for a template-name.
+ (cp_parser_template_id): Give errors if parsing the template argument
+ list didn't go well. Allow FUNCTION_DECL in assert.
+ (cp_parser_template_name): Consider a name to refer to a template if
+ it is an unqualified-id followed by a <. Don't return the identifier
+ if the decl is a function and dependent.
+ * pt.c (tsubst_copy) <case OVERLOAD>: Remove assert.
+
+2018-11-01 Nathan Sidwell <nathan@acm.org>
+
+ * cp-tree.h (struct lang_function): Delete x_local_names field.
+ (struct lang_decl_base): Rename u2sel to spare.
+ (struct lang_decl_min): Remove lang_decl_u2 union. Keep access
+ field.
+ (LANG_DECL_U2_CHECK): Delete.
+ (DECL_DISCRIMINATOR_P): Require function scope.
+ (DECL_DISCRIMINATOR): Adjust.
+ (DECL_DISCRIMINATOR_SET_P): Delete.
+ (DECL_CAPTURED_VARIABLE, DECL_ACCESS, THUnK_VIRTUAL_OFFSET): Adjust.
+ (local_classes): Don't declare.
+ (determine_local_discriminator): Declare.
+ * decl.c (push_local_name): Delete.
+ (local_entities, determina_local_discrminator): New.
+ (duplicate_decls): Copy DECL_ACCESS. Fix formatting.
+ (cp_finish_decl): Use determine_local_discriminator.
+ (save_function_data): Drop x_local_names.
+ (finish_function): Drop local_names.
+ * decl2.c (finish_anon_union): Use determine_local_disciminator.
+ * mangle.c (write_unnamed_type_name): Use
+ discriminator_for_local_entity.
+ (local_class_index): Delete.
+ (discriminator_for_local_entity): Reimplement.
+ (write_local_name): Adjust discriminator code.
+ * name-lookup.c (do_pushtag): Call determine_local_discrimiator.
+ * semantics.c (finish_omp_threadprivate): Drop DECL_DISCRIMINATOR
+ handling.
+ * class.c (local_classes): Delete.
+ (init_class_processing): Don't init it.
+
+2018-11-01 Martin Liska <mliska@suse.cz>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/64266
+ PR bootstrap/70422
+ PR ipa/81277
+ * cp-tree.h (DECL_FNAME_P): New macro.
+ * decl.c (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
+ DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
+ (cp_finish_decl):
+ * lambda.c (is_capture_proxy): Use DECL_FNAME_P.
+ * pt.c (tsubst_expr): Handle DECL_PRETTY_FUNCTION_P.
+
+2018-10-31 Nathan Sidwell <nathan@acm.org>
+
+ * cp-tree.h (OVL_DEDUP_P): New.
+ * name-lookup.c (name_lookup::add_overload): Check OVL_DEDUP_P.
+ (get_class_binding_direct): Likwise.
+ * tree.c (ovl_make): Propagate OVL_DEDUP_P.
+ (ovl_copy): Copy it.
+ (ovl_insert): Do not keep using-decls ordered.
+ (lookup_maybe_add): Adjust comment.
+
+2018-10-30 Marek Polacek <polacek@redhat.com>
+
+ Implement P0892R2, explicit(bool).
+ * call.c (add_template_candidate_real): Return if the declaration is
+ explicit and we're only looking for non-converting constructor.
+ * cp-tree.h (lang_decl_fn): Add has_dependent_explicit_spec_p bit.
+ (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P): New macro.
+ (cp_decl_specifier_seq): Add explicit_specifier field.
+ (build_explicit_specifier, store_explicit_specifier): Declare.
+ * decl.c (grokdeclarator): Call store_explicit_specifier.
+ (build_explicit_specifier): New function.
+ * parser.c (cp_parser_function_specifier_opt) <case RID_EXPLICIT>:
+ Parse C++20 explicit(bool).
+ * pt.c (store_explicit_specifier, lookup_explicit_specifier): New.
+ (tsubst_function_decl): Handle explicit(dependent-expr).
+
+2018-10-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (grokdeclarator): Use declarator->id_loc in diagnostic
+ about flexible array members.
+
+2018-10-29 David Malcolm <dmalcolm@redhat.com>
+
+ * cp-name-hint.h: New file.
+ * cp-tree.h (expr_to_string): New decl.
+ (suggest_alternatives_for): Move to cp-name-hint.h, changing
+ return type from bool to name_hint.
+ (suggest_alternative_in_explicit_scope): Likewise.
+ * error.c: Define INCLUDE_UNIQUE_PTR. Include "cp-name-hint.h".
+ (expr_to_string): Make non-static.
+ (qualified_name_lookup_error): For the non-"::" case, take
+ responsibity for issuing any suggestion from
+ suggest_alternative_in_explicit_scope, as it changes from
+ returning a bool to returning a name_hint. Replace fallback call
+ to suggest_alternatives_for to a call to
+ suggest_alternatives_in_other_namespaces, capturing the fact that
+ we don't have enough location information to issue a fix-it hint
+ for this case. Update the error to support emitting a fix-it hint
+ where appropriate. For the "::" case, take responsibility for
+ issuing any suggestion from suggest_alternatives_for, supporting
+ emitting a fix-it hint.
+ * lex.c: Define INCLUDE_UNIQUE_PTR. Include "gcc-rich-location.h"
+ and "cp-name-hint.h".
+ (unqualified_name_lookup_error): Take responsibility for issuing
+ any suggestion from suggest_alternatives_for, supporting emitting
+ a fix-it hint.
+ * name-lookup.c (class namespace_limit_reached): New subclass of
+ deferred_diagnostic.
+ (class show_candidate_location): Likewise.
+ (class suggest_alternatives): Likewise.
+ (class namespace_hints): New class.
+ (suggest_alternatives_for): Convert return type from bool to
+ name_hint, replacing all direct diagnostic emission by setting
+ suggestions on the return value, or creating deferred diagnostics.
+ Specifically, split out initial traversal of namespaces into
+ namespace_hints' ctor, and maybe_decorate_with_limit, and move the
+ rest of the implementation to
+ namespace_hints::convert_candidates_to_name_hint and
+ suggest_alternatives_for_1.
+ (namespace_hints::namespace_hints): New ctor, adapted from
+ suggest_alternatives_for's initial namespace traversal, storing
+ location and name, and converting locals "candidates", "limited"
+ and "limit" into members.
+ (namespace_hints::convert_candidates_to_name_hint): New member
+ function.
+ (namespace_hints::maybe_decorate_with_limit): New member function.
+ (suggest_alternatives_for_1): New function, based on second half
+ of old implementation of suggest_alternatives_for, converting from
+ immediate emission of suggestions to using name_hint.
+ (suggest_alternatives_in_other_namespaces): New function.
+ (maybe_suggest_missing_std_header): Convert from immediate
+ emission of suggestions to using name_hint, moving emission
+ implementation to...
+ (class missing_std_header): New subclass of deferred_diagnostic.
+ (maybe_suggest_missing_header): Convert return type from bool to
+ name_hint.
+ (suggest_alternative_in_explicit_scope): Convert from immediate
+ emission of suggestions to using name_hint.
+ * parser.c: Replace include of "c-family/name-hint.h" with
+ "cp-name-hint.h".
+ (cp_parser_diagnose_invalid_type_name): Update
+ "is there a suggestion" logic for change to
+ name_hint::operator bool. Take responsibility for emitting
+ fix-it hints from suggest_alternative_in_explicit_scope.
+ (cp_parser_namespace_name): Take responsibility for emitting
+ fix-it hints from suggest_alternative_in_explicit_scope. Don't
+ emit the "expected namespace-name" error if we've already emitted
+ an "is not a namespace-name" error.
+
+2018-10-29 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/56856
+ * call.c (build_over_call): Eliminate the "arglocs" array, and the
+ call to maybe_constant_value when building "fargs".
+
+2018-10-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (create_array_type_for_decl): Add location_t parameter
+ and use it.
+ (grokdeclarator): Adjust call.
+
+2018-10-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87594 - constexpr rejects-valid with range-based for.
+ * constexpr.c (potential_constant_expression_1): If the condition
+ can't be evaluated, return true.
+
+2018-10-29 Joseph Myers <joseph@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ PR c++/66053
+ * semantics.c (handle_omp_array_sections_1): Allow array
+ sections with "this" pointer for OpenACC.
+
+2018-10-25 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_sizeof_operand): Remove redundant use of
+ grokdeclarator.
+
+2018-10-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86288
+ * parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when
+ :: is not present and attr_ns non-NULL, canonicalize also attr_id.
+ (cp_parser_attribute_spec): Fix comment typo.
+
+2018-10-24 Martin Sebor <msebor@redhat.com>
+
+ PR c++/84851
+ * call.c (maybe_warn_class_memaccess): Tighten up.
+
+2018-10-17 David Malcolm <dmalcolm@redhat.com>
+
+ * Make-lang.in (selftest-c++): New.
+ (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
+ (selftest-c++-gdb, selftest-c++-valgrind): Move here from
+ gcc/Makefile.in.
+
+2018-10-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84705
+ * tree.c (build_cplus_new): Avoid duplicate diagnostic about
+ incomplete type, early return error_mark_node if the second
+ argument is error_mark_node.
+
+2018-10-12 Nathan Sidwell <nathan@acm.org>
+
+ * parser.h (struct cp_parser): Drop implicit_extern_c.
+ * parser.c (cp_debug_parser): Drop implicit_extern_c.
+ (cp_parser_new): Likewise.
+ (cp_parser_translation_unit): Handle implicit extern c here. Call
+ cp_parser_toplevel_declaration.
+ (cp_parser_toplevel_declaration): New, broken out of ...
+ (cp_parser_declaration_seq_opt): ... here. Call it. Drop
+ implicit extern C handling.
+
+2018-10-11 Will Wray <wjwray@gmail.com>
+
+ PR c++/87364
+ * cxx-pretty-print.c (pp_cxx_enumeration_constant): New function.
+ (cxx_pretty_printer::constant): Use it.
+
+2018-10-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/84993
+ * call.c (enforce_access): Move diagnostics to...
+ (complain_about_access): ...this new function.
+ * cp-tree.h (class access_failure_info): Rename split out field
+ "m_field_decl" into "m_decl" and "m_diag_decl".
+ (access_failure_info::record_access_failure): Add tree param.
+ (access_failure_info::was_inaccessible_p): New accessor.
+ (access_failure_info::get_decl): New accessor.
+ (access_failure_info::get_diag_decl): New accessor.
+ (access_failure_info::get_any_accessor): New member function.
+ (access_failure_info::add_fixit_hint): New static member function.
+ (complain_about_access): New decl.
+ * typeck.c (access_failure_info::record_access_failure): Update
+ for change to fields.
+ (access_failure_info::maybe_suggest_accessor): Split out into...
+ (access_failure_info::get_any_accessor): ...this new function...
+ (access_failure_info::add_fixit_hint): ...and this new function.
+ (finish_class_member_access_expr): Split out "has no member named"
+ error-handling into...
+ (complain_about_unrecognized_member): ...this new function, and
+ check that the guessed name is accessible along the access path.
+ Only provide a spell-correction fix-it hint if it is; otherwise,
+ attempt to issue an accessor fix-it hint.
+
+2018-10-11 Nathan Sidwell <nathan@acm.org>
+
+ * parser.c (cp_parser_translation_unit): Return void. Don't fail
+ at first extra }, simplify logic.
+ (c_parse_file): Call finish_translation_unit here.
+
+2018-10-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87582
+ * typeck.c (maybe_warn_about_returning_address_of_local): If
+ whats_returned is a structured binding identifier and the structured
+ binding is a reference, recurse on its initializer.
+
+ PR c++/87547
+ * rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead
+ of TREE_TYPE.
+
+2018-10-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87567 - constexpr rejects call to non-constexpr function.
+ * constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return
+ true if the condition is always false.
+ <case WHILE_STMT>: Likewise.
+
+2018-10-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84423
+ * pt.c (convert_template_argument): Immediately return error_mark_node
+ if the second argument is erroneous.
+ * parser.c (cp_parser_type_id): Add location_t * parameter.
+ (cp_parser_type_id_1): Likewise.
+ (cp_parser_alias_declaration): Adjust cp_parser_type_id call,
+ obtain the location of the type and save it.
+ (cp_parser_template_type_arg): Adjust.
+ (cp_parser_trailing_type_id): Likewise.
+ * decl.c (grokdeclarator): Improve error message for 'auto' in
+ alias declaration.
+
+2018-10-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/71128
+ * pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be
+ explicitly instantiated.
+
+2018-10-05 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/56856
+ * call.c (build_over_call): Build a vec of locations of the
+ arguments before the call to maybe_constant_value, and pass to
+ check_function_arguments.
+ * cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
+ c_get_substring_location.
+ * parser.c (cp_parser_string_literal): Capture string
+ concatenation locations.
+
+2018-10-04 Nathan Sidwell <nathan@acm.org>
+
+ * lang-specs.h: Use string contatenation, not line splicing.
+
+2018-10-03 Jason Merrill <jason@redhat.com>
+
+ Implement P0840, language support for empty objects.
+ * tree.c (handle_no_unique_addr_attribute): New.
+ (cxx_attribute_table): Add [[no_unique_address]].
+ * class.c (field_poverlapping_p): New.
+ (layout_class_type): Check it. Adjust DECL_SIZE of potentially
+ overlapping fields.
+ (layout_empty_base_or_field): Rename from layout_empty_base, handle
+ FIELD_DECL as well.
+ (build_base_field, record_subobject_offsets): Adjust.
+
+2018-10-03 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/86109
+ * parser.c (cp_parser_lambda_declarator_opt):
+ Set DECL_LAMBDA_FUNCTION for lambdas.
+
+2018-10-02 Richard Biener <rguenther@suse.de>
+
+ * name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.
+
+2018-09-28 Eric Botcazou <ebotcazou@adacore.com>
+ Pierre-Marie de Rodat <derodat@adacore.com>
+
+ * method.c (use_thunk): Adjust call to cgraph_node::create_thunk.
+
+2018-09-28 Richard Biener <rguenther@suse.de>
+
+ * error.c (cp_print_error_function): Simplify by eliding
+ the BLOCK_ABSTRACT_ORIGIN chasing.
+
+2018-09-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84940
+ * semantics.c (finish_unary_op_expr): Check return value of
+ build_x_unary_op for error_mark_node.
+
+2018-09-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87398
+ * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only
+ look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs.
+
+2018-09-25 Martin Liska <mliska@suse.cz>
+
+ * name-lookup.c (namespace_scope_ht_size): Remove
+ unused function.
+ * parser.c (cp_lexer_next_token_is_not_keyword): Likewise.
+
+2018-09-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85070
+ * method.c (lazily_declare_fn): During error-recovery add_method
+ may return false.
+
+2018-09-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87372 - __func__ constexpr evaluation.
+ * constexpr.c (maybe_constant_init_1): Pass false for strict down to
+ cxx_eval_outermost_constant_expr.
+
+2018-09-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87109 - wrong ctor with maybe-rvalue semantics.
+ * call.c (build_user_type_conversion_1): Refine the maybe-rvalue
+ check to only return if we're converting the return value to a base
+ class.
+
+2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
+
+ * g++spec.c (lang_specific_driver): Handle -r like -nostdlib.
+
+2018-09-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/87075 - ICE with constexpr array initialization.
+ * constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.
+
+2018-09-19 Marek Polacek <polacek@redhat.com>
+
+ Add -Wclass-conversion.
+ * decl.c (grok_op_properties): Change a warning from -Wconversion to
+ -Wclass-conversion. Make it print the types.
+
+2018-09-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/87324
+ * parser.c (cp_parser_initializer_list): Assign error_mark_node
+ to the index upon error.
+
+2018-09-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87357 - missing -Wconversion warning
+ * decl.c (grok_op_properties): Remove diagnostic parts mentioning
+ a conversion to a reference to void. Use
+ same_type_ignoring_top_level_qualifiers_p rather than comparing types
+ directly.
+
+2018-09-18 Marek Polacek <polacek@redhat.com>
+
+ P1064R0 - Allowing Virtual Function Calls in Constant Expressions
+ * call.c (build_over_call): No longer check if we're outside a template
+ function.
+ * class.c (build_vtbl_initializer): Build vtable's constructor with
+ indexes.
+ * constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
+ initializer. Handle OBJ_TYPE_REF.
+ (potential_constant_expression_1): Handle OBJ_TYPE_REF.
+ * decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
+ (initialize_artificial_var): Mark the variable as constexpr.
+ (grokdeclarator): Change error to pedwarn. Only warn when
+ pedantic and not C++2a.
+
+2018-09-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85065
+ * cp-tree.h (NON_ERROR): New.
+ * pt.c (auto_hash::hash): Use it.
+ (do_auto_deduction): Likewise.
+
+2018-09-18 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/86881
+ * name-lookup.c (check_local_shadow): Ignore auto types.
+
+2018-09-17 David Malcolm <dmalcolm@redhat.com>
+
+ * error.c (range_label_for_type_mismatch::get_text): Update for
+ new param.
+
+2018-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * typeck2.c (digest_init_r): Fix overlength strings.
+
+2018-09-13 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ PR c++/87093
+ * method.c (constructible_expr): We're in an unevaluated context
+ in all cases, not just for class targets.
+
+2018-09-12 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85110
+ * call.c (struct conversion_info): Add "loc" field.
+ (arg_conversion_rejection): Add "loc" param, using it to
+ initialize the new field.
+ (bad_arg_conversion_rejection): Likewise.
+ (explicit_conversion_rejection): Initialize the new field to
+ UNKNOWN_LOCATION.
+ (template_conversion_rejection): Likewise.
+ (add_function_candidate): Pass on the argument location to the new
+ param of arg_conversion_rejection.
+ (add_conv_candidate): Likewise.
+ (build_builtin_candidate): Likewise.
+ (build_user_type_conversion_1): Likewise.
+ (single_z_candidate): New function.
+ (maybe_get_bad_conversion_for_unmatched_call): New function.
+ (complain_about_bad_argument): New function, based on part of
+ convert_for_assignment.
+ (build_new_method_call_1): Split out handling of the "no viable
+ candidates" case into...
+ (complain_about_no_candidates_for_method_call): ...this new
+ function, and use the new functions above to special-case the
+ handling of a single non-viable candidate due to a bad argument.
+ * cp-tree.h (complain_about_bad_argument): New decl.
+ * typeck.c (convert_for_assignment): Split out one error-handling
+ case into complain_about_bad_argument.
+
+2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ PR middle-end/86336
+ * semantics.c (finish_omp_clauses): Treat C++ references the same in
+ OpenACC as OpenMP.
+
+2018-08-28 Martin Liska <mliska@suse.cz>
+
+ * constexpr.c (cxx_eval_call_expression): Add quotes
+ to -fconstexpr-depth=.
+
+2018-09-10 Marek Polacek <polacek@redhat.com>
+
+ * class.c (build_vtbl_ref): Remove.
+ (build_vtbl_ref_1): Rename to build_vtbl_ref.
+ (build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.
+
+2018-09-08 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87150 - wrong ctor with maybe-rvalue semantics.
+ * call.c (struct conversion): Update commentary.
+ (standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
+ for ck_base.
+
+2018-09-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/86678 - constexpr function with non-constant after return.
+ * constexpr.c (potential_constant_expression_1): Add jump_target.
+ (breaks): Check for BREAK_STMT.
+ (continues): Check for CONTINUE_STMT.
+
+2018-09-08 Marek Polacek <polacek@redhat.com>
+
+ * cxx-pretty-print.c (cxx_pretty_printer::statement) <case
+ RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.
+
+2018-09-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87152 - range-based for loops with initializer broken in templates.
+ * constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
+ Recur into RANGE_FOR_INIT_STMT.
+ * cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
+ * cp-tree.h (RANGE_FOR_INIT_STMT): Define.
+ * dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
+ RANGE_FOR_INIT_STMT.
+ * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
+ RANGE_FOR_INIT_STMT.
+ * semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
+ Do put the init statement in RANGE_FOR_INIT_STMT.
+ (finish_range_for_decl): Pop it for templates.
+
+2018-09-06 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * decl.c (check_initializer): Call cp_complete_array_type.
+
+2018-09-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87109, wrong overload with ref-qualifiers.
+ * call.c (build_user_type_conversion_1): Use NULL instead of 0. Bail
+ out if performing the maybe-rvalue overload resolution and a conversion
+ function is getting called.
+
+ PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
+ * typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
+ to std::move or std::forward.
+ (is_std_forward_p): New function.
+
+2018-09-05 Pádraig Brady <p@draigbrady.com>
+
+ PR c++/87185
+ * lambda.c (prune_lambda_captures): Protect against const_vars.get
+ returning NULL.
+
+2018-09-04 Marek Polacek <polacek@redhat.com>
+
+ * cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
+ * except.c (build_throw): Use it. Use CP_TYPE_VOLATILE_P.
+ * typeck.c (treat_lvalue_as_rvalue_p): No longer static. Add PARM_OK
+ parameter.
+ (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
+ (check_return_expr): Likewise.
+
+2018-09-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84980
+ * constraint.cc (finish_shorthand_constraint): Early return if the
+ constraint is erroneous.
+
+2018-09-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * decl.c (eval_check_narrowing): Remove.
+ (check_initializer): Move call to braced_list_to_string from here ...
+ * typeck2.c (store_init_value): ... to here.
+ (digest_init_r): Remove handing of signed/unsigned char strings.
+
+2018-08-31 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/87155
+ PR c++/84707
+ * name-lookup.c (name_lookup::search_namespace): Don't look at
+ inlines when searching for NULL names.
+
+ * decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
+ of return types and parms.
+ * parser.c (cp_parser_parameter_declaration_clause): Likewise,
+ '()' always means '(void)'.
+
+2018-08-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87095
+ * decl.c (begin_destructor_body): If current_class_type has
+ virtual bases and the primary base is nearly empty virtual base,
+ voidify clearing of vptr and make it conditional on in-charge
+ argument.
+
+2018-08-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85265
+ * parser.c (cp_parser_introduction_list): If cp_parser_identifier
+ returns error_mark_node early exit the loop.
+ (cp_parser_template_introduction): Improve error-recovery, remove
+ error call about empty introduction-list.
+
+2018-08-29 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85110
+ * call.c (print_conversion_rejection): Add "fn" param and use it
+ for "no known conversion" messages to underline the pertinent
+ param.
+ (print_z_candidate): Supply "fn" to the new param above.
+
+2018-08-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/87122
+ * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If
+ processing_template_decl and decl is structured binding decl, call
+ cp_finish_decomp.
+
+2018-08-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/86546
+ * decl.c (finish_case_label): If the type is erroneous early
+ return error_mark_node.
+
+2018-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/63392
+ * parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
+ hint.
+
+2018-08-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86993
+ * cp-tree.h (cxx_readonly_error): Add location_t argument.
+ * typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
+ ERROR_FOR_ASSIGNMENT macro and readonly_error. Add LOC argument
+ to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
+ pass LOC to it. Formatting fixes.
+ * typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
+ (cp_build_modify_expr): Pass loc to cxx_readonly_error.
+ * semantics.c (finish_asm_stmt): Pass input_location to
+ cxx_readonly_error.
+
+2018-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/87091
+ * decl.c (grokdeclarator): Update for conversion of show_caret_p
+ to a tri-state.
+ * error.c (cp_printer): Likewise.
+ * name-lookup.c (maybe_suggest_missing_std_header): Update call to
+ maybe_add_include_fixit to suggest overriding the location, as it
+ is for a note.
+ * parser.c (cp_parser_string_literal): Update for conversion of
+ show_caret_p to a tri-state.
+ (cp_parser_elaborated_type_specifier): Likewise.
+ (set_and_check_decl_spec_loc): Likewise.
+ * pt.c (listify): Update call to maybe_add_include_fixit to not
+ override the location, as it is for an error.
+ * rtti.c (typeid_ok_p): Likewise.
+
+2018-08-27 Martin Liska <mliska@suse.cz>
+
+ * call.c (build_call_a): Use new function
+ fndecl_built_in_p and remove check for FUNCTION_DECL if
+ possible.
+ (build_cxx_call): Likewise.
+ * constexpr.c (constexpr_fn_retval): Likewise.
+ (cxx_eval_builtin_function_call): Likewise.
+ (cxx_eval_call_expression): Likewise.
+ (potential_constant_expression_1): Likewise.
+ * cp-gimplify.c (cp_gimplify_expr): Likewise.
+ (cp_fold): Likewise.
+ * decl.c (decls_match): Likewise.
+ (validate_constexpr_redeclaration): Likewise.
+ (duplicate_decls): Likewise.
+ (make_rtl_for_nonlocal_decl): Likewise.
+ * name-lookup.c (consider_binding_level): Likewise.
+ (cp_emit_debug_info_for_using): Likewise.
+ * semantics.c (finish_call_expr): Likewise.
+ * tree.c (builtin_valid_in_constant_expr_p): Likewise.
+
+2018-08-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87080
+ * typeck.c (maybe_warn_pessimizing_move): Do nothing in a template.
+
+ PR c++/87029, Implement -Wredundant-move.
+ * typeck.c (treat_lvalue_as_rvalue_p): New function.
+ (maybe_warn_pessimizing_move): Call convert_from_reference.
+ Warn about redundant moves.
+
+2018-08-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/67012
+ PR c++/86942
+ * decl.c (grokdeclarator): Disallow functions with trailing return
+ type with decltype(auto) as its type. Also check the function if
+ it's inner declarator doesn't exist
+
+2018-08-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86499
+ * parser.c (cp_parser_lambda_introducer): Give error if a non-local
+ lambda has a capture-default.
+
+2018-08-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (check_static_variable_definition): Change to return void.
+
+2018-08-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86981, Implement -Wpessimizing-move.
+ * typeck.c (decl_in_std_namespace_p): New.
+ (is_std_move_p): New.
+ (maybe_warn_pessimizing_move): New.
+ (can_do_nrvo_p): New, factored out of ...
+ (check_return_expr): ... here. Warn about potentially harmful
+ std::move in a return statement.
+
+ PR c++/65043
+ * call.c (standard_conversion): Set check_narrowing.
+ * typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
+ than comparing with INTEGER_TYPE.
+
+ * cp-tree.h: Fix typo.
+
+2018-08-20 David Malcolm <dmalcolm@redhat.com>
+
+ PR other/84889
+ * call.c (build_user_type_conversion_1): Add auto_diagnostic_group
+ instance(s).
+ (print_error_for_call_failure): Likewise.
+ (build_op_call_1): Likewise.
+ (build_conditional_expr_1): Likewise.
+ (build_new_op_1): Likewise.
+ (build_op_delete_call): Likewise.
+ (convert_like_real): Likewise.
+ (build_over_call): Likewise.
+ (build_new_method_call_1): Likewise.
+ (joust): Likewise.
+ * class.c (check_tag): Likewise.
+ (finish_struct_anon_r): Likewise.
+ (one_inherited_ctor): Likewise.
+ (finalize_literal_type_property): Likewise.
+ (explain_non_literal_class): Likewise.
+ (find_flexarrays): Likewise.
+ (resolve_address_of_overloaded_function): Likewise.
+ * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
+ (is_valid_constexpr_fn): Likewise.
+ (cx_check_missing_mem_inits): Likewise.
+ * cp-gimplify.c (cp_genericize_r): Likewise.
+ * cvt.c (maybe_warn_nodiscard): Likewise.
+ * decl.c (warn_extern_redeclared_static): Likewise.
+ (check_redeclaration_exception_specification): Likewise.
+ (check_no_redeclaration_friend_default_args): Likewise.
+ (duplicate_decls): Likewise.
+ (redeclaration_error_message): Likewise.
+ (warn_misplaced_attr_for_class_type): Likewise.
+ * decl2.c (finish_static_data_member_decl): Likewise.
+ (no_linkage_error): Likewise.
+ (cp_warn_deprecated_use): Likewise.
+ * error.c (qualified_name_lookup_error): Likewise.
+ * friend.c (make_friend_class): Likewise.
+ (do_friend): Likewise.
+ * init.c (perform_member_init): Likewise.
+ (build_new_1): Likewise.
+ (build_vec_delete_1): Likewise.
+ (build_delete): Likewise.
+ * lex.c (unqualified_name_lookup_error): Likewise.
+ * name-lookup.c (check_extern_c_conflict): Likewise.
+ (inform_shadowed): New function.
+ (check_local_shadow): Add auto_diagnostic_group instances,
+ replacing goto "inform_shadowed" label with call to subroutine.
+ (set_local_extern_decl_linkage): Add auto_diagnostic_group
+ instance(s).
+ * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
+ (cp_parser_namespace_name): Likewise.
+ * pt.c (check_specialization_namespace): Likewise.
+ (check_template_variable): Likewise.
+ (warn_spec_missing_attributes): Likewise.
+ (check_explicit_specialization): Likewise.
+ (process_partial_specialization): Likewise.
+ (lookup_template_class_1): Likewise.
+ (finish_template_variable): Likewise.
+ (do_auto_deduction): Likewise.
+ * search.c (check_final_overrider): Likewise.
+ (look_for_overrides_r): Likewise.
+ * tree.c (maybe_warn_parm_abi): Likewise.
+ * typeck.c (cxx_sizeof_expr): Likewise.
+ (cp_build_function_call_vec): Likewise.
+ (cp_build_binary_op): Likewise.
+ (convert_for_assignment): Likewise.
+ (maybe_warn_about_returning_address_of_local): Likewise.
+ * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
+ (check_narrowing): Likewise.
+
+2018-08-17 David Malcolm <dmalcolm@redhat.com>
+
+ * typeck.c (string_conv_p): Extract location from EXP and use it
+ in preference to input_location when issuing warnings.
+
+2018-08-15 David Malcolm <dmalcolm@redhat.com>
+
+ * call.c: Include "gcc-rich-location.h".
+ (convert_like_real): Add range label for "invalid conversion"
+ diagnostic.
+ (perform_implicit_conversion_flags): Add type label to the
+ "could not convert" error.
+ * error.c: Include "gcc-rich-location.h".
+ (range_label_for_type_mismatch::get_text): New function.
+ * typeck.c (convert_for_assignment): Add type label to
+ the "cannot convert" error if a location is available.
+
+2018-08-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
+ emit an error instead of a permerror.
+
+2018-08-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/57891
+ * call.c (struct conversion): Add check_narrowing_const_only.
+ (build_converted_constant_expr): Set check_narrowing and
+ check_narrowing_const_only. Give error if expr is error node.
+ (convert_like_real): Pass it to check_narrowing.
+ * cp-tree.h (check_narrowing): Add a default parameter.
+ * decl.c (compute_array_index_type): Use input_location instead of
+ location_of.
+ * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
+ * typeck2.c (check_narrowing): Don't warn for instantiation-dependent
+ expressions. Call maybe_constant_value instead of
+ fold_non_dependent_expr. Don't mention { } in diagnostic. Only check
+ narrowing for constants if CONST_ONLY.
+
+2018-08-13 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/71625
+ * decl.c (check_initializer): Call braced_list_to_string.
+ (eval_check_narrowing): New function.
+ * gcc/cp/typeck2.c (digest_init_r): Accept strings literals
+ as initilizers for all narrow character types.
+
+2018-08-13 Marek Polacek <polacek@redhat.com>
+
+ P0806R2 - Deprecate implicit capture of this via [=]
+ * lambda.c (add_default_capture): Formatting fixes. Warn about
+ deprecated implicit capture of this via [=].
+
+ PR c++/86915
+ * decl.c (create_array_type_for_decl): Handle null name.
+
+2018-08-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/86728 - C variadic generic lambda.
+ * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
+ a pack if it's followed by a declarator-id.
+
+2018-08-08 Jakub Jelinek <jakub@redhat.com>
+
+ P0595R1 - is_constant_evaluated
+ * cp-tree.h (enum cp_built_in_function): New.
+ (maybe_constant_init): Add pretend_const_required argument.
+ * typeck2.c (store_init_value): Pass true as new argument to
+ maybe_constant_init.
+ * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
+ for BUILT_IN_UNREACHABLE.
+ (struct constexpr_ctx): Add pretend_const_required field.
+ (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
+ macro. Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED. Check also
+ DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
+ (cxx_eval_outermost_constant_expr): Add pretend_const_required
+ argument, initialize pretend_const_required field in ctx. If the
+ result is TREE_CONSTANT and non_constant_p, retry with
+ pretend_const_required false if it was true.
+ (is_sub_constant_expr): Initialize pretend_const_required_field in
+ ctx.
+ (cxx_constant_value): Pass true as pretend_const_required to
+ cxx_eval_outermost_constant_expr.
+ (maybe_constant_value): Pass false as pretend_const_required to
+ cxx_eval_outermost_constant_expr.
+ (fold_non_dependent_expr): Likewise.
+ (maybe_constant_init_1): Add pretend_const_required argument, pass it
+ down to cxx_eval_outermost_constant_expr. Pass !allow_non_constant
+ instead of false as strict to cxx_eval_outermost_constant_expr.
+ (maybe_constant_init): Add pretend_const_required argument, pass it
+ down to maybe_constant_init_1.
+ (cxx_constant_init): Pass true as pretend_const_required to
+ maybe_constant_init_1.
+ * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
+ CP_BUILT_IN_IS_CONSTANT_EVALUATED.
+ (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
+ * decl.c: Include langhooks.h.
+ (cxx_init_decl_processing): Register __builtin_is_constant_evaluated
+ built-in.
+ * tree.c (builtin_valid_in_constant_expr_p): Return true for
+ CP_BUILT_IN_IS_CONSTANT_EVALUATED.
+ * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
+
+ PR c++/86836
+ * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
+ before tsubst_init, not after it.
+
+ PR c++/86738
+ * constexpr.c (cxx_eval_binary_expression): For arithmetics involving
+ NULL pointer set *non_constant_p to true.
+ (cxx_eval_component_reference): For dereferencing of a NULL pointer,
+ set *non_constant_p to true and return t.
+
+2018-08-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/59480, DR 136
+ * decl.c (check_no_redeclaration_friend_default_args): New.
+ (duplicate_decls): Use the latter; also check that a friend
+ declaration specifying default arguments is a definition.
+
+2018-08-07 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ PR c++/79133
+ * name-lookup.c (check_local_shadow): Reject captures and parameters
+ with the same name.
+
+2018-08-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86767
+ * constexpr.c (cxx_eval_statement_list): Handle continue.
+
+2018-08-03 David Malcolm <dmalcolm@redhat.com>
+ Jonathan Wakely <jwakely@redhat.com>
+
+ * decl.c: Include "gcc-rich-location.h".
+ (add_return_star_this_fixit): New function.
+ (finish_function): When warning about missing return statements in
+ functions returning non-void, add a "return *this;" fix-it hint for
+ assignment operators.
+
+2018-08-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/86706
+ * class.c (build_base_path): Use currently_open_class.
+
+2018-08-02 David Malcolm <dmalcolm@redhat.com>
+
+ * error.c (cxx_print_error_function): Duplicate "file" before
+ passing it to pp_set_prefix.
+ (cp_print_error_function): Use pp_take_prefix when saving the
+ existing prefix.
+
+2018-08-02 Richard Biener <rguenther@suse.de>
+
+ PR c++/86763
+ * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
+ to the CLASSTYPE_AS_BASE.
+
+2018-08-01 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/86650
+ * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
+ TREE_BLOCK (t) from within percent_K_format to this callsite.
+
+2018-08-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/86661
+ * class.c (note_name_declared_in_class): Use location_of in permerror
+ instead of DECL_SOURCE_LOCATION (for OVERLOADs).
+
+2018-07-31 Tom de Vries <tdevries@suse.de>
+
+ PR debug/86687
+ * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
+
+2018-07-31 Jakub Jelinek <jakub@redhat.com>
+
+ P1008R1 - prohibit aggregates with user-declared constructors
+ * class.c (check_bases_and_members): For C++2a set
+ CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
+ type_has_user_provided_or_explicit_constructor.
+
+2018-07-31 Martin Liska <mliska@suse.cz>
+
+ PR c++/86653
+ * parser.c (cp_parser_condition): Initialize non_constant_p
+ to false.
+
+2018-07-28 David Malcolm <dmalcolm@redhat.com>
+
+ * error.c (cp_printer): In the leading comment, move "%H" and "%I"
+ into alphabetical order, and add missing "%G" and "%K". Within
+ the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
+ cases are in alphabetical order.
+
+2018-07-25 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-tree.h (enum cp_tree_index): Add
+ CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
+ and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
+ (abi_tag_identifier, aligned_identifier, begin_identifier,
+ end_identifier, get__identifier, gnu_identifier,
+ tuple_element_identifier, tuple_size_identifier, type_identifier,
+ value_identifier, fun_identifier, closure_identifier): Define.
+ * decl.c (initialize_predefined_identifiers): Initialize the above
+ identifiers.
+ (get_tuple_size): Use tuple_size_identifier instead of
+ get_identifier ("tuple_size") and value_identifier instead of
+ get_identifier ("value").
+ (get_tuple_element_type): Use tuple_element_identifier instead of
+ get_identifier ("tuple_element") and type_identifier instead of
+ get_identifier ("type").
+ (get_tuple_decomp_init): Use get__identifier instead of
+ get_identifier ("get").
+ * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
+ get_identifier ("_FUN").
+ * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
+ instead of get_identifier ("__closure").
+ (cp_parser_std_attribute): Use gnu_identifier instead of
+ get_identifier ("gnu").
+ (cp_parser_std_attribute_spec): Likewise. Use aligned_identifier
+ instead of get_identifier ("aligned").
+ * class.c (check_abi_tags, inherit_targ_abi_tags): Use
+ abi_tag_identifier instead of get_identifier ("abi_tag").
+
+ PR c++/85515
+ * cp-tree.h (enum cp_tree_index): Add
+ CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
+ (for_range__identifier, for_begin__identifier, for_end__identifier,
+ for_range_identifier, for_begin_identifier, for_end_identifier):
+ Define.
+ * decl.c (initialize_predefined_identifiers): Initialize
+ for_{range,begin,end}{,_}_identifier.
+ * parser.c (build_range_temp): Use for_range__identifier instead of
+ get_identifier ("__for_range").
+ (cp_convert_range_for): Use for_begin__identifier and
+ for_end__identifier instead of get_identifier ("__for_begin") and
+ get_identifier ("__for_end").
+ * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
+ local symbols to "__for_{range,begin,end}".
+
+2018-07-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86569
+ * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
+ of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
+ or warn_nonnull_compare.
+
+2018-07-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ Revert fix for c++/59480 (and testsuite followup)
+
+ 2019-07-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/59480, DR 136
+ * decl.c (check_no_redeclaration_friend_default_args): New.
+ (duplicate_decls): Use the latter; also check that a friend
+ declaration specifying default arguments is a definition.
+
+2018-07-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86550
+ * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
+ specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
+
+2018-07-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86190 - bogus -Wsign-conversion warning
+ * typeck.c (cp_build_binary_op): Fix formatting. Add a warning
+ sentinel.
+
+2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/59480, DR 136
+ * decl.c (check_no_redeclaration_friend_default_args): New.
+ (duplicate_decls): Use the latter; also check that a friend
+ declaration specifying default arguments is a definition.
+
+2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * class.c (note_name_declared_in_class): Prefer permerror + inform
+ to a pair of permerrors; use DECL_SOURCE_LOCATION.
+
+2018-07-18 Richard Biener <rguenther@suse.de>
+
+ PR debug/86523
+ * decl2.c (c_parse_final_cleanups): Call write_out_vars before
+ start_static_storage_duration_function sets current_function_decl.
+
+2018-07-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/86480 - nested variadic lambda and constexpr if.
+ * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
+ IF_STMT_EXTRA_ARGS.
+ * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
+ cp_unevaluated_operand.
+ [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.
+
+2018-07-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * class.c (resolve_address_of_overloaded_function): Don't emit an
+ inform if the matching permerror returns false.
+ * pt.c (check_specialization_namespace): Likewise.
+
+2018-07-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/3698
+ PR c++/86208
+ * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
+ in TREE_USED flag from stmt to h->to.
+
+2018-07-13 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/86374
+ * pt.c (lookup_template_class_1): Use tsubst_aggr_type for
+ contexts that are classes.
+ * parser.c (cp_parser_template_id): Combine entering_scope decl &
+ initializer.
+
+2018-07-12 Jakub Jelinek <jakub@redhat.com>
+
+ * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
+ type here, instead add "omp declare target implicit" attribute. Add
+ that attribute instead of "omp declare target" also when
+ processing_template_decl.
+ * decl.c (cp_finish_decl): Diagnose vars without mappable type here,
+ and before calling cp_omp_mappable_type call complete_type.
+
+2018-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/86406
+ * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
+ DEBUG_BEGIN_STMTs.
+
+ PR c++/86443
+ * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
+ instead of setting *lastp turn orig_declv elt into a TREE_LIST.
+ (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
+ * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
+ TREE_LIST for both the original class iterator and the "last" helper
+ var.
+
+2018-07-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (grokdeclarator): Use rich_location::add_range in three
+ more places; include gcc-rich-location.h.
+
+2018-07-07 Aldy Hernandez <aldyh@redhat.com>
+
+ * decl.c (build_enumerator): Change overflow type to overflow_type.
+ * init.c (build_new_1): Same.
+
+2018-07-05 Nathan Sidwell <nathan@acm.org>
+
+ * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
+ NO_IMPLICIT_EXTERN_C.
+ * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.
+
+2018-07-04 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ PR c++/86398
+ * method.c (is_trivially_xible): Return false
+ if is_xible_helper returns a NULL_TREE.
+
+2018-07-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (min_location): New.
+ (smallest_type_quals_location): Use the latter.
+ (check_concept_fn): Use DECL_SOURCE_LOCATION.
+ (grokdeclarator): Use accurate locations in a number of error
+ messages involving ds_thread, ds_storage_class, ds_virtual,
+ ds_constexpr, ds_typedef and ds_friend; exploit min_location.
+
+2018-07-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86201
+ * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.
+
+2018-07-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/86378 - functional cast in noexcept-specifier.
+ * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
+
+2018-07-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
+ in error message about __thread and thread_local at the same time.
+
+2018-06-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86184
+ * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.
+
+2018-06-28 David Malcolm <dmalcolm@redhat.com>
+
+ * parser.c (cp_parser_error_1): After issuing a conflict marker
+ error, consume tokens until the end of the source line.
+
+2018-06-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/86342 - -Wdeprecated-copy and system headers.
+ * decl2.c (cp_warn_deprecated_use): Don't warn about declarations
+ in system headers.
+
+2018-06-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/86329
+ * name-lookup.c (consider_binding_level): Filter out names that
+ match anon_aggrname_p.
+
+2018-06-27 Jason Merrill <jason@redhat.com>
+
+ * name-lookup.c (do_pushtag): If we skip a class level, also skip
+ its template level.
+
+2018-06-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/86320 - memory-hog with std::array of pair
+ * typeck2.c (process_init_constructor_array): Only compute a
+ constant initializer once.
+
+ PR c++/80290 - memory-hog with std::pair.
+ * pt.c (fn_type_unification): Add convs parameter.
+ (check_non_deducible_conversion): Remember conversion.
+ (check_non_deducible_conversions): New. Do checks here.
+ (type_unification_real): Not here. Remove flags parm.
+ * call.c (add_function_candidate): Make convs a parameter.
+ Don't recalculate the conversion if it's already set.
+ (add_template_candidate_real): Allocate convs here.
+ (good_conversion, conv_flags): New.
+
+2018-06-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86291
+ * parser.c (cp_parser_omp_for_loop_init): Change for_block argument
+ type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
+
+2018-06-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (bad_specifiers): Add const location_t* parameter and
+ use locations in error messages about 'inline' and 'virtual'.
+ (mark_inline_variable): Add location_t parameter and use it in
+ error_at and pedwarn messages.
+ (grokdeclarator): Use declspecs->locations[ds_constexpr],
+ declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
+ declspecs->locations[ds_inline] in many error messages; adjust
+ bad_specifiers and mark_inline_variable calls.
+ (grokvardecl): Use declspecs->locations[ds_concept] in error message.
+
+2018-06-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/86219 - ICE with erroneous initializer in template.
+ * constexpr.c (fold_non_dependent_expr): Add complain parm.
+ * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
+ Pass it.
+ * call.c (build_cxx_call): Don't mess with builtins in a template.
+ * typeck2.c (store_init_value): If fold_non_dependent_expr didn't
+ produce a constant value, go back to the uninstantiated form.
+
+ Avoid taking the address of something just because it's in parens.
+ * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
+ (cxx_fold_indirect_ref): Use it.
+ (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
+ * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
+ * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
+ static_cast to reference type.
+ (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.
+
+2018-06-21 Jason Merrill <jason@redhat.com>
+
+ * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.
+
+ * name-lookup.c (do_push_to_top_level): Don't allocate
+ current_lang_base.
+ (do_pop_from_top_level): Release current_lang_base.
+
+ Let -fmem-report see callers of cxx_make_type.
+ * lex.c (cxx_make_type): Add MEM_STAT_DECL.
+ (make_class_type): Likewise.
+ (cxx_make_type_hook): New.
+ * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
+
+2018-06-20 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/85634
+ * friend.c (add_friend): Keep lookup sets of tempate sets.
+
+2018-06-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
+ tidy handling of a null location_t argument; use proper location
+ information in a few additional error messages.
+ (grokdeclarator): Update calls.
+
+2018-06-20 Chung-Lin Tang <cltang@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+ Cesar Philippidis <cesar@codesourcery.com>
+
+ * parser.c (cp_parser_omp_clause_name): Add support for finalize
+ and if_present. Make present_or_{copy,copyin,copyout,create} aliases
+ to their non-present_or_* counterparts. Make 'self' an alias to
+ PRAGMA_OACC_CLAUSE_HOST.
+ (cp_parser_oacc_data_clause): Update GOMP mappings for
+ PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
+ PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
+ (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
+ Remove support for present_or_* clauses.
+ (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
+ (OACC_PARALLEL_CLAUSE_MASK): Likewise.
+ (OACC_DECLARE_CLAUSE_MASK): Likewise.
+ (OACC_DATA_CLAUSE_MASK): Likewise.
+ (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
+ (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
+ (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
+ (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
+ * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
+ * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.
+
+2018-06-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86240
+ * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
+ (fold_simple_1): Likewise.
+ * error.c (dump_expr): Likewise.
+
+2018-06-20 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/85634
+ * cp-tree.h (lookup_keep): Drop KEEP parm.
+ (lookup_list_keep): Delete.
+ (maybe_get_fns): Declare.
+ * parser.c (cp_parser_primary_expression): Call lookup_keep here.
+ (cp_parser_template_id): Not here ...
+ * decl.c (cp_finish_decl): ... nor here ...
+ * init.c (build_raw_new_expr): ... nor here ...
+ * pt.c (process_template_parm): ... nor here ...
+ * semantics.c (perform_koenig_lookup): Call lookup_keep.
+ (finish_call_expr): Not here.
+ * tree.c (ovl_cache): Delete.
+ (ovl_make, ovl_copy): No cache.
+ (lookup_keep): Always keep.
+ (lookup_list_keep): Delete.
+ (maybe_get_fns): New, broken out of ...
+ (get_fns): ... here. Call it.
+ (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
+ (build_min_nt_call_vec): Likewise.
+
+2018-06-19 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
+ * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.
+
+ PR c++/86182 - ICE with anonymous union passed to template.
+ * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
+ used to declare a named variable.
+
+2018-06-18 Jason Merrill <jason@redhat.com>
+
+ * tree.c (cp_expr_location): New.
+ * cp-tree.h (cp_expr_loc_or_loc): New.
+ * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
+ error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
+ typeck2.c: Use it instead of EXPR_LOC_OR_LOC.
+
+ * parser.c (cp_parser_lambda_expression): Use a range for
+ LAMBDA_EXPR_LOCATION.
+
+ PR c++/86200 - ICE with unexpanded pack in lambda parameter.
+ * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
+ function type.
+
+ PR c++/81060 - ICE with unexpanded parameter pack.
+ * pt.c (check_for_bare_parameter_packs): Add loc parameter.
+ * decl.c (grokdeclarator): Call it for qualifying_scope.
+
+ PR c++/86171 - ICE with recursive alias instantiation.
+ * pt.c (tsubst_decl): Handle recursive alias instantiation.
+
+2018-06-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
+ in errors about redefined default arguments; tidy.
+
+2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
+
+ * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
+ * cp-gimplify.c (cp_fold): Likewise.
+
+2018-06-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/86147 - wrong capture for template argument.
+ * expr.c (mark_use): Look through NOP_EXPR.
+
+ * name-lookup.c (do_pushtag): Don't look through complete types, but
+ don't add to them either. Get context from current_binding_level.
+ * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
+
+ * decl.c (start_enum): Do compare dependent underlying type.
+
+ PR c++/82882 - ICE with lambda in template default argument.
+ * lambda.c (record_null_lambda_scope): New.
+ * pt.c (tsubst_lambda_expr): Use it.
+ * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
+ function that isn't open.
+
+ * tree.c (maybe_warn_parm_abi): Inform the location of the class.
+
+2018-06-14 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86063
+ * decl2.c (cp_check_const_attributes): Skip trees that are not
+ TREE_LISTs.
+
+2018-06-14 Jakub Jelinek <jakub@redhat.com>
+
+ P0624R2 - Default constructible and assignable stateless lambdas
+ * method.c (synthesized_method_walk): For C++2a don't mark
+ sfk_constructor or sfk_copy_assignment as deleted if lambda has
+ no lambda-captures.
+
+2018-06-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
+ OPT_Wshadow warning_at.
+ (grokfndecl): Consistently use the location_t argument in
+ literal operator diagnostic messages.
+ (grokdeclarator): Use declspecs->locations[ds_storage_class]
+ in error_at call.
+ * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
+ in permerror call.
+
+2018-06-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
+ * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
+ constructors.
+
+ PR c++/86094 - wrong code with defaulted move ctor.
+ * class.c (classtype_has_non_deleted_move_ctor): New.
+ * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
+ Handle v12 breakage.
+
+2018-06-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/86098 - ICE with template placeholder for TTP.
+ * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
+ CLASS_PLACEHOLDER_TEMPLATE.
+
+2018-06-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
+ parameter and adjust error_at calls.
+ * decl.c (grok_op_properties): Adjust calls.
+ * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
+
+2018-06-12 Marek Polacek <polacek@redhat.com>
+
+ Core issue 1331 - const mismatch with defaulted copy constructor
+ * class.c (check_bases_and_members): When checking a defaulted
+ function, mark it as deleted rather than giving an error.
+
+2018-06-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
+ * class.c (maybe_warn_about_overly_private_class): Handle inherited
+ constructors.
+
+ PR c++/85963 - -Wunused-but-set with ?: in template.
+ * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
+
+2018-06-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (grok_op_properties): Consistently use the location
+ of the decl; remove special casing of POSTINCREMENT_EXPR and
+ POSTDECREMENT_EXPR wrt default arguments.
+
+2018-06-05 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (cxx_eval_binary_expression): Special case comparison
+ of pointers to members of the same union.
+
+2018-06-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/86094 - wrong code with defaulted move ctor.
+ * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
+
+2018-06-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (grokfndecl): Use the location_t argument in two more places.
+
+2018-06-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85977
+ * pt.c (unify): If ELTTYPE has no deducible template parms, skip
+ deduction from the list elements.
+ (type_unification_real): Check convertibility of list elements.
+
+2018-06-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/86060 - ICE on range for with -std=c++98.
+ * parser.c (cp_parser_init_statement): Don't clobber *decl after
+ pedwarn.
+
+ PR c++/85710 - ICE with -Wmemset-elt-size.
+ * semantics.c (finish_call_expr): Call warn_for_memset here.
+ * parser.c (cp_parser_postfix_expression): Not here.
+ (literal_integer_zerop): No longer static.
+ * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
+
+2018-06-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85976
+ * tree.c (cp_tree_equal): Handle USING_DECL.
+
+2018-06-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/85731 - wrong error with qualified-id in template.
+ * semantics.c (finish_qualified_id_expr): build_qualified_name
+ for unbound names in the current class.
+
+2018-06-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/61806 - missed SFINAE with partial specialization.
+ * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
+ parameter to constructor.
+ * pt.c (instantiate_class_template_1): Enable access checking
+ before call to most_specialized_partial_spec.
+
+ PR c++/85765 - SFINAE and non-type default template arg.
+ * pt.c (type_unification_real): Do full semantic processing if
+ substituting a partial args list replaces all template parms.
+
+2018-06-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/85739 - ICE with pointer to member template parm.
+ * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
+
+2018-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/85761 - ICE with ill-formed use of const outer variable.
+ * expr.c (mark_use): Handle location wrappers.
+
+2018-06-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/85764 - bogus 'this' not captured error.
+ * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
+ (nonlambda_method_basetype): Handle NSDMI.
+
+ CWG 1581: When are constexpr member functions defined?
+ * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
+ (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
+
+ PR c++/58281 - explicit instantiation of constexpr
+ * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
+
+ * pt.c (instantiate_decl): Any defaulted function is defined.
+
+2018-05-30 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/77777
+ * call.c (resolve_args): Use location of expression, not current input
+ location.
+
+2018-05-30 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Do not warn about zero-as-null when NULL is used.
+ * call.c (conversion_null_warnings): Check for pointer
+ types converted from zero constants.
+ (convert_like_real): Add a warning sentinel at the end.
+ * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
+ check null_node_p.
+
+2018-05-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/85807 - ICE with call in template NSDMI.
+ * init.c (get_nsdmi): Use push_to/pop_from_top_level.
+ * tree.c (bot_manip): Don't set_flags_from_callee in a template.
+
+ PR c++/85873 - constant initializer_list array not in .rodata.
+ * tree.c (build_target_expr): Set TREE_READONLY.
+ * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
+
+ * parser.c (cp_parser_check_condition_declarator): Handle
+ cp_error_declarator.
+
+2018-05-30 Jonathan Wakely <jwakely@redhat.com>
+
+ * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
+ of using it in dead store.
+
+2018-05-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/67445 - returning temporary initializer_list.
+ PR c++/67711 - assigning from temporary initializer_list.
+ PR c++/48562 - new initializer_list.
+ * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
+ about returning local initializer_list.
+ * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
+ * call.c (build_over_call): Warn about assignment from temporary
+ init_list.
+ * init.c (build_new_1): Warn about 'new std::initializer_list'.
+ (find_list_begin, maybe_warn_list_ctor): New.
+ (perform_member_init): Use maybe_warn_list_ctor.
+
+2018-05-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85883
+ * init.c (build_new): Handle deducing a class with new
+ with more than one argument.
+
+2018-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85952
+ * init.c (build_aggr_init): For structured binding initialized from
+ array call mark_rvalue_use on the initializer.
+
+2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * decl2.c (start_static_storage_duration_function): Use
+ splay_tree_delete_pointers.
+
+2018-05-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/85815 - reference to member of enclosing template.
+ * search.c (lookup_base): Use currently_open_class.
+ (lookup_member): Use it regardless of -fconcepts.
+ * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
+
+ CWG 616, 1213 - value category of subobject references.
+ * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
+
+2018-05-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
+ * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
+ generic lambda.
+
+2018-05-24 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Pedwarn on a non-standard position of a C++ attribute.
+ * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
+ after the namespace name.
+
+2018-05-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cp-tree.h (INDIRECT_TYPE_P): New.
+ * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
+ joust): Use it instead of POINTER_TYPE_P.
+ * class.c (update_vtable_entry_for_fn, find_flexarrays,
+ * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
+ * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
+ * cxx_eval_increment_expression, potential_constant_expression_1):
+ Likewise.
+ * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
+ * cp-objcp-common.c (cxx_get_alias_set): Likewise.
+ * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
+ cp_ubsan_maybe_instrument_downcast): Likewise.
+ * cvt.c (cp_convert_to_pointer, ocp_convert,
+ cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
+ * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
+ pp_cxx_offsetof_expression_1): Likewise.
+ * decl.c (grokparms, static_fn_type): Likewise.
+ * decl2.c (grokbitfield): Likewise.
+ * error.c (dump_expr): Likewise.
+ * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
+ * init.c (warn_placement_new_too_small): Likewise.
+ * lambda.c (build_capture_proxy, add_capture): Likewise.
+ * parser.c (cp_parser_omp_for_loop): Likewise.
+ * pt.c (convert_nontype_argument, fn_type_unification,
+ uses_deducible_template_parms, check_cv_quals_for_unify,
+ dependent_type_p_r): Likewise.
+ * search.c (check_final_overrider): Likewise.
+ * semantics.c (handle_omp_array_sections, finish_omp_clauses,
+ finish_omp_for): Likewise.
+ * tree.c (cp_build_qualified_type_real): Likewise.
+ * typeck.c (build_class_member_access_expr,
+ finish_class_member_access_expr, build_x_indirect_ref,
+ cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
+ Likewise.
+
+2018-05-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/85864 - literal template and default template arg.
+ * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
+
+2018-05-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85847
+ * init.c (build_new_1): Use fold_non_dependent_expr. Use a dedicated
+ variable for its result. Fix a condition.
+ (build_new): Use fold_non_dependent_expr. Tweak a condition.
+
+2018-05-23 Jason Merrill <jason@redhat.com>
+
+ Fix cast to rvalue reference from prvalue.
+ * cvt.c (diagnose_ref_binding): Handle rvalue reference.
+ * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
+ non-class type. Handle xvalue argument.
+ * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
+ rvalue reference.
+ * semantics.c (finish_compound_literal): Do direct-initialization,
+ not cast, to initialize a reference.
+
+ CWG 616, 1213 - value category of subobject references.
+ * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
+ an xvalue.
+ * typeck2.c (build_m_component_ref): Likewise.
+ * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
+ distinction between temporary and xvalue.
+
+2018-05-23 Marek Polacek <polacek@redhat.com>
+
+ Implement P0614R1, Range-based for statements with initializer.
+ * parser.c (cp_parser_range_based_for_with_init_p): New.
+ (cp_parser_init_statement): Use it. Parse the optional init-statement
+ for a range-based for loop.
+ (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
+
+2018-05-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/81420 - not extending temporary lifetime.
+ * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
+ * class.c (build_base_path): Avoid redundant move of an rvalue.
+
+ PR c++/85866 - error with .* in default template arg.
+ * pt.c (tsubst_copy_and_build): Handle partial instantiation.
+
+2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * parser.c (cp_parser_parameter_declaration_list): Remove
+ bool* parameter.
+ (cp_parser_parameter_declaration_clause): Adjust.
+ (cp_parser_cache_defarg): Likewise.
+
+2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84588
+ * parser.c (cp_parser_maybe_commit_to_declaration,
+ cp_parser_check_condition_declarator): New.
+ (cp_parser_simple_declaration): Use the first above.
+ (cp_parser_condition): Use both the above; enforce
+ [stmt.stmt]/2 about the declarator not specifying
+ a function or an array; improve error-recovery.
+
+2018-05-20 Jason Merrill <jason@redhat.com>
+
+ PR libstdc++/85843 - warning in logic_error copy constructor.
+ * class.c (type_has_user_nondefault_constructor): Check for a
+ user-provided ctor, not user-declared.
+
+2018-05-19 Jason Merrill <jason@redhat.com>
+
+ * pt.c (tsubst_pack_expansion): Sorry rather than abort
+ on __integer_pack as subexpression of pattern.
+
+2018-05-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/58407 - deprecated implicit copy ops.
+ * call.c (build_over_call): Warn about deprecated trivial fns.
+ * class.c (classtype_has_user_copy_or_dtor): New.
+ (type_build_ctor_call): Check TREE_DEPRECATED.
+ (type_build_dtor_call): Likewise.
+ * decl2.c (cp_warn_deprecated_use): Move from tree.c.
+ Add checks. Return bool. Handle -Wdeprecated-copy.
+ (mark_used): Use it.
+ * decl.c (grokdeclarator): Remove redundant checks.
+ * typeck2.c (build_functional_cast): Likewise.
+ * method.c (lazily_declare_fn): Mark deprecated copy ops.
+ * init.c (build_aggr_init): Only set TREE_USED if there are
+ side-effects.
+
+2018-05-18 Cesar Philippidis <cesar@codesourcery.com>
+
+ PR c++/85782
+ * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
+ OACC_LOOPs.
+
+2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
+ (potential_constant_expression_1): Likewise.
+
+2018-05-16 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85363
+ * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
+ * tree.c (bot_manip): Call set_flags_from_callee for
+ AGGR_INIT_EXPRs too.
+
+2018-05-15 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (cp_expr): Remove copy constructor.
+ * mangle.c (struct releasing_vec): Declare copy constructor.
+
+ * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
+
+ PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
+ * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
+ is a throw-expression.
+
+2018-05-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
+ (FOR_EACH_CLONE): Update.
+ * decl.c (grokdeclarator): Use it.
+ * decl2.c (vague_linkage_p): Likewise.
+ * mangle.c (mangle_decl): Likewise.
+ * method.c (lazily_declare_fn): Likewise.
+ * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
+ * repo.c (repo_emit_p): Likewise.
+ * tree.c (decl_linkage): Likewise.
+
+2018-05-14 Jason Merrill <jason@redhat.com>
+
+ Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
+ * tree.c (build_cp_fntype_variant): New.
+ (build_ref_qualified_type, build_exception_variant)
+ (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
+ (cxx_type_hash_eq, cp_check_qualified_type): Check
+ TYPE_HAS_LATE_RETURN_TYPE.
+ (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
+ (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
+ * class.c (build_clone): Use cxx_copy_lang_qualifiers.
+ (adjust_clone_args): Likewise.
+ * decl.c (grokfndecl): Add late_return_type_p parameter. Use
+ build_cp_fntype_variant.
+ (grokdeclarator): Pass late_return_type_p to grokfndecl.
+ (check_function_type): Use cxx_copy_lang_qualifiers.
+ (static_fn_type): Use cxx_copy_lang_qualifiers.
+ * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
+ (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
+ (change_return_type): Use cxx_copy_lang_qualifiers.
+ * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
+ * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
+ return type on the declarator like a normal trailing return type.
+ * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
+ (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
+ * typeck.c (merge_types): Use build_cp_fntype_variant.
+
+2018-05-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cp-tree.h (TYPE_REF_P): New.
+ (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
+ * call.c (build_list_conv, build_aggr_conv, standard_conversion,
+ direct_reference_binding, reference_binding, implicit_conversion,
+ add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
+ build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
+ build_over_call, perform_implicit_conversion_flags,
+ extend_ref_init_temps, type_has_extended_temps): Use it.
+ * class.c (one_inheriting_sig, check_field_decls,
+ check_bases_and_members, find_flexarrays, finish_struct,
+ fixed_type_or_null): Likewise.
+ * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
+ non_const_var_error, cxx_eval_constant_expression,
+ potential_constant_expression_1): Likewise.
+ * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
+ cp_genericize_r, cxx_omp_privatize_by_reference,
+ cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
+ cp_fold_maybe_rvalue): Likewise.
+ * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
+ * cvt.c (build_up_reference, convert_to_reference,
+ convert_from_reference, convert_to_void, noexcept_conv_p,
+ fnptr_conv_p): Likewise.
+ * decl.c (poplevel, check_for_uninitialized_const_var,
+ check_initializer, initialize_local_var, cp_finish_decl,
+ get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
+ move_signature_fn_p, grok_op_properties, finish_function): Likewise.
+ * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
+ decl_maybe_constant_var_p): Likewise.
+ * error.c (dump_type_prefix, dump_expr): Likewise.
+ * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
+ is_admissible_throw_operand_or_catch_parameter): Likewise.
+ * expr.c (mark_use): Likewise.
+ * init.c (build_zero_init_1, build_value_init_noctor,
+ perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
+ build_new, build_delete): Likewise.
+ * lambda.c (build_lambda_object): Likewise.
+ * mangle.c (write_expression, write_template_arg): Likewise.
+ * method.c (forward_parm, do_build_copy_constructor,
+ do_build_copy_assign, build_stub_object, constructible_expr,
+ walk_field_subobs): Likewise.
+ * parser.c (cp_parser_omp_for_loop_init,
+ cp_parser_omp_declare_reduction_exprs,
+ cp_parser_omp_declare_reduction): Likewise.
+ * pt.c (convert_nontype_argument_function, convert_nontype_argument,
+ convert_template_argument, tsubst_pack_expansion,
+ tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
+ maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
+ more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
+ value_dependent_expression_p, build_deduction_guide): Likewise.
+ * semantics.c (finish_handler_parms, finish_non_static_data_member,
+ finish_compound_literal, omp_privatize_field,
+ handle_omp_array_sections_1, handle_omp_array_sections,
+ cp_check_omp_declare_reduction, finish_omp_reduction_clause,
+ finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
+ finish_omp_clauses, finish_decltype_type, capture_decltype,
+ finish_builtin_launder): Likewise.
+ * tree.c (lvalue_kind, cp_build_reference_type, move,
+ cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
+ * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
+ cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
+ cp_build_addr_expr_1, maybe_warn_about_useless_cast,
+ build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
+ build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
+ convert_for_initialization,
+ maybe_warn_about_returning_address_of_local, check_return_expr,
+ cp_type_quals, casts_away_constness, non_reference): Likewise.
+ * typeck2.c (cxx_readonly_error, store_init_value,
+ process_init_constructor_record, build_x_arrow, build_functional_cast,
+ add_exception_specifier): Likewise.
+
+2018-05-14 Jason Merrill <jason@redhat.com>
+
+ * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
+ (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
+
+2018-05-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/85696
+ * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
+ * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
+ cxx_omp_predetermined_sharing_1. Rename old function to ...
+ (cxx_omp_predetermined_sharing_1): ... this.
+ * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
+ instead of cxx_omp_predetermined_sharing.
+
+2018-05-10 Jason Merrill <jason@redhat.com>
+
+ * decl.c (cp_finish_decl): Don't instantiate auto variable.
+ (check_static_variable_definition): Allow auto.
+ * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
+
+ * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
+ (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
+
+ Core issue 2310 - conversion to base of incomplete type.
+ * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
+
+ CWG 2267 - list-initialization of reference temporary
+ * call.c (reference_binding): List-initializing a reference
+ temporary is copy-list-initialization.
+
+ * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
+
+ * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
+ instantiation in template context.
+
+ * class.c (vbase_has_user_provided_move_assign): Use
+ user_provided_p.
+
+ * lambda.c (lambda_expr_this_capture): Improve logic.
+
+ * decl.c (make_typename_type): s/parameters/arguments/.
+ * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
+ * pt.c (make_pack_expansion): Correct error message.
+
+2018-05-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85662
+ * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
+ fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
+ fold_convert.
+
+2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR c++/85400
+ * decl2.c (adjust_var_decl_tls_model): New static function.
+ (comdat_linkage): Call it on a variable.
+ (maybe_make_one_only): Likewise.
+
+2018-05-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85713
+ Revert:
+ 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84588
+ * parser.c (cp_parser_parameter_declaration_list): When the
+ entire parameter-declaration-list is erroneous maybe call
+ abort_fully_implicit_template.
+
+2018-05-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/85706 - class deduction under decltype
+ * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE. Clear
+ *walk_subtrees whether or not we walked into the operand.
+ (type_uses_auto): Only look at deduced contexts.
+
+2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84588
+ * parser.c (cp_parser_parameter_declaration_list): When the
+ entire parameter-declaration-list is erroneous maybe call
+ abort_fully_implicit_template.
+
+2018-05-08 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85695
+ * semantics.c (finish_if_stmt_cond): See through typedefs.
+
+2018-05-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/85646 - lambda visibility.
+ * decl2.c (determine_visibility): Don't mess with template arguments
+ from the containing scope.
+ (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
+ thunk.
+
+2018-05-07 Nathan Sidwell <nathan@acm.org>
+
+ Remove fno-for-scope
+ * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
+ (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
+ (SET_DECL_SHADOWED_FOR_VAR): Delete.
+ (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
+ (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
+ Don't declare.
+ * name-lookup.h (struct cp_binding_level): Remove
+ dead_vars_from_for field.
+ * cp-lang.c (cp_init_ts): Delete.
+ (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
+ * cp-objcp-common.c (shadowed_var_for_decl): Delete.
+ (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
+ (init_shadowed_var_for_decl): Delete.
+ * decl.c (poplevel): Remove shadowed for var handling.
+ (cxx_init_decl_processing): Remove -ffor-scope deprecation.
+ * name-lookup.c (find_local_binding): Remove shadowed for var
+ handling.
+ (check_local_shadow): Likewise.
+ (check_for_out_of_scope_variable): Delete.
+ * parser.c (cp_parser_primary_expression): Remove shadowed for var
+ handling.
+ * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
+ * semantics.c (begin_for_scope): Always have a scope.
+ (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
+ (begin_range_for_stmt, finish_id_expression): Likewise.
+
+2018-05-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/85618 - ICE with initialized VLA.
+ * tree.c (vla_type_p): New.
+ * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
+ rather than array_of_runtime_bound_p.
+
+2018-05-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cvt.c (ocp_convert): Early handle the special case of a
+ null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
+
+2018-05-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/85600 - virtual delete failure.
+ * init.c (build_delete): Always save_expr when deleting.
+
+2018-05-03 Nathan Sidwell <nathan@acm.org>
+
+ * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
+ * name-lookup.c (do_pushdecl): Likewise.
+
+2018-05-02 Paolo Carlini <paolo.carlini@oracle.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/68374
+ * name-lookup.c (check_local_shadow): Don't handle static old
+ declarations in the block handling locals shadowing locals.
+
+2018-05-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/85587 - error with scoped enum in template.
+ * semantics.c (finish_qualified_id_expr): Don't return an
+ unqualified IDENTIFIER_NODE.
+
+2018-04-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/85580 - extern "C" and local variables
+ * name-lookup.c (check_extern_c_conflict): Ignore local decls.
+
+ PR c++/84701 - unsigned typeof.
+ * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
+ of long/short/signed/unsigned.
+
+ PR c++/85305 - pack in lambda init-capture.
+ * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
+ check_for_bare_parameter_packs in a subexpression.
+ (cp_parser_lambda_introducer): Use it.
+
+ PR c++/61982 - dead stores to destroyed objects.
+ * call.c (build_trivial_dtor_call): New, assigns a clobber.
+ (build_over_call, build_special_member_call): Use it.
+ * cp-tree.h: Declare it.
+ * init.c (build_delete): Remove trivial path.
+
+ * init.c (build_dtor_call): Use build_special_member_call.
+ (build_delete): Remove redundant uses of save_addr.
+
+ * decl.c (build_clobber_this): Use build_clobber.
+
+2018-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85553
+ * init.c (build_zero_init_1): For zero initialization of
+ NULLPTR_TYPE_P type use build_int_cst directly.
+
+2018-04-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85515
+ * name-lookup.c (consider_binding_level): Skip compiler-generated
+ variables.
+ * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
+ nested if statements into a series of rejection tests. Reject
+ lambda-ignored entities as suggestions.
+
+2018-04-27 Jason Merrill <jason@redhat.com>
+
+ * cvt.c (cp_fold_convert): Use convert_ptrmem.
+ * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
+
+2018-04-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84691
+ * decl.c (grokdeclarator): Clear friendp upon definition in local
+ class definition error.
+
+2018-04-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/85545 - ICE with noexcept PMF conversion.
+ * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
+ build_ptrmemfunc.
+ * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
+ adjustment.
+ (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
+
+2018-04-27 Nathan Sidwell <nathan@acm.org>
+
+ * typeck.c (convert_ptrmem): Move local var decls to initialization.
+
+ * cp-tree.h (TEMPLATE_INFO): Fix comments.
+ (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
+ (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
+ (dump, print_other_binding_stacks): Remove declarations.
+ * name-lookup.c (print_other_binding_stack): Make static.
+ * pt.c (build_template_decl): Make static.
+
+2018-04-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/85545 - ICE with noexcept PMF conversion.
+ * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
+
+2018-04-25 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/85437
+ PR c++/49171
+ * cp-tree.h (REINTERPRET_CAST_P): New.
+ * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
+ Reject REINTERPET_CAST_P conversions. Use cplus_expand_constant
+ for non-trivial PTRMEM_CST cases.
+ * typeck.c (build_nop_reinterpret): New.
+ (build_reinterpret_cast_1): Use it. Set REINTERPRET_CAST_P on
+ NOP_EXPRs returned by cp_convert.
+
+2018-04-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/69560 - wrong alignof(double) on x86.
+ CWG 1879 - Inadequate definition of alignment requirement.
+ * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
+ * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
+ (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
+ (cxx_alignof_expr): Pass it.
+ * parser.c (cp_parser_unary_expression): Pass it.
+ * pt.c (tsubst_copy): Copy it.
+ (tsubst_copy_and_build): Pass it.
+ * decl.c (fold_sizeof_expr): Pass it.
+
+2018-04-23 Jakub Jelinek <jakub@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/85470 - wrong error with static data member.
+ * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
+ * typeck2.c (store_init_value): Likewise.
+
+2018-04-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85462
+ * cp-tree.h (tinst_level): Remove in_system_header_p member,
+ change refcount member from unsigned char to unsigned short,
+ add refcount_infinity static data member, adjust comments.
+ * pt.c (tinst_level::refcount_infinity): Define.
+ (inc_refcount_use): Remove assert, don't increment if refcount
+ is already refcount_infinity, adjust comment.
+ (dec_refcount_use): Remove assert, don't decrement if refcount
+ is refcount_infinity, adjust comment.
+ (push_tinst_level_loc): Formatting fix.
+
+2018-04-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84611
+ * pt.c (lookup_template_class_1): Check pushtag return value for
+ error_mark_node.
+
+2018-04-19 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/80290
+ * cp-tree.h (tinst_level::free): Fix whitespace.
+
+2018-04-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84630
+ * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
+ for error_mark_node.
+
+2018-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84463
+ * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
+ tricks from here to ...
+ * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here. Only use it
+ if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
+
+2018-04-18 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/80290
+ * cp-tree.h (struct tinst_level): Split decl into tldcl and
+ targs. Add private split_list_p, tree_list_p, and not_list_p
+ inline const predicates; to_list private member function
+ declaration; free public member function declaration; list_p,
+ get_node and maybe_get_node accessors, and refcount data
+ member. Narrow errors to unsigned short.
+ * error.c (print_instantiation_full_context): Use new
+ accessors.
+ (print_instantiation_partial_context_line): Likewise. Drop
+ const from tinst_level-typed parameter.
+ * mangle.c (mangle_decl_string): Likewise.
+ * pt.c (freelist): New template class.
+ (tree_list_freelist_head): New var.
+ (tree_list_freelist): New fn, along with specializations.
+ (tinst_level_freelist_head): New var.
+ (pending_template_freelist_head): Likewise.
+ (tinst_level_freelist, pending_template_freelist): New fns.
+ (tinst_level::to_list, tinst_level::free): Define.
+ (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
+ (set_refcount_ptr): New template fn.
+ (add_pending_template): Adjust for refcounting, freelists and
+ new accessors.
+ (neglectable_inst_p): Take a NULL d as a non-DECL.
+ (limit_bad_template_recursion): Use new accessors.
+ (push_tinst_level): New overload to create the list.
+ (push_tinst_level_loc): Make it static, split decl into two
+ args, adjust tests and initialization to cope with split
+ lists, use freelist, adjust for refcounting.
+ (push_tinst_level_loc): New wrapper with the old interface.
+ (pop_tinst_level): Adjust for refcounting.
+ (record_last_problematic_instantiation): Likewise.
+ (reopen_tinst_level): Likewise. Use new accessors.
+ (instantiate_alias_template): Adjust for split list.
+ (fn_type_unification): Likewise.
+ (get_partial_spec_bindings): Likewise.
+ (instantiate_pending_templates): Use new accessors. Adjust
+ for refcount. Release pending_template to freelist.
+ (instantiating_current_function_p): Use new accessors.
+
+2018-04-16 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/85039
+ * parser.c (cp_parser_builtin_offset): Reject type definitions.
+ * mangle.c (nested_anon_class_index): Avoid crash returning -1
+ if we've seen errors.
+
+2018-04-12 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85385
+ * name-lookup.c (macro_use_before_def::maybe_make): New function,
+ checking that the use is indeed before the definition.
+ (macro_use_before_def::macro_use_before_def): Make private.
+ (macro_use_before_def::~macro_use_before_def): Make private. Move
+ check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
+ (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
+ than using new directly.
+
+2018-04-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/85356 - ICE with pointer to member function.
+ * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
+ flag_noexcept_type. Build the new spec within the function context.
+ * except.c (build_noexcept_spec): Do get constant value in templates
+ if flag_noexcept_type.
+ * decl.c (check_redeclaration_exception_specification): Don't
+ instantiate noexcept on a dependent declaration.
+
+2018-04-12 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85258
+ * constexpr.c (reduced_constant_expression_p): Return false for null
+ trees.
+
+2018-04-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85032
+ * constexpr.c (potential_constant_expression_1): Consider conversions
+ from classes to literal types potentially constant.
+
+2018-04-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/70808
+ * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
+ the type like TYPE_PTR_OR_PTRMEM_P.
+
+2018-04-10 Jason Merrill <jason@redhat.com>
+
+ PR debug/65821 - wrong location for main().
+ * call.c (clear_location_r, convert_default_arg): Revert.
+ * tree.c (break_out_target_exprs): Add clear_location parm.
+ (struct bot_data): New.
+ (bot_manip): Clear location if requested.
+ * init.c (get_nsdmi): Pass clear_location.
+
+2018-04-10 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85110
+ * call.c (get_fndecl_argument_location): Make non-static.
+ * cp-tree.h (get_fndecl_argument_location): New decl.
+ * typeck.c (convert_for_assignment): When complaining due to
+ conversions for an argument, show the location of the parameter
+ within the decl.
+
+2018-04-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85312 - P0962 cleanup
+ * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
+ diagnostics.
+
+2018-04-10 Jason Merrill <jason@redhat.com>
+
+ PR debug/65821 - wrong location for main().
+ * call.c (clear_location_r): New.
+ (convert_default_arg): Use it.
+ * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
+
+ PR c++/85285 - ICE with flexible array after substitution.
+ * pt.c (instantiate_class_template_1): Check for flexible array in
+ union.
+
+2018-04-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85227
+ * decl.c (cp_finish_decomp): In a template, if the type is incomplete
+ issue a pedwarn and defer trying to do bindings.
+
+2018-04-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/85279 - dump_expr doesn't understand decltype.
+ * error.c (dump_expr): Handle DECLTYPE_TYPE.
+
+ PR c++/85262 - ICE with redundant qualification on constructor.
+ * call.c (build_new_method_call_1): Move make_args_non_dependent
+ after A::A() handling.
+
+ PR c++/85277 - ICE with invalid offsetof.
+ * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
+ Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
+
+ PR c++/85264 - ICE with excess template-parameter-list.
+ * parser.c (cp_parser_check_template_parameters): Add template_id_p
+ parameter. Don't allow an extra template header if true.
+ (cp_parser_class_head): Pass template_id_p.
+ (cp_parser_elaborated_type_specifier): Likewise.
+ (cp_parser_alias_declaration): Likewise.
+ (cp_parser_check_declarator_template_parameters): Likewise.
+
+2018-04-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85194
+ * parser.c (cp_parser_simple_declaration): For structured bindings,
+ if *maybe_range_for_decl is NULL after parsing it, set it to
+ error_mark_node.
+
+2018-04-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/85256 - ICE capturing pointer to VLA.
+ * lambda.c (add_capture): Distinguish between variable-size and
+ variably-modified types.
+
+2018-04-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/85214 - ICE with alias, generic lambda, constexpr if.
+ * pt.c (extract_locals_r): Remember local typedefs.
+
+2018-04-06 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/84269
+ * name-lookup.c (struct std_name_hint): Move out of
+ get_std_name_hint; add field "min_dialect".
+ (get_std_name_hint): Add min_dialect values to all initializers.
+ Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
+ <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
+ <shared_mutex>, <string_view>, <thread>, and <variant>.
+ Add fstream, ifstream, and ofstream to <fstream>.
+ Add istringstream, ostringstream, and stringstream to <sstream>.
+ Add basic_string to <string>.
+ Add tuple_element and tuple_size to <tuple>.
+ Add declval to <utility>.
+ Fix ordering of <queue> and <tuple>.
+ Return a std_name_hint, rather than a const char *.
+ (get_cxx_dialect_name): New function.
+ (maybe_suggest_missing_std_header): Detect names that aren't yet
+ available in the current dialect, and instead of suggesting a
+ missing #include, warn about the dialect.
+
+2018-04-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85210
+ * pt.c (tsubst_decomp_names): Return error_mark_node and assert
+ errorcount is set if tsubst doesn't return a VAR_DECL.
+
+2018-04-06 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85021
+ * name-lookup.c (using_directives_contain_std_p): New function.
+ (has_using_namespace_std_directive_p): New function.
+ (suggest_alternatives_for): Simplify if/else logic using early
+ returns. If no candidates were found, and there's a
+ "using namespace std;" directive, call
+ maybe_suggest_missing_std_header.
+ (maybe_suggest_missing_header): Split later part of the function
+ into..
+ (maybe_suggest_missing_std_header): New.
+
+2018-04-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/85242 - ICE with class definition in template parm.
+ * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
+ processing_template_parmlist.
+
+ PR c++/85240 - LTO ICE with using of undeduced auto fn.
+ * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
+
+2018-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85209
+ * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
+ is not prev, if prev == decl.
+
+ PR c++/85208
+ * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
+ maybe_apply_pragma_weak here...
+ (cp_maybe_mangle_decomp): ... but call it here instead.
+
+2018-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/85136 - ICE with designated init in template.
+ * decl.c (maybe_deduce_size_from_array_init): Handle dependent
+ designated initializer.
+ (check_array_designated_initializer): Update ce->index with the
+ constant value.
+
+ PR c++/83808 - ICE with VLA initialization.
+ * typeck2.c (process_init_constructor_array): Don't require a VLA
+ initializer to have VLA type.
+
+2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/80956
+ * call.c (convert_like_real): Fail gracefully for a broken
+ std::initializer_list, missing a definition.
+
+ * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
+
+2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84792
+ * decl.c (grokdeclarator): Fix diagnostic about typedef name used
+ as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
+
+2018-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/82152 - ICE with class deduction and inherited ctor.
+ * pt.c (do_class_deduction): Ignore inherited ctors.
+
+ PR c++/84665 - ICE with array of empty class.
+ * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
+
+ PR c++/85228 - ICE with lambda in enumerator in template.
+ * pt.c (bt_instantiate_type_proc): Don't assume
+ CLASSTYPE_TEMPLATE_INFO is non-null.
+
+2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Implement P0969
+ * decl.c (find_decomp_class_base): Check accessibility instead
+ of declared access, adjust diagnostic.
+
+2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Implement P0961
+ * decl.c (get_tuple_decomp_init): Check the templatedness
+ of a member get.
+
+2018-04-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/85200 - ICE with constexpr if in generic lambda.
+ * pt.c (extract_locals_r): Don't record the local specs of variables
+ declared within the pattern.
+
+2018-04-05 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/84979
+ * pt.c (check_auto_in_tmpl_args): New.
+ (tsubst_qualified_id): Use it to reject template args
+ referencing auto for non-type templates.
+ * parser.c (cp_parser_template_id): Likewise.
+ * cp-tree.h (check_auto_in_tmpl_args): Declare.
+ * typeck2.c (build_functional_cast): Report correct location
+ for invalid use of auto.
+
+2018-04-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/85215 - ICE with copy-init from conversion.
+ * call.c (merge_conversion_sequences): Fix type of direct binding
+ sequence.
+
+ PR c++/84938 - ICE with division by ~-1.
+ * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
+
+ PR c++/84936 - ICE with unexpanded pack in mem-initializer.
+ * parser.c (cp_parser_mem_initializer_list): Call
+ check_for_bare_parameter_packs.
+
+2018-04-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR inline-asm/85172
+ * constexpr.c (cxx_eval_builtin_function_call): For calls to
+ builtin_valid_in_constant_expr_p functions, don't call
+ cxx_eval_constant_expression if argument is not
+ potential_constant_expression.
+
+ PR c++/85146
+ * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
+ argument.
+ * semantics.c (calculate_bases): Add complain argument. Use
+ complete_type_or_maybe_complain instead of just complete_type and
+ return an empty vector if it fails. Move make_tree_vector () call
+ after early return. Formatting fixes.
+ (calculate_direct_bases): Likewise. Call release_tree_vector at the
+ end.
+ (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
+ * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
+ calculate_direct_bases callers, formatting fixes.
+
+2018-04-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/85006 - -fconcepts ICE with A<auto...> return type
+ * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
+
+ PR c++/85200 - ICE with constexpr if in generic lambda.
+ * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
+
+ PR c++/84221 - bogus -Wunused with attribute and template.
+ * decl2.c (is_late_template_attribute): Handle unused and used
+ normally on non-TYPE_DECL.
+
+ PR c++/85135 - ICE with omitted template arguments.
+ * decl.c (grokdeclarator): Catch deduced class type in trailing
+ return type.
+
+ PR c++/85133 - ICE with missing concept initializer.
+ * decl.c (cp_finish_decl): If a concept initializer is missing, use
+ true.
+
+ PR c++/85118 - wrong error with generic lambda and std::bind.
+ * call.c (add_template_conv_candidate): Disable if there are any
+ call operators.
+
+ PR c++/85141 - ICE with compound assignment and static member fn.
+ * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
+ compound assignment.
+
+ PR c++/85148 - ICE with 'this' in array NSDMI.
+ * tree.c (replace_placeholders_r): Use handled_component_p.
+
+2018-04-04 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ PR c++/65923
+ * decl.c (grokfndecl): Handle standard UDL diagnostics here..
+ * parser.c (cp_parser_unqualified_id): ..not here.
+
+2018-04-04 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/84943
+ * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
+ used.
+ * decl2.c (mark_used): Return without effects if tf_conv.
+
+2018-04-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/85092 - C++17 ICE with unused list constructor.
+ * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
+ from a TARGET_EXPR.
+
+ PR c++/85113 - ICE with constexpr and __builtin_constant_p.
+ * constexpr.c (cxx_eval_builtin_function_call): Only defer
+ __builtin_constant_p if ctx->quiet.
+
+2018-04-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84768
+ * pt.c (rewrite_template_parm): If the first argument is
+ error_mark_node return it immediately.
+ (build_deduction_guide): Check the return value of the
+ latter for error_mark_node.
+ (do_class_deduction): Check the return value of the latter.
+
+2018-04-03 Jason Merrill <jason@redhat.com>
+
+ * semantics.c (finish_if_stmt_cond): Use
+ instantiation_dependent_expression_p.
+
+ PR c++/85149 - generic lambda and constexpr if.
+ * pt.c (build_extra_args, add_extra_args): Split from
+ tsubst_pack_expansion.
+ (tsubst_expr) [IF_STMT]: Use them.
+ * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
+
+ * typeck.c (merge_types): Limit matching attribute shortcut to
+ the default case.
+
+2018-04-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85147
+ * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
+
+ PR c++/85140
+ * name-lookup.c (handle_namespace_attrs): Return early if attributes
+ is error_mark_node.
+
+ PR c++/85134
+ * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
+ fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
+ instead for static data members clear init and set DECL_EXTERNAL.
+
+2018-04-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/64095 - auto... parameter pack.
+ * parser.c (cp_parser_parameter_declaration): Handle turning autos
+ into packs here.
+ (cp_parser_parameter_declaration_list): Not here.
+
+2018-03-31 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/85027
+ * class.c (instantiate_type): Peel off SAVE_EXPR before
+ BASELINK.
+
+2018-03-30 Jason Merrill <jason@redhat.com>
+
+ * typeck2.c (process_init_constructor_record): Use
+ init_list_type_node for the CONSTRUCTOR around an anonymous union
+ designated initializer.
+
+2018-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84791
+ * semantics.c (finish_omp_reduction_clause): If
+ OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
+ even if processing_template_decl.
+
+2018-03-29 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/84269
+ * name-lookup.c (get_std_name_hint): Add names from <memory>,
+ <tuple>, and <utility>.
+
+2018-03-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/85093 - too many template args with pack expansion.
+ * pt.c (coerce_template_parms): Keep pack expansion args that will
+ need to be empty.
+
+2018-03-29 Jason Merrill <jason@redhat.com>
+
+ * pt.c (build_non_dependent_expr): Propagate expr location.
+
+2018-03-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/85060 - wrong-code with call to base member in template.
+ * search.c (any_dependent_bases_p): Check uses_template_parms
+ rather than processing_template_decl.
+
+2018-03-29 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/85110
+ * typeck.c (convert_for_assignment): When complaining due to
+ conversions for an argument, attempt to use the location of the
+ argument.
+
+2018-03-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85028
+ * pt.c (tsubst_default_argument): Early return if the type of the
+ parameter is erroneous.
+
+2018-03-28 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/84973
+ * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
+ templates.
+
+ PR c++/84968
+ * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
+
+2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85067
+ * method.c (defaulted_late_check): Partially revert r253321 changes,
+ do not early return upon error.
+
+2018-03-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85077
+ * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
+ type call fold to generate VECTOR_CSTs when possible.
+
+ PR c++/85076
+ * tree.c (cp_build_reference_type): If to_type is error_mark_node,
+ return it right away.
+
+2018-03-27 Volker Reichelt <v.reichelt@netcologne.de>
+
+ * search.c (check_final_overrider): Use inform instead of error
+ for the diagnostics of the overridden functions. Tweak wording.
+
+2018-03-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85068
+ * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
+ is NULL. Assert if thunk_binfo is NULL then errorcount is non-zero.
+
+2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/84632
+ * init.c (build_aggr_init): When initializing from array,
+ reject anything but CONSTRUCTORs and TARGET_EXPRs.
+ (build_vec_init): Handle separately ARRAY_TYPEs.
+
+2018-03-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/85062 - ICE with alignas in wrong place.
+ * decl.c (grokdeclarator): Ignore attributes on type-specifiers
+ here.
+
+ PR c++/85049 - ICE with __integer_pack.
+ * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
+ * cp-tree.h (TEMPLATE_PARM_P): New.
+
+2018-03-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/78489 - wrong SFINAE behavior.
+
+ PR c++/84489
+ * pt.c (type_unification_real): Don't defer substitution failure.
+
+2018-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/85015
+ * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
+ result.
+
+ PR c++/84942
+ * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
+ cp_build_unary_op call with gcc_unreachable ().
+
+2018-03-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85045
+ * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
+ Handle EXACT_DIV_EXPR and RDIV_EXPR. Tweak condition.
+ (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
+
+2018-03-23 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Implement P0962
+ * parser.c (cp_parser_perform_range_for_lookup): Change
+ the condition for deciding whether to use members.
+
+2018-03-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/85033
+ * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
+
+2018-03-23 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/71251
+ * parser.c (cp_parser_alias_declaration): Call
+ parser_check_template_parameters.
+
+ PR c++/84789
+ * pt.c (resolve_typename_type): Drop assert that stopped
+ simplification to template-independent types. Add assert to
+ verify the initial scope is template dependent.
+ * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
+ Reparse the id expression as a type-name, not a declarator.
+
+ PR c++/84729
+ * init.c (build_vec_init): Error at parenthesized array init.
+
+ PR c++/84610
+ PR c++/84642
+ PR c++/84942
+ * cp-tree.h (temp_override): New template class, generalizing
+ a cleanup that was only used...
+ * parser.c (cp_parser_parameter_declaration_clause):
+ ... here for auto_is_implicit_function_template_parm_p.
+ (cp_parser_gnu_attributes_opt): Use it here as well.
+ (cp_parser_std_attribute): Likewise.
+
+2018-03-22 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84854
+ * semantics.c (finish_if_stmt_cond): Check if the type of the condition
+ is boolean.
+
+2018-03-21 Jason Merrill <jason@redhat.com>
+
+ PR c++/81311 - wrong C++17 overload resolution.
+ * call.c (build_user_type_conversion_1): Remove C++17 code.
+ (conv_binds_ref_to_prvalue): New.
+ (build_over_call): Handle C++17 copy elision.
+ (build_special_member_call): Only do C++17 copy elision here if the
+ argument is already the right type.
+
+2018-03-21 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/71965
+ * init.c (build_vec_init): Silence error, former sorry,
+ without tf_error.
+
+ PR c++/84610
+ PR c++/84642
+ * parser.c (abort_fully_implicit_template_p): New.
+ (cp_parser_skip_to_end_of_statement): Use it.
+ (cp_parser_skip_to_end_of_block_or_statement): Likewise.
+ (finish_fully_implicit_template_p): Clear
+ implicit_template_parms and implicit_template_scope.
+
+2018-03-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84972
+ * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
+ error_mark_node when check_array_designated_initializer fails.
+
+2018-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84961
+ * cp-tree.h (genericize_compound_lvalue): Declare.
+ * typeck.c (genericize_compound_lvalue): New function.
+ (unary_complex_lvalue, cp_build_modify_expr): Use it.
+ * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
+ and PREDECREMENT_EXPR in output and "m" constrained input operands with
+ COMPOUND_EXPR. Call cxx_mark_addressable on the rightmost
+ COMPOUND_EXPR operand.
+
+2018-03-21 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/85008
+ * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
+ * decl2.c (vague_linkage_p): Likewise.
+
+2018-03-21 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/84994
+ * constexpr.c (constexpr_fn_retval): Make non-"static".
+ * cp-tree.h (constexpr_fn_retval): New decl.
+ * search.c (direct_accessor_p): Update leading comment.
+ (reference_accessor_p): Likewise.
+ (field_accessor_p): Replace check that function body is a
+ RETURN_EXPR with a call to constexpr_fn_retval. Fix
+ indentation of "field_type" decl.
+
+2018-03-21 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84804
+ * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
+ complete classes.
+
+2018-03-21 Martin Sebor <msebor@redhat.com>
+
+ PR c++/84850
+ * call.c (first_non_public_field): New template and function.
+ (first_non_trivial_field): New function.
+ (maybe_warn_class_memaccess): Call them.
+
+2018-03-21 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/84892
+ * search.c (field_accessor_p): Use class_of_this_parm rather than
+ type_of_this_parm, to check that "this" is a "const T *", rather
+ than a "T *const".
+
+2018-03-21 Nathan Sidwell <nathan@acm.org>
+
+ * class.c (finish_struct_anon_r): Refactor, deprecate anything
+ other than public non-static data members.
+ * parser.c (cp_parser_init_declarator): Deprecate attributes after
+ parenthesized initializer.
+
+ PR c++/84836
+ * name-lookup.c (update_binding): Correct logic for local binding
+ update.
+
+2018-03-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/71638, ICE with NSDMI and reference.
+ * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
+ even when we replace an element.
+
+2018-03-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84978, ICE with NRVO.
+ * constexpr.c (cxx_eval_constant_expression): Handle the case when
+ a RESULT_DECL isn't in the hash map.
+
+2018-03-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/84978, ICE with NRVO.
+ * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
+ (cp_get_callee_fndecl_nofold): New.
+ * cp-gimplify.c (cp_genericize_r): Use it instead.
+ * call.c (check_self_delegation): Likewise.
+
+2018-03-20 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84962
+ * name-lookup.c (pushdecl_class_level): Push anon-struct's
+ member_vec, if there is one.
+
+ PR c++/84970
+ * cp-tree.h (lookup_list_keep): Declare.
+ * tree.c (lookup_list_keep): New, broken out of ...
+ (build_min): ... here. Call it.
+ * decl.c (cp_finish_decl): Call lookup_list_keep.
+
+2018-03-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/84937 - ICE with class deduction and auto.
+ * pt.c (rewrite_template_parm): Fix auto handling.
+
+2018-03-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84925
+ * pt.c (enclosing_instantiation_of): Check if fn is null.
+
+ PR c++/84927
+ * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
+ as we evaluate the elements.
+ (cxx_eval_constant_expression): Verify constructor's flags
+ unconditionally.
+
+2018-03-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/71834 - template-id with too few arguments.
+ * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
+
+2018-03-19 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84835
+ * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
+ * pt.c (build_template_decl): Propagate language linkage.
+
+ PR c++/84812
+ * name-lookup.c (set_local_extern_decl_linkage): Defend against
+ ambiguous lookups.
+
+2018-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/84910
+ * parser.c (cp_parser_lambda_introducer): Remove trailing space from
+ diagnostics.
+ * method.c (synthesize_method): Likewise.
+ * pt.c (convert_nontype_argument): Likewise.
+
+2018-03-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/84720 - ICE with rvalue ref non-type argument.
+ * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
+ (convert_nontype_argument): Revert earlier change.
+
+ PR c++/80227 - SFINAE and negative array size.
+ * decl.c (compute_array_index_type): Use
+ build_converted_constant_expr and valid_constant_size_p.
+
+ PR c++/84906 - silent wrong code with ambiguous conversion.
+ * call.c (build_user_type_conversion_1): Set need_temporary_p on
+ ambiguous conversion.
+ (convert_like_real): Check it.
+
+ PR c++/83937 - wrong C++17 handling of init-list ctor argument.
+ * call.c (build_special_member_call): Don't convert an init-list
+ argument directly to the class type.
+
+2018-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/79937
+ PR c++/82410
+ * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
+ (find_placeholder): Declare.
+ * tree.c (struct replace_placeholders_t): Add exp member.
+ (replace_placeholders_r): Don't walk into ctors with
+ CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
+ d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
+ (replace_placeholders): Initialize data.exp.
+ (find_placeholders_r, find_placeholders): New functions.
+ * typeck2.c (process_init_constructor_record,
+ process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
+ if adding NSDMI on which find_placeholder returns true.
+ * call.c (build_over_call): Don't call replace_placeholders here.
+ * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
+ TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
+ TARGET_EXPR_INITIAL.
+ (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
+ ctor.
+
+2018-03-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/83911 - ICE with multiversioned constructor.
+ * cp-gimplify.c (cp_genericize_r): Replace versioned function with
+ dispatchere here.
+ * call.c (build_over_call): Not here.
+
+2018-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84874
+ * decl.c (reshape_init_class): Don't assert d->cur->index == field
+ if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
+
+2018-03-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84222
+ * cp-tree.h (cp_warn_deprecated_use): Declare.
+ * tree.c (cp_warn_deprecated_use): New function.
+ * typeck2.c (build_functional_cast): Use it.
+ * decl.c (grokparms): Likewise.
+ (grokdeclarator): Likewise. Temporarily push nested class scope
+ around grokparms call for out of class member definitions.
+
+2018-03-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/84820 - no error for invalid qualified-id.
+ * parser.c (cp_parser_make_indirect_declarator): Don't wrap
+ cp_error_declarator.
+
+ PR c++/84801 - ICE with unexpanded pack in lambda.
+ * pt.c (check_for_bare_parameter_packs): Don't return early for a
+ lambda in non-template context.
+
+ PR c++/81236 - auto variable and auto function
+ * pt.c (tsubst_baselink): Update the type of the BASELINK after
+ mark_used.
+
+2018-03-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/83916 - ICE with template template parameters.
+ * pt.c (convert_template_argument): Don't substitute into type of
+ non-type parameter if we don't have enough arg levels.
+ (unify): Likewise.
+
+2018-03-14 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84596
+ * semantics.c (finish_static_assert): Check
+ instantiation_dependent_expression_p instead of
+ {type,value}_dependent_expression_p.
+
+2018-03-13 Paolo Carlini <paolo.carlini@oracle.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/82336 - link error with list-init default argument.
+ * decl.c (check_default_argument): Unshare an initializer list.
+
+2018-03-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84843
+ * decl.c (duplicate_decls): For redefinition of built-in, use error
+ and return error_mark_node. For redeclaration, return error_mark_node
+ rather than olddecl if !flag_permissive.
+
+2018-03-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/82565 - ICE with concepts and generic lambda.
+ * pt.c (instantiate_decl): Clear fn_context for lambdas.
+
+2018-03-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/84720 - ICE with rvalue ref non-type argument.
+ * pt.c (convert_nontype_argument): Handle rvalue references.
+
+ PR c++/84839 - ICE with decltype of parameter pack.
+ * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
+ instantiating dummy parms.
+
+ * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
+ parameter even without -Wpedantic.
+
+ PR c++/84798 - ICE with auto in abstract function declarator.
+ * parser.c (cp_parser_parameter_declaration_clause): Check
+ parser->default_arg_ok_p.
+
+2018-03-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84808
+ * constexpr.c (find_array_ctor_elt): Don't use elt reference after
+ first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to
+ sizetype. Formatting fixes.
+
+2018-03-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/84355 - ICE with deduction for member class template.
+ * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
+ CLASS_PLACEHOLDER_TEMPLATE.
+
+ PR c++/84802 - ICE capturing uninstantiated class.
+ * lambda.c (build_capture_proxy): Call complete_type.
+
+2018-03-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/84770 - ICE with typedef and parameter pack.
+ * pt.c (verify_unstripped_args_1): Split out from
+ verify_unstripped_args.
+
+ PR c++/84785 - ICE with alias template and default targs.
+ * pt.c (type_unification_real): Set processing_template_decl if
+ saw_undeduced == 1.
+
+ PR c++/84752 - ICE with capture of constexpr array.
+ * call.c (standard_conversion): Set rvaluedness_matches_p on the
+ identity conversion under ck_lvalue.
+
+2018-03-09 Jason Merrill <jason@redhat.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/71169
+ PR c++/71832
+ * pt.c (any_erroneous_template_args_p): New.
+ * cp-tree.h (any_erroneous_template_args_p): Declare it.
+ * parser.c (cp_parser_class_specifier_1): Use it.
+
+2018-03-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/84726 - unnecessary capture of constant vars.
+ * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
+ (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
+ * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
+ * lambda.c (is_constant_capture_proxy)
+ (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
+ (prune_lambda_captures): New.
+ (finish_lambda_function): Call prune_lambda_captures.
+
+2018-03-09 Jason Merrill <jason@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84076
+ * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
+ build ADDR_EXPR with REFERENCE_TYPE.
+ (build_over_call): For purposes of check_function_arguments, if
+ argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
+ its operand rather than the argument itself.
+
+2018-03-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84724
+ * decl.c (duplicate_decls): Don't override __* prefixed builtins
+ except for __[^b]*_chk, instead issue permerror and for -fpermissive
+ also a note and return olddecl.
+
+2018-03-09 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84733
+ * name-lookup.c (do_pushdecl_with_scope): Only clear
+ current_function_decl when pushing a non-class (i.e. namespace)
+ scope.
+
+2018-03-08 Jason Merrill <jason@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/80598
+ * call.c (build_over_call): In templates set TREE_USED (first_fn) when
+ not calling mark_used for the benefit of -Wunused-function warning.
+
+2018-03-06 Jason Merrill <jason@redhat.com>
+
+ * lambda.c (is_capture_proxy_with_ref): Remove.
+ * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
+
+2018-03-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84684
+ * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
+ arguments.
+
+2018-03-06 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/84231
+ * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
+ only while processing template decls.
+ * typeck.c (build_x_conditional_expr): Move wrapping of
+ reference type around type...
+ * call.c (build_conditional_expr_1): ... here. Rename
+ is_lvalue to is_glvalue.
+ * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
+ INDIRECT_REF of COND_EXPR too.
+
+ PR c++/84593
+ * init.c (build_zero_init_1): Zero-initialize references.
+
+ PR c++/84492
+ * semantics.c (finish_stmt_expr_expr): Reject unresolved
+ overloads used as stmt expr values.
+
+2018-03-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/84708 - ICE with lambda in local class NSDMI.
+ * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
+ context.
+
+2018-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84684
+ * constexpr.c (constexpr_call_hasher::equal): Return false if
+ lhs->hash != rhs->hash. Change return 1 to return true and
+ return 0 to return false.
+
+2018-03-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84702
+ * pt.c (process_template_arg): Mark lookup_keep on a default arg.
+
+2018-03-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84707
+ * decl.c (duplicate_decls): Check DECL_NAME before accessing
+ UDLIT_OPER_P.
+
+2018-03-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84694
+ * friend.c (do_friend): Restore check for identifier_p inside
+ TEMPLATE_ID_EXPR.
+
+2018-03-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84618
+ * parser.c (cp_parser_lambda_introducer): Reject any capture not
+ involving a VAR_DECL or a PARM_DECL.
+
+2018-03-05 Pádraig Brady <P@draigBrady.com>
+ Jason Merrill <jason@redhat.com>
+ Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84497
+ * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
+
+2018-03-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/84686 - missing volatile loads.
+ * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
+
+2018-03-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/71464
+ * optimize.c (maybe_thunk_body): Bail out immediately if either
+ fns[0] or fns[1] is null.
+
+2018-03-02 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84578
+ * constexpr.c (get_array_or_vector_nelts): New.
+ (cxx_eval_array_reference): Use it.
+ (cxx_eval_vec_init_1): Likewise.
+ (cxx_eval_store_expression): Likewise.
+
+2018-03-02 Jason Merrill <jason@redhat.com>
+
+ * semantics.c (force_paren_expr): Remove redundant test.
+
+2018-03-02 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84663
+ * decl.c (cp_complete_array_type): Check error_mark_node.
+
+ PR c++/84664
+ * typeck.c (cp_perform_integral_promotions): Check the result of
+ mark_rvalue_use.
+
+2018-03-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84662
+ * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
+ RETURN instead of return.
+ <case POINTER_PLUS_EXPR>: Likewise.
+ <case CONVERT_EXPR>: If op0 is error_mark_node, just return
+ it instead of wrapping it into CONVERT_EXPR.
+
+2018-03-02 Jason Merrill <jason@redhat.com>
+
+ Fix MIPS16 ICE.
+ * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
+
+2018-03-02 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84590
+ * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
+ wrapped in VIEW_CONVERT_EXPR.
+
+2018-03-01 Martin Sebor <msebor@redhat.com>
+
+ PR c++/84294
+ * decl.c (check_redeclaration_no_default_args): Merge attributes
+ specified on redeclarations of the same function template.
+ Remove dead code.
+
+2018-03-01 Marek Polacek <polacek@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/84582
+ * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
+ a template.
+ (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
+ * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
+ of instantiate_non_dependent_expr.
+ * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
+
+2018-03-01 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84434
+ * name-lookup.c (member_vec_dedup): Remove manually peeled
+ iteration. Ignore dependent ctor inheritance.
+
+2018-03-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/71569 - decltype of template.
+ * parser.c (cp_parser_decltype_expr): Handle missing template args.
+
+2018-03-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84596
+ * constexpr.c (require_rvalue_constant_expression): New function.
+ * cp-tree.h: Declare it.
+ * semantics.c (finish_static_assert): Use it instead of
+ require_potential_rvalue_constant_expression.
+
+2018-03-01 Jason Merrill <jason@redhat.com>
+ Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/71569 - ICE with redundant args on member variable template.
+ * decl.c (start_decl): Handle partial specialization of member
+ variable template.
+ * pt.c (determine_specialization): Allow partial specialization
+ of member variable template without specializing enclosing class.
+ (process_partial_specialization): Improve error message.
+
+2018-02-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/71784 - ICE with ref-qualifier and explicit specialization.
+ * pt.c (determine_specialization): Check ref-qualifier.
+
+2018-02-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84609
+ * parser.c (cp_parser_attributes_opt): Formatting fix.
+ (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
+ cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
+ New functions.
+ (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
+ instead of tentative parse to peek over optional attribute tokens
+ to check for CPP_COLON after them.
+
+ PR c++/83871
+ PR c++/83503
+ * pt.c (INCLUDE_STRING): Remove define.
+ (warn_spec_missing_attributes): Use pretty_printer instead of
+ std::string. Fix up inform call so that the list of attributes
+ is in %s argument.
+
+2018-02-28 Martin Sebor <msebor@redhat.com>
+
+ PR testsuite/84617
+ * decl.c (duplicate_decls): Fully merge attributes const, pure,
+ and malloc.
+
+2018-02-28 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84602
+ * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
+ * name-lookup.c (fields_linear_search): Look in an anon-aggr
+ regardless of want_type.
+ (search_anon_aggr): Just use get_class_binding_direct.
+
+2018-02-28 Jakub Jelinek <jakub@redhat.com>
+
+ * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
+ inform_n.
+
+2018-02-27 Martin Sebor <msebor@redhat.com>
+
+ * pt.c: Avoid including <string> directly.
+
+2018-02-27 Martin Sebor <msebor@redhat.com>
+
+ PR c++/83871
+ PR c++/83503
+ * cp-tree.h (warn_spec_missing_attributes): New function.
+ ((check_explicit_specialization): Add an argument. Call the above
+ function.
+ * decl.c (duplicate_decls): Avoid applying primary function template's
+ attributes to its explicit specializations.
+ cp/pt.c (warn_spec_missing_attributes): Define.
+
+2018-02-27 Håkon Sandsmark <hsandsmark@gmail.com>
+
+ PR c++/71546 - lambda init-capture with qualified-id.
+ * parser.c (cp_parser_lambda_introducer): Clear scope after
+ each lambda capture.
+
+2018-02-27 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84426
+ * name-lookup.h (get_member_slot): Rename ...
+ (find_member_slot): ... here.
+ (add_member_slot): New.
+ * name-lookup.c (member_vec_linear_search): No need to check for
+ NULL slot.
+ (get_member_slot): Rename ...
+ (find_member_slot): ... here. Don't add slot for incomplete class.
+ (add_member_slot): New.
+ * class.c (add_method): Adjust get_member_slot rename. Bail out
+ if push_class_level_binding fails. Create slot and grok
+ properties once we're committed to insertion.
+
+2018-02-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/84489 - dependent default template argument
+ * pt.c (type_unification_real): Handle early substitution failure.
+
+2018-02-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/84560 - ICE capturing multi-dimensional VLA.
+ * tree.c (array_of_runtime_bound_p): False if the element is
+ variably-modified.
+
+ PR c++/84441 - ICE with base initialized from ?:
+ * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
+
+ PR c++/84520 - ICE with generic lambda in NSDMI.
+ * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
+ 'this' in a generic lambda instantiation.
+
+ PR c++/84559 - ICE with constexpr VLA.
+ * constexpr.c (ensure_literal_type_for_constexpr_object): Check
+ for constexpr variable with VLA type.
+
+2018-02-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84558
+ * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
+ a valid constant initializer. Formatting fixes.
+
+2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84540
+ * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
+ returning NULL_TREE.
+ (apply_late_template_attributes): Likewise.
+
+2018-02-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84557
+ * parser.c (cp_parser_omp_var_list_no_open): Only call
+ cp_parser_lookup_name_simple on names satisfying identifier_p.
+ (cp_parser_oacc_routine): Likewise.
+
+2018-02-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/84551 - ICE with concepts and -g.
+ * parser.c (add_debug_begin_stmt): Do nothing in a concept.
+
+2018-02-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84325
+ * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
+ non-types.
+
+2018-02-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/84447 - ICE with deleted inherited ctor with default arg.
+ * call.c (build_over_call): Handle deleted functions in one place.
+
+2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84533
+ * decl.c (redeclaration_error_message): Don't try to use
+ DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
+
+2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * lambda.c (build_capture_proxy): Define static.
+ * cp-tree.h (build_capture_proxy): Remove.
+
+2018-02-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84537
+ * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
+ if name is error node.
+
+2018-02-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/84015 - ICE with class deduction and auto template parm.
+ * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
+
+2018-02-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/83692
+ * constexpr.c (maybe_constant_init_1): New function.
+ (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
+ (cxx_constant_init): New function.
+ * cp-tree.h (cxx_constant_init): Declare.
+ * typeck2.c (store_init_value): Call cxx_constant_init instead of
+ cxx_constant_value. Move the maybe_constant_init call under an 'else'.
+
+2018-02-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/70468 - ICE with constructor delegation via typedef.
+ * pt.c (tsubst_initializer_list): Check for other mem-initializers
+ with constructor delegation.
+
+2018-02-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/84424 - ICE with constexpr and __builtin_shuffle.
+ * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
+ VECTOR_TYPE.
+
+2018-02-22 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84493
+ * parser.c (cp_parser_braced_list): Use require_open instead of
+ consume_open.
+
+2018-02-21 Jason Merrill <jason@redhat.com>
+
+ PR c++/84454 - ICE with pack expansion in signature.
+ * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
+
+2018-02-20 Siddhesh Poyarekar <siddhesh@sourceware.org>
+
+ * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
+ IF_STMT.
+
+2018-02-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84446
+ * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
+ on error_mark_node.
+
+2018-02-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84445
+ * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
+ TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
+
+ PR c++/84449
+ * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
+ returns error_mark_node, return it immediately.
+ (break_out_target_exprs): If cp_walk_tree with bot_manip returns
+ error_mark_node, return error_mark_node.
+
+ PR c++/84455
+ * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
+ function_depth to avoid GC during finish_lambda_function.
+
+2018-02-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/84429 - ICE capturing VLA.
+ * lambda.c (build_capture_proxy): Handle reference refs.
+
+2018-02-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84448
+ * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
+ either operand is error_mark_node, set current.lhs to that instead of
+ creating a binary op with error_mark_node operands.
+
+ PR c++/84430
+ * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
+
+2018-02-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84348
+ * decl.c (grokdeclarator): Early return error_mark_node upon
+ ill-formed friend declaration.
+
+2018-02-16 Marek Polacek <polacek@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84192
+ * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
+ set *jump_target to anything if jump_target is NULL.
+
+2018-02-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/84151 - unnecessary volatile load with static member.
+ * call.c (build_new_method_call_1): Avoid loading from a volatile
+ lvalue used as the object argument for a static member function.
+
+ PR c++/81853 - using-directive and constexpr.
+ * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
+
+ PR c++/84420 - ICE with structured binding in lambda.
+ * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
+
+ PR c++/83835 - C++17 error with constructor ctors.
+ * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
+
+ PR c++/82664 - ICE with reference to function template parm.
+ * pt.c (convert_nontype_argument_function): Avoid obfuscationg
+ NOP_EXPRs.
+
+ PR c++/82764 - C++17 ICE with empty base
+ * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
+
+2018-02-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/84421 - type-dependent if constexpr
+ * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
+
+2018-02-16 Nathan Sidwell <nathan@acm.org>
+
+ Deprecate -ffriend-injection.
+ * decl.c (cxx_init_decl_processing): Emit warning on option.
+ * name-lookup.c (do_pushdecl): Emit warning if we push a visible
+ friend.
+
+2018-02-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/82468
+ * decl.c (check_special_function_return_type): Reject template
+ template parameter in deduction guide.
+
+2018-02-16 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84375
+ * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
+
+2018-02-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
+ * call.c (convert_like_real): Don't use the copy-list-initialization
+ shortcut for ck_base.
+
+ PR c++/84045 - ICE with typedef and noexcept.
+ * except.c (build_noexcept_spec): Use strip_typedefs_expr.
+
+ PR c++/84376 - ICE with omitted template arguments.
+ * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
+
+ PR c++/84368 - wrong error with local variable in variadic lambda.
+ * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
+ local_specializations.
+
+2018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84330
+ * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
+ as first argument.
+
+2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84350
+ * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
+ init, early return.
+
+2018-02-14 Nathan Sidwell <nathan@acm.org>
+
+ * decl2.c (mark_vtable_entries): Set input_location to decl's.
+ (c_parse_final_cleanups): Restore input_location after emitting
+ vtables.
+
+2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
+ (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
+ auto_deduction_context, tree, int): Add defaults.
+ * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
+ (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
+ tsubst_flags_t argument.
+ * init.c (build_new): Likewise.
+
+2018-02-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84364
+ * typeck.c (check_return_expr): Don't emit -Weffc++ warning
+ about return other than *this in assignment operators if
+ retval is type dependent expression.
+
+2018-02-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84333
+ * call.c (build_conditional_expr_1): Use cp_save_expr instead of
+ save_expr for the G++ extension.
+
+2018-02-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/84080 - ICE with return type deduction and specialization.
+ * pt.c (determine_specialization): Check uses_template_parms.
+
+ Fix more variadic capture issues.
+ * pt.c (find_parameter_packs_r): Also look at explicit captures.
+ (check_for_bare_parameter_packs): Check current_class_type for
+ lambda context.
+ (extract_locals_r): Handle seeing a full instantiation of a pack.
+ (tsubst_pack_expansion): Likewise. Force lambda capture.
+ * parser.c (cp_parser_lambda_introducer): Don't
+ check_for_bare_parameter_packs.
+
+ PR c++/84338 - wrong variadic sizeof.
+ * pt.c (argument_pack_select_arg): Like the macro, but look through
+ a pack expansion.
+ (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
+ (extract_fnparm_pack): Do make_pack_expansion.
+ (extract_locals_r): Do strip a pack expansion.
+ * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
+
+2018-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84341
+ * parser.c (cp_parser_binary_expression): Use build_min instead of
+ build2_loc to build the no_toplevel_fold_p toplevel binary expression.
+
+2018-02-12 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/84263
+ * parser.c (cp_parser_decltype): Push and pop
+ deferring_access_checks. Reorganize to avoid goto.
+
+2018-02-12 Richard Biener <rguenther@suse.de>
+
+ PR c++/84281
+ * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
+ uniform constructors and delay allocating them fully.
+
+2018-02-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/84036 - ICE with variadic capture.
+ Handle variadic capture proxies more like non-variadic.
+ * lambda.c (build_capture_proxy): Remove workaround.
+ * pt.c (find_parameter_packs_r): The proxy is a pack.
+ (instantiate_class_template_1): Remove dead lambda code.
+ (extract_fnparm_pack): Don't make_pack_expansion.
+ (extract_locals_r): Don't strip a pack expansion.
+ (tsubst_pack_expansion): Handle proxy packs. Use
+ PACK_EXPANSION_EXTRA_ARGS less.
+ (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
+ (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
+ [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
+ (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
+ (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
+
+2018-02-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/83987
+ * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
+
+2018-02-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/81917 - ICE with void_t and partial specialization.
+ * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
+ calling most_specialized_partial_spec.
+
+2018-02-09 Nathan Sidwell <nathan@acm.org>
+
+ PR c/84293
+ * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
+ Pass expr location to strict_aliasing_warning.
+
+2018-02-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/84296 - ICE with qualified-id in template.
+ PR c++/83714
+ * pt.c (unknown_base_ref_p): New.
+ (instantiation_dependent_scope_ref_p): Use it instead of
+ any_dependent_bases_p.
+
+2018-02-09 Marek Polacek <polacek@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83659
+ * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
+ fold_indirect_ref_1, including poly_*int64. Verify first that
+ tree_fits_poly_int64_p (op01). Formatting fixes.
+
+2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
+ * lambda.c (build_capture_proxy): Likewise.
+ * search.c (field_access_p): Likewise.
+ * semantics.c (omp_clause_decl, omp_privatize_field,
+ finish_omp_clauses): Likewise.
+
+2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/83806
+ * typeck.c (decay_conversion): Use mark_rvalue_use for the special
+ case of nullptr too.
+
+2018-02-08 Nathan Sidwell <nathan@acm.org>
+
+ * class.c (finish_struct): Fix std:initializer_list diagnostic
+ formatting.
+
+2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/83204
+ * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
+
+2018-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84082
+ * parser.c (cp_parser_dot_deref_incomplete): New function.
+ (cp_parser_postfix_dot_deref_expression): Use it.
+
+2018-02-07 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/81610
+ PR c++/80567
+ * name-lookup.c (suggest_rid_p): New function.
+ (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
+ suggest_rid_p.
+
+2018-02-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/84182 - ICE with captured lambda
+ PR c++/84181
+ * pt.c (extract_locals_r, extract_local_specs): New.
+ (tsubst_pack_expansion): Use them.
+
+2018-02-07 Martin Liska <mliska@suse.cz>
+
+ PR c++/84059.
+ * class.c (add_method): Append argument value.
+ * cp-tree.h (maybe_version_functions): Add new argument.
+ * decl.c (decls_match): Call it if a declaration does not
+ have DECL_FUNCTION_VERSIONED.
+ (maybe_version_functions): record argument is added.
+
+2018-02-05 Marek Polacek <polacek@redhat.com>
+
+ * class.c: Remove unused global variables.
+ (build_primary_vtable): Don't gather statistics.
+ (print_class_statistics): Remove.
+ * cp-tree.h (print_class_statistics): Remove.
+ * tree.c (cxx_print_statistics): Don't call print_class_statistics.
+
+2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
+ * constexpr.c (cx_check_missing_mem_inits): Likewise.
+ * decl.c (next_initializable_field, find_decomp_class_base,
+ cp_finish_decomp): Likewise.
+ * typeck2.c (process_init_constructor_record): Likewise.
+
+2018-02-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/84181 - ICE with lambda parm in template argument.
+ * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
+
+2018-02-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/84160 - ICE with nested variadic capture.
+ * lambda.c (is_capture_proxy_with_ref): New.
+ (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
+ COMPONENT_REF.
+ * expr.c (mark_use): Use is_capture_proxy_with_ref.
+ * constexpr.c (potential_constant_expression_1): Likewise.
+ * semantics.c (process_outer_var_ref): Likewise.
+
+2018-02-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84125
+ * typeck.c (build_address): Relax the assert when
+ processing_template_decl.
+
+2018-02-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/84126 - ICE with variadic generic lambda
+ PR c++/84036
+ PR c++/82249
+ * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
+ PACK_EXPANSION_EXTRA_ARGS.
+
+2018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/83796
+ * call.c (convert_like_real): If w're initializing from {} explicitly
+ call abstract_virtuals_error_sfinae.
+
+2018-01-31 Jason Merrill <jason@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83993
+ * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
+ around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
+ on ADDR_EXPR.
+
+2018-01-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83993
+ * constexpr.c (diag_array_subscript): Emit different diagnostics
+ if TYPE_DOMAIN (arraytype) is NULL.
+ (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
+ with NULL TYPE_DOMAIN use size_zero_node as nelts.
+
+2018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84092
+ * semantics.c (finish_qualified_id_expr): When handling an
+ UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
+
+2018-01-31 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84138
+ * cp-gimplify.c (cp_fold): Check if X is an error node before
+ calling useless_type_conversion_p.
+
+2018-01-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/84091 - ICE with local class in lambda in template.
+ * decl2.c (determine_visibility): Look for outer containing template
+ instantiation.
+
+ PR c++/84098 - ICE with lambda in template NSDMI.
+ * pt.c (instantiate_class_template_1): Ignore more lambdas.
+
+2018-01-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/68810 - wrong location for reinterpret_cast error.
+ * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
+ !dofold.
+
+2018-01-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/83996
+ * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
+ => fooarray[1] in offset_int.
+
+2018-01-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/83942 - wrong unused warning with static_cast.
+ * cvt.c (ocp_convert): Call mark_rvalue_use.
+
+2018-01-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/83956 - wrong dtor error with anonymous union
+ * method.c (walk_field_subobs): Variant members only affect
+ deletedness.
+ (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
+
+ PR c++/84036 - ICE with variadic capture.
+ PR c++/82249
+ * pt.c (tsubst_pack_expansion): When optimizing a simple
+ substitution, pull a single pack expansion out of its pack.
+
+ PR c++/82514 - ICE with local class in generic lambda.
+ * pt.c (regenerated_lambda_fn_p): Remove.
+ (enclosing_instantiation_of): Don't use it.
+ (tsubst_function_decl): Call enclosing_instantiation_of.
+
+ * pt.c (lookup_template_class_1): Add sanity check.
+ * name-lookup.c (do_pushtag): Don't add closures to local_classes.
+
+2018-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84031
+ * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore
+ recursive calls that return ret.
+ (cp_finish_decomp): Ignore unnamed bitfields.
+
+2018-01-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/82249 - wrong mismatched pack length error.
+ * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
+ unsubstituted function parameter pack.
+
+2018-01-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/83921
+ * decl.c (check_for_uninitialized_const_var): Not static; add
+ bool and tsubst_flags_t parameters; adjust to be used both in
+ constexpr context and not.
+ * constexpr.c (potential_constant_expression_1): Use the above.
+ * cp-tree.h (check_for_uninitialized_const_var): Declare.
+
+2018-01-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/83947 - ICE with auto declarations.
+ * pt.c (do_auto_deduction): Don't deduce from an auto decl.
+ * decl.c (undeduced_auto_decl): Limit to vars and fns.
+
+2018-01-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/83974
+ * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
+ for pointer to member function types.
+
+2018-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/83987
+ * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
+ DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
+
+2018-01-23 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/83988
+ * pt.c (tsubst_baselink): Remove optype assert.
+ * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
+
+2018-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83958
+ * decl.c (cp_finish_decomp): Diagnose if reference structure binding
+ refers to incomplete type.
+
+2018-01-23 Nathan Sidwell <nathan@acm.org>
+
+ Deprecate ARM-era for scope handling
+ * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
+ (cxx_init_decl_processing): Deprecate flag_new_for_scope being
+ cleared.
+ * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
+ cleanup handling.
+ * semantics.c (begin_for_scope): Flag_new_for_scope is
+ boolean-like.
+ (finish_for_stmt, begin_range_for_stmt): Likewise.
+
+2018-01-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/83720
+ * decl2.c (determine_visibility): Fix template_decl handling
+ instead of blocking it.
+
+ PR c++/83720 - ICE with lambda and LTO.
+ * decl2.c (determine_visibility): Clear template_decl for
+ function-scope decls. Propagate anonymous linkage from containing
+ function.
+
+2018-01-22 Marek Polacek <polacek@redhat.com>
+
+ PR c++/81933
+ * typeck2.c (split_nonconstant_init_1): Return false if we didn't
+ split out anything.
+
+2018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ PR c++/83895
+ * decl.c (grokdeclarator): Don't diagnose extra parens
+ on typedefs.
+
+2018-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/81167
+ * call.c (joust): Use TREE_TYPE (source) if source is
+ a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
+
+ PR c++/83919
+ * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
+ for direct enum init.
+ * decl.c (reshape_init): Likewise.
+
+2018-01-19 Marek Polacek <polacek@redhat.com>
+
+ * constexpr.c (fold_simple): Simplify.
+
+2018-01-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/83714
+ * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
+ * pt.c (instantiation_dependent_scope_ref_p): True if
+ any_dependent_bases_p.
+
+2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
+ vs DECL_NONTRIVIALLY_INITIALIZED_P).
+
+2018-01-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/82461 - constexpr list-initialized member
+ * constexpr.c (potential_constant_expression_1): Check
+ TARGET_EXPR_DIRECT_INIT_P.
+
+2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/81013
+ * decl.c (xref_basetypes): Early return upon error about derived
+ union.
+
+2018-01-18 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/83160
+ * cp-tree.h (mark_use): Declare.
+ * expr.c (mark_use): Make extern.
+ * call.c (direct_reference_binding): Set inner conv's
+ rvaluedness_matches_p, if it is an identity.
+ (convert_like_real): Mark lvalue or rvalue use for identity as
+ rvaledness_matches_p demands.
+
+2018-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83824
+ * parser.c (attr_chainon): New function.
+ (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
+ cp_parser_namespace_definition, cp_parser_init_declarator,
+ cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
+ cp_parser_gnu_attributes_opt): Use it.
+ (cp_parser_member_declaration, cp_parser_objc_class_ivars,
+ cp_parser_objc_struct_declaration): Likewise. Don't reset
+ prefix_attributes if attributes is error_mark_node.
+
+2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/78344
+ * decl.c (grokdeclarator): Do not append the error_mark_node
+ due to an erroneous optional attribute-specifier-seq.
+
+2018-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83897
+ * cp-gimplify.c (cp_maybe_instrument_return): Handle
+ CLEANUP_POINT_EXPR.
+
+2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/81054
+ * constexpr.c (ensure_literal_type_for_constexpr_object): Return
+ error_mark_node when we give an error.
+ * decl.c (cp_finish_decl): Use the latter.
+
+2018-01-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/83287
+ * init.c (build_raw_new_expr): Scan list for lookups to keep.
+
+2018-01-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/83814
+ * expr.c (fold_for_warn): Move from c-common.c, reducing to just
+ the C++ part. If processing a template, call
+ fold_non_dependent_expr rather than fully folding.
+
+2018-01-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/81067 - redundant NULL warning.
+ * call.c (convert_like_real): Restore null_node handling.
+
+2018-01-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/81843 - ICE with variadic member template.
+ PR c++/72801
+ * pt.c (unify_pack_expansion): Don't try to deduce enclosing
+ template args.
+
+2018-01-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/83799
+ * pt.c (type_dependent_expression_p): Strip any location wrapper
+ before testing tree codes.
+ (selftest::test_type_dependent_expression_p): New function.
+ (selftest::cp_pt_c_tests): Call it.
+
+2018-01-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/83739
+ * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
+ this not a final instantiation.
+
+2018-01-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/83714 - ICE checking return in template.
+ * typeck.c (check_return_expr): Call build_non_dependent_expr.
+
+2018-01-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83817
+ * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
+ is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
+ instead of CALL_FROM_THUNK_P.
+
+ PR c++/83825
+ * name-lookup.c (member_vec_dedup): Return early if len is 0.
+ (resort_type_member_vec, set_class_bindings,
+ insert_late_enum_def_bindings): Use vec qsort method instead of
+ calling qsort directly.
+
+2018-01-15 Martin Sebor <msebor@redhat.com>
+
+ PR c++/83588
+ * class.c (find_flexarrays): Make a record of multiple flexible array
+ members.
+
+2018-01-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/83186 - ICE with static_cast of list-initialized temporary.
+ * typeck.c (build_static_cast): Use build_non_dependent_expr.
+
+2018-01-12 Nathan Sidwell <nathan@acm.org>
+
+ * cp-tree.h (mark_rvalue_use): Add parm name.
+ * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
+ mark_rvalue_use.
+ * call.c (convert_like_real): Fix formatting.
+
+2018-01-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/82728 - wrong -Wunused-but-set-variable
+ PR c++/82799
+ PR c++/83690
+ * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
+ * decl.c (case_conversion): Likewise.
+ * semantics.c (finish_static_assert): Call
+ perform_implicit_conversion_flags.
+
+2018-01-11 Nathan Sidwell <nathan@acm.org>
+
+ * method.c (enum mangling_flags): Delete long-dead enum.
+
+2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * parser.c (cp_parser_std_attribute_spec): When
+ token_pair::require_open / require_close return false simply
+ return error_mark_node, avoid duplicate cp_parser_error about
+ expected '(' / ')', respectively.
+
+2018-01-10 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/43486
+ * call.c (null_ptr_cst_p): Strip location wrappers when
+ converting from '0' to a pointer type in C++11 onwards.
+ (conversion_null_warnings): Replace comparison with null_node with
+ call to null_node_p.
+ (build_over_call): Likewise.
+ * cp-gimplify.c (cp_fold): Remove the early bailout when
+ processing_template_decl.
+ * cp-lang.c (selftest::run_cp_tests): Call
+ selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
+ * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
+ (selftest::run_cp_tests): Move decl to bottom of file.
+ (null_node_p): New inline function.
+ (selftest::cp_pt_c_tests): New decl.
+ (selftest::cp_tree_c_tests): New decl.
+ * cvt.c (build_expr_type_conversion): Replace comparison with
+ null_node with call to null_node_p.
+ * error.c (args_to_string): Likewise.
+ * except.c (build_throw): Likewise.
+ * mangle.c (write_expression): Skip location wrapper nodes.
+ * parser.c (literal_integer_zerop): New function.
+ (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
+ the result for RID_TYPEID. Pass true for new "wrap_locations_p"
+ param of cp_parser_parenthesized_expression_list. When calling
+ warn_for_memset, replace integer_zerop calls with
+ literal_integer_zerop, eliminating the double logical negation
+ cast to bool. Eliminate the special-casing for CONST_DECL in
+ favor of the fold_for_warn within warn_for_memset.
+ (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
+ param, defaulting to false. Convert "expr" to a cp_expr, and call
+ maybe_add_location_wrapper on it when wrap_locations_p is true.
+ (cp_parser_unary_expression): Call maybe_add_location_wrapper on
+ the result for RID_ALIGNOF and RID_SIZEOF.
+ (cp_parser_builtin_offsetof): Likewise.
+ * pt.c: Include "selftest.h".
+ (tsubst_copy): Handle location wrappers.
+ (tsubst_copy_and_build): Likewise.
+ (build_non_dependent_expr): Likewise.
+ (selftest::test_build_non_dependent_expr): New function.
+ (selftest::cp_pt_c_tests): New function.
+ * tree.c: Include "selftest.h".
+ (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
+ (selftest::test_lvalue_kind): New function.
+ (selftest::cp_tree_c_tests): New function.
+ * typeck.c (string_conv_p): Strip any location wrapper from "exp".
+ (cp_build_binary_op): Replace comparison with null_node with call
+ to null_node_p.
+ (build_address): Use location of operand when building address
+ expression.
+
+2018-01-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/82541
+ * call.c (build_conditional_expr_1): Check complain before warning.
+ * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
+ -Wduplicated-branches.
+
+2018-01-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/81327
+ * call.c (maybe_warn_class_memaccess): Add forward declaration.
+ Change last argument from tree * to const vec<tree, va_gc> *, adjust
+ args uses and check number of operands too. Don't strip away any
+ nops. Use maybe_constant_value when looking for INTEGER_CST args.
+ Deal with src argument not having pointer type. Check
+ tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless
+ test.
+ (build_over_call): Call maybe_warn_class_memaccess here on the
+ original arguments.
+ (build_cxx_call): Rather than here on converted arguments.
+
+2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/81055
+ * init.c (build_vec_init): Avoid building an INIT_EXPR with
+ error_mark_node as second argument.
+
+2018-01-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83734
+ * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
+ in STATEMENT_LIST. Remove unneeded assert.
+
+2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * constexpr.c (cxx_eval_array_reference): Handle polynomial
+ VECTOR_CST_NELTS.
+ (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
+ * call.c (build_conditional_expr_1): Likewise.
+ * decl.c (cp_finish_decomp): Likewise.
+ * mangle.c (write_type): Likewise.
+ * typeck.c (structural_comptypes): Likewise.
+ (cp_build_binary_op): Likewise.
+ * typeck2.c (process_init_constructor_array): Likewise.
+
+2018-01-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83555
+ * typeck.c (build_static_cast_1): For static casts to reference types,
+ call build_base_path with flag_delete_null_pointer_checks as nonnull
+ instead of always false. When -fsanitize=null, call
+ ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
+ * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
+ call if the first argument is INTEGER_CST with REFERENCE_TYPE.
+
+2018-01-03 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/83667
+ * method.c (make_alias_for): Copy DECL_CONTEXT.
+
+2018-01-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/83592
+ * decl.c (grokdeclarator): Don't warn about MVP in typename context.
+
+2018-01-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/83602
+ * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
+ for builtin macros.
+
+ PR c++/83634
+ * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
+ error_mark_node, return error_mark_node.
+
+ Update copyright years.
+
+2018-01-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83556
+ * tree.c (replace_placeholders_r): Pass NULL as last argument to
+ cp_walk_tree instead of d->pset. If non-TREE_CONSTANT and
+ non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
+ to false and return.
+ (replace_placeholders): Pass NULL instead of &pset as last argument
+ to cp_walk_tree.
+
+2018-01-02 Nathan Sidwell <nathan@acm.org>
+
+ * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
+ lval var.
+
+Copyright (C) 2018 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.