2020-01-15 Jason Merrill Revert PR c++/33799 - destroy return value if local cleanup throws. * cp-tree.h (current_retval_sentinel): New macro. * decl.c (start_preparsed_function): Set up cleanup for retval. * typeck.c (check_return_expr): Set current_retval_sentinel. PR c++/93257 - consteval void function. * constexpr.c (verify_constant): Allow void_node. PR c++/92871 - bad code with xvalue and GNU ?: extension. * call.c (prevent_lifetime_extension): New. (build_conditional_expr_1): Use it. 2020-01-14 Nathan Sidwell PR c++/90916 * pt.c (retrieve_specialization): Use get_template_info, not open coding access. PR c++/90916 * pt.c (retrieve_specialization): Get the TI from the decl or the classtype as appropriate. 2020-01-14 David Malcolm * cp-gimplify.c (source_location_table_entry_hash::empty_zero_p): New static constant. * cp-tree.h (named_decl_hash::empty_zero_p): Likewise. (struct named_label_hash::empty_zero_p): Likewise. * decl2.c (mangled_decl_hash::empty_zero_p): Likewise. 2020-01-14 Jason Merrill PR c++/92590 - wrong handling of inherited default ctor. * class.c (add_method): A constrained inherited ctor doesn't hide an implicit derived ctor. Revert: PR c++/92552 - ICE with inherited constrained default ctor. * pt.c (instantiate_class_template_1): Copy TYPE_HAS_USER_CONSTRUCTOR. PR c++/91930 - ICE with constrained inherited default ctor. * name-lookup.c (do_class_using_decl): Set TYPE_HAS_USER_CONSTRUCTOR for inherited constructor. PR c++/92594 - ICE with inherited trivial default ctor. * method.c (trivial_fn_p): Treat an inherited default constructor like a normal default constructor. PR c++/92594 - ICE with inherited trivial default ctor. * method.c (trivial_fn_p): Treat an inherited default constructor like a normal default constructor. PR c++/92009 - ICE with punning of typeid. * rtti.c (get_tinfo_desc): Call xref_basetypes. * constexpr.c (cxx_fold_indirect_ref): Don't strip REINTERPRET_CAST_P. 2020-01-13 Jason Merrill PR c++/92746 - ICE with noexcept of function concept check. * except.c (check_noexcept_r): Handle concept-check. PR c++/92582 - ICE with member template as requirement. * pt.c (struct find_template_parameter_info): Add ctx_parms. (any_template_parm_r): Handle TEMPLATE_DECL. (find_template_parameters): Take parms instead of their depth. * constraint.cc (build_parameter_mapping): Pass them. PR c++/33799 - destroy return value if local cleanup throws. * cp-tree.h (current_retval_sentinel): New macro. * decl.c (start_preparsed_function): Set up cleanup for retval. * typeck.c (check_return_expr): Set current_retval_sentinel. PR c++/93238 - short right-shift with enum. * typeck.c (cp_build_binary_op): Use folded op1 for short_shift. 2020-01-10 Jason Merrill * typeck.c (cp_build_binary_op): Restore short_shift code. PR c++/93143 - incorrect tree sharing with constexpr. * constexpr.c (cxx_eval_outermost_constant_expr): Don't assume CONSTRUCTORs are already unshared. PR c++/93173 - incorrect tree sharing. PR c++/93033 * cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr): Use copy_if_shared after cp_genericize_tree. * typeck2.c (split_nonconstant_init): Don't unshare here. 2020-01-08 Jason Merrill * cp-gimplify.c (cp_gimplify_expr) [TARGET_EXPR]: Check TARGET_EXPR_DIRECT_INIT_P. * constexpr.c (cxx_eval_constant_expression): Likewise. 2020-01-08 Jason Merrill PR c++/91369 - constexpr destructor and member initializer. * constexpr.c (cxx_eval_store_expression): Look through TARGET_EXPR when not preevaluating. 2020-01-08 Jason Merrill * constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE support. 2020-01-07 Paolo Carlini * init.c (build_new): Add location_t parameter and use it throughout. (build_raw_new_expr): Likewise. * parser.c (cp_parser_new_expression): Pass the combined_loc. * pt.c (tsubst_copy_and_build): Adjust call. * cp-tree.h: Update declarations. 2020-01-07 Jason Merrill PR c++/47877 - -fvisibility-inlines-hidden and member templates. * decl2.c (determine_visibility): -fvisibility-inlines-hidden beats explicit class visibility for a template. 2020-01-07 Richard Sandiford * mangle.c (mangle_type_attribute_p): New function, split out from... (write_CV_qualifiers_for_type): ...here. Don't mangle attributes that contain a space. 2020-01-07 Jakub Jelinek PR c++/91369 * constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count member, initialize it to zero in ctor. (cxx_eval_call_expression): Bump heap_dealloc_count when deleting a heap object. Don't cache calls to functions which allocate some heap objects and don't deallocate them or deallocate some heap objects they didn't allocate. 2020-01-06 Jason Merrill PR c++/92552 - ICE with inherited constrained default ctor. * pt.c (instantiate_class_template_1): Copy TYPE_HAS_USER_CONSTRUCTOR. * class.c (one_inherited_ctor): Don't set it here. 2020-01-06 Andrew Sutton PR c++/92739 - parsing requires clause with attributes. * parser.c (cp_parser_constraint_requires_parens): Exclude attributes as postfix expressions. 2020-01-05 Jakub Jelinek PR c++/93138 * parser.c (cp_parser_check_class_key): Disable access checks for the simple name lookup. (cp_parser_maybe_warn_enum_key): Likewise. Return early if !warn_redundant_tags. 2010-01-05 Jakub Jelinek PR c++/93046 * cp-gimplify.c (cp_gimplify_init_expr): Don't look through TARGET_EXPR if it has been gimplified already. 2020-01-03 Jason Merrill PR c++/93033 - incorrect tree node sharing with array init. * typeck2.c (split_nonconstant_init): Unshare non-decl. * cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions. 2020-01-02 Jason Merrill * pt.c (invalid_nontype_parm_type_p): Reject class placeholder in C++17. 2020-01-02 Jakub Jelinek PR c/90677 * cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name has not been found, rather than error_mark_node. 2020-01-01 Jakub Jelinek Update copyright years. Copyright (C) 2020 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.