summaryrefslogtreecommitdiff
path: root/gcc/cp/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/ChangeLog')
-rw-r--r--gcc/cp/ChangeLog5472
1 files changed, 2 insertions, 5470 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a53ea052510..4c9083a857b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5476 +1,8 @@
-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.
+2019-01-01 Jakub Jelinek <jakub@redhat.com>
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.
+Copyright (C) 2019 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright