1. 20 Oct, 2016 20 commits
    • Do not fixup edges for a thunk in LTRANS (PR lto/78049) · 3e23d1bc
      	PR lto/78049
      	* lto-streamer-in.c (fixup_call_stmt_edges_1): Replace value
      	comparison with STMT_UID_NOT_IN_RANGE.
      	(fixup_call_stmt_edges): Do not fixup edges of a thunk in
      	LTRANS.
      
      From-SVN: r241380
      Martin Liska committed
    • compare-elim.c (conforming_compare): Accept UNSPECs. · 2c35bbe1
      	* compare-elim.c (conforming_compare): Accept UNSPECs.
      	(find_comparison_dom_walker::before_dom_children): Deal with
      	instructions both using and killing the flags register.
      	(equivalent_reg_at_start): New function extracted from...
      	(try_eliminate_compare): ...here.  Use it and add support for
      	registers and UNSPECs as second operand of the compare.
      	* config/visium/visium-modes.def (CCV): New.
      	* config/visium/predicates.md (visium_v_comparison_operator): New.
      	(visium_branch_operator): Deal with CCV mode.
      	* config/visium/visium.c (visium_select_cc_mode): Likewise.
      	(output_cbranch): Likewise.
      	* config/visium/visium.md (UNSPEC_{ADD,SUB,NEG}V): New constants.
      	(uaddv<mode>4): New expander.
      	(addv<mode>4): Likewise.
      	(add<mode>3_insn_set_carry): New instruction.
      	(add<mode>3_insn_set_overflow): Likewise.
      	(addsi3_insn_set_overflow): Likewise.
      	(usubv<mode>4): New expander.
      	(subv<mode>4): Likewise.
      	(sub<mode>3_insn_set_carry): New instruction.
      	(sub<mode>3_insn_set_overflow): Likewise.
      	(subsi3_insn_set_overflow): Likewise.
      	(unegv<mode>3): New expander.
      	(negv<mode>3): Likewise.
      	(neg<mode>2_insn_set_overflow): New instruction.
      	(addv_tst<mode>): Likewise.
      	(subv_tst<mode>): Likewise.
      	(negv_tst<mode>): Likewise.
      	(cbranch<mode>4_addv_insn): New splitter and instruction.
      	(cbranch<mode>4_subv_insn): Likewise.
      	(cbranch<mode>4_negv_insn): Likewise.
      
      From-SVN: r241379
      Eric Botcazou committed
    • tree-ssa-alias.c (ptrs_compare_unequal): Remove code duplication. · 40b8428e
      2016-10-20  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-alias.c (ptrs_compare_unequal): Remove code duplication.
      	Handle decls possibly not bound.
      	* tree-ssa-structalias.c (get_constraint_for_ssa_var): Add
      	nothing_id for decls that might not be bound if we are interested
      	for the address.
      	(get_constraint_for_component_ref): Deal with that.
      
      From-SVN: r241378
      Richard Biener committed
    • c-common.c (c_common_truthvalue_conversion): Fix the comment. · eff89e01
      2016-10-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-common.c (c_common_truthvalue_conversion): Fix the comment.
      
      From-SVN: r241377
      Bernd Edlinger committed
    • loop splitting · 28df8730
      (approved at https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00648.html )
      
      	* common.opt (-fsplit-loops): New flag.
      	* passes.def (pass_loop_split): Add.
      	* opts.c (default_options_table): Add OPT_fsplit_loops entry at -O3.
      	(enable_fdo_optimizations): Add loop splitting.
      	* timevar.def (TV_LOOP_SPLIT): Add.
      	* tree-pass.h (make_pass_loop_split): Declare.
      	* tree-ssa-loop-manip.h (rewrite_into_loop_closed_ssa_1): Declare.
      	* tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h,
      	* tree-ssa-loop-split.c: New file.
      	* Makefile.in (OBJS): Add tree-ssa-loop-split.o.
      	* doc/invoke.texi (fsplit-loops): Document.
      	* doc/passes.texi (Loop optimization): Add paragraph about loop
      	splitting.
      
      testsuite/
      	* gcc.dg/loop-split.c: New test.
      	* gcc.dg/tree-ssa/ifc-9.c: Update.
      	* gcc.dg/tree-ssa/ifc-10.c: Update.
      
      From-SVN: r241374
      Michael Matz committed
    • Prepare shared_ptr for array support · a2e0054e
      	* include/backward/auto_ptr.h (__shared_ptr(auto_ptr&&))
      	(shared_ptr(auto_ptr&&)): Adjust template parameter lists.
      	* include/bits/shared_ptr.h (__sp_compatible_with)
      	(__sp_is_constructible): New helper traits for shared_ptr.
      	(shared_ptr::_Convertible): Replace with _Constructible.
      	(shared_ptr::_Constructible, shared_ptr::_Assignable): Forward checks
      	to base class.
      	(shared_ptr::shared_ptr, shared_ptr::operator=): Constrain template
      	with _Constructible and _Assignable.
      	(shared_ptr::shared_ptr(shared_ptr<_Tp1>, _Tp*)): Use element_type
      	instead of _Tp.
      	(operator<): Likewise.
      	(operator>): Define in terms of operator<.
      	(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
      	element_type instead of _Tp.
      	(reinterpret_pointer_cast): Define for C++17.
      	(weak_ptr::_Convertible): Replace with _Constructible.
      	(weak_ptr::_Constructible, weak_ptr::_Assignable): Forward checks
      	to base class.
      	(weak_ptr::weak_ptr, weak_ptr::operator=): Constrain templates
      	with _Constructible and _Assignable.
      	* include/bits/shared_ptr_base.h (__shared_ptr::_Convertible): Replace
      	with _Compatible.
      	(__shared_ptr::_SafeConv): New constraint for incoming raw pointers.
      	(__shared_ptr::_Compatible): New constraint for converting from
      	other types of shared_ptr and weak_ptr.
      	(__shared_ptr::_Assignable): Define in terms of _Compatible.
      	(__shared_ptr::_UniqCompatible, __shared_ptr::_UniqAssignable): New
      	constraints for converting from unique_ptr.
      	(__shared_ptr::__shared_ptr, __shared_ptr::operator=): Constrain
      	template with _SaveConf, _Compatible and _Assignable. Remove
      	__glibcxx_function_requires concept checks. Add static assertion for
      	deleter expression being well-formed.
      	(__shared_ptr::__shared_ptr(__shared_ptr<_Tp1>, _Tp*))
      	(__shared_ptr::operator*, __shared_ptr::operator->)
      	(__shared_ptr::get, __shared_ptr::_M_ptr): Use element_type instead
      	of _Tp.
      	(operator<): Likewise.
      	(operator>): Define in terms of operator<.
      	(static_pointer_cast, const_pointer_cast, dynamic_pointer_cast): Use
      	element_type instead of _Tp.
      	(reinterpret_pointer_cast): Define for C++17.
      	(weak_ptr::_Convertible): Replace with _Compatible.
      	(weak_ptr::_Compatible, weak_ptr::_Assignable): New constraints for
      	conversions from other types of weak_ptr and shared_ptr.
      	(__weak_ptr::__weak_ptr, __weak_ptr::operator=): Constrain templates
      	with _Constructible and _Assignable.
      	(__weak_ptr::_M_ptr): Use element_type instead of _Tp.
      	* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Adjust
      	dg-error pattern.
      	* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Test conversions.
      	* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
      	* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
      	* testsuite/20_util/shared_ptr/casts/reinterpret.cc: New test.
      
      From-SVN: r241373
      Jonathan Wakely committed
    • Do the operator= SFINAE in the return type for optional, · f320e6a0
      not in the template parameters.
      * include/std/optional (operator=(_Up&&)): Move SFINAE
      from template parameters to the return type.
      (operator=(const optional<_Up>&)): Likewise.
      (operator=(optional<_Up>&&)): Likewise.
      
      From-SVN: r241372
      Ville Voutilainen committed
    • Tweak whitespace in std::allocator files · 88b3e631
      	* include/bits/allocator.h: Remove trailing whitespace, tab-indent.
      	* include/ext/new_allocator.h: Likewise.
      
      From-SVN: r241371
      Jonathan Wakely committed
    • Makefile (x86-64/Linux): Restore missing pairs. · 2e20345f
      	* gcc-interface/Makefile (x86-64/Linux): Restore missing pairs.
      	(x86/Darwin): Likewise.
      
      From-SVN: r241369
      Nicolas Roche committed
    • class.c (gfc_build_class_symbol): Set the kind of _len to gfc_charlen_int_kind… · 40cc684d
      class.c (gfc_build_class_symbol): Set the kind of _len to gfc_charlen_int_kind to catch changes of the charlen kind.
      
      gcc/fortran/ChangeLog:
      
      2016-10-20  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	* class.c (gfc_build_class_symbol): Set the kind of _len to
      	gfc_charlen_int_kind to catch changes of the charlen kind.
      
      From-SVN: r241367
      Andre Vehreschild committed
    • pr35356-1.c: Update. · 6c1a9e41
      2016-10-20  Richard Biener  <rguenther@suse.de>
      
      	* gcc.dg/graphite/pr35356-1.c: Update.
      
      From-SVN: r241366
      Richard Biener committed
    • PR78052 Define std::allocator<void>::{construct,destroy} · 1d6360c8
      	PR libstdc++/78052
      	* include/bits/allocator.h (allocator<void>::construct)
      	(allocator<void>::destroy): Define.
      	* testsuite/20_util/allocator/void.cc: New test.
      
      From-SVN: r241365
      Jonathan Wakely committed
    • Add more tests for enable_shared_from_this ambiguities · 4f63d614
      	* testsuite/20_util/enable_shared_from_this/56383.cc: Add tests for
      	additional ambiguous cases.
      
      From-SVN: r241364
      Jonathan Wakely committed
    • cgraphunit.c (analyze_functions): Set node->definition to false to signal symbol removal to... · 775669c1
      2016-10-20  Richard Biener  <rguenther@suse.de>
      
      	* cgraphunit.c (analyze_functions): Set node->definition to
      	false to signal symbol removal to debug_hooks->late_global_decl.
      	* ipa.c (symbol_table::remove_unreachable_nodes): When not in
      	WPA signal symbol removal to the debuginfo machinery.
      	* dwarf2out.c (dwarf2out_late_global_decl): Instead of
      	using early_finised to guard the we're called for symbol
      	removal case look at the symtabs definition flag.
      	(gen_variable_die): Remove redundant check.
      
      From-SVN: r241363
      Richard Biener committed
    • S/390: Add fallthrough comment in md file. · a65593a4
      gcc/ChangeLog:
      
      2016-10-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.md ("prefetch"): Add fallthrough comment.
      
      From-SVN: r241362
      Andreas Krebbel committed
    • re PR c++/77446 (Suspicious "non-constant condition for static assertion" error) · a2923dba
      2016-10-20  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/77446
      	* g++.dg/cpp1y/pr77446.C: New.
      
      From-SVN: r241361
      Paolo Carlini committed
    • re PR tree-optimization/53979 (((a ^ b) | a) not optimized to (a | b)) · 2066ef6a
      2016-10-20  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR tree-optimization/53979
      	* match.pd ((a ^ b) | a -> a | b): New pattern.
      
      testsuite/
      	* gcc.dg/pr53979-1.c: New test-case.
      	* gcc.dg/pr53979-2.c: Likewise.
      
      From-SVN: r241360
      Prathamesh Kulkarni committed
    • Daily bump. · d480863a
      From-SVN: r241359
      GCC Administrator committed
  2. 19 Oct, 2016 20 commits
    • pa64-hpux-lib.h: New file. · 4c6d7494
      libgcc/
      	* config/pa/pa64-hpux-lib.h: New file.  
      	(EH_FRAME_SECTION_NAME): Rename to __LIBGCC_EH_FRAME_SECTION_NAME__.
      	(DTORS_SECTION_ASM_OP): Rename to __LIBGCC_DTORS_SECTION_ASM_OP__.
      	* config.host (tm_file): Add pa/pa64-hpux-lib.h to tm_file on
      	hppa*64*-*-hpux11*.
      gcc/
      	* config/pa/pa64-hpux.h (PA_INIT_FRAME_DUMMY_ASM_OP): Move to
      	config/pa/pa64-hpux-lib.h.
      	(PA_CRTBEGIN_HACK): Likewise.
      	(DTOR_LIST_BEGIN): Likewise.
      
      From-SVN: r241356
      John David Anglin committed
    • c-common.c (c_common_truthvalue_conversion): Warn only for signed integer shift… · 4c712374
      c-common.c (c_common_truthvalue_conversion): Warn only for signed integer shift ops in boolean context.
      
      2016-10-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-common.c (c_common_truthvalue_conversion): Warn only for signed
              integer shift ops in boolean context.
      
      testsuite:
      2016-10-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-c++-common/Wint-in-bool-context-2.c: New test.
      
      From-SVN: r241354
      Bernd Edlinger committed
    • Make std::enable_shared_from_this cope with ambiguity · f3070dab
      	* include/backward/auto_ptr.h (__shared_ptr(auto_ptr&&)): Call
      	_M_enable_shared_from_this_with instead of
      	__enable_shared_from_this_helper.
      	* include/bits/shared_ptr.h (__enable_shared_from_this_helper):
      	Remove overload for std::enable_shared_from_this..
      	(__enable_shared_from_this_base): Define friend function to select a
      	std::enable_shared_from_this base class.
      	* include/bits/shared_ptr_base.h (__enable_shared_from_this_helper):
      	Remove all overloads.
      	(__shared_ptr): Change all relevant constructors to call
      	_M_enable_shared_from_this_with instead of
      	__enable_shared_from_this_helper.
      	(__shared_ptr::__efst_base_t, __shared_ptr::__has_efst_base): Helpers
      	to detect accessible and unambiguous enable_shared_from_this bases.
      	(__shared_ptr::_M_enable_shared_from_this_with): New function to
      	replace __enable_shared_from_this_helper overloads.
      	(__enable_shared_from_this_helper): Remove overload for
      	std::__enable_shared_from_this.
      	(__enable_shared_from_this_base): Define friend function to select a
      	std::__enable_shared_from_this base class.
      	* include/experimental/bits/shared_ptr.h (experimental::shared_ptr):
      	Change relevant constructors to call _M_enable_shared_from_this_with.
      	(experimental::shared_ptr::__efst_base_t)
      	(experimental::shared_ptr::__has_efst_base): Helpers to detect
      	accessible and unambiguous enable_shared_from_this bases.
      	(experimental::shared_ptr::_M_enable_shared_from_this_with): Define.
      	(experimental::__enable_shared_from_this_helper): Remove overload for
      	std::experimental::enable_shared_from_this.
      	(experimental::__expt_enable_shared_from_this_base): Define friend
      	function to select a std::experimental::enable_shared_from_this base.
      	* testsuite/experimental/memory/shared_ptr/cons/
      	enable_shared_from_this.cc: New test.
      	* testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc:
      	Adjust expected behaviour for shared_ptr<A[]>.
      
      From-SVN: r241353
      Jonathan Wakely committed
    • dtio_17.f90: Fix test. · bdcf8e7c
      2016-10-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	* gfortran.dg/dtio_17.f90: Fix test.
      
      From-SVN: r241352
      Jerry DeLisle committed
    • Walloca-1.c: Adjust test for !lp64 targets. · ec1748d4
      	* gcc.dg/Walloca-1.c: Adjust test for !lp64 targets.
      	* gcc.dg/Walloca-2.c: Same.
      
      From-SVN: r241351
      Aldy Hernandez committed
    • Fix copy&paste error in __gnu_debug::vector · 36e2520b
      	* include/debug/vector (__gnu_debug::vector::emplace_back): Fix return
      	type.
      
      From-SVN: r241350
      Jonathan Wakely committed
    • Fix incorrect comment about std::auto_ptr · 181f50b6
      	* include/backward/auto_ptr.h (dauto_ptr): Correct comment about
      	conversions from auto_ptr<Derived> rvalues to auto_ptr<Base>.
      	* testsuite/20_util/auto_ptr/assign_neg.cc: Remove redundant dg-error
      	directives that only match notes, not errors.
      
      From-SVN: r241349
      Jonathan Wakely committed
    • arm.c (arm_emit_coreregs_64bit_shift): Clear the result register only if "in"… · c6cc81d6
      arm.c (arm_emit_coreregs_64bit_shift): Clear the result register only if "in" and "out" are different registers.
      
      2016-10-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * config/arm/arm.c (arm_emit_coreregs_64bit_shift): Clear the result
              register only if "in" and "out" are different registers.
      
      From-SVN: r241348
      Bernd Edlinger committed
    • runtime, syscall: force EPOLLET to be positive · 29849c91
          
          The C definition is 1U << 31.  Reportedly on some systems GCC's
          -fgo-dump-spec can print this as -2147483648.
          
          Reviewed-on: https://go-review.googlesource.com/31448
      
      From-SVN: r241347
      Ian Lance Taylor committed
    • Wvla-1.c: Rename to... · b70f0b0c
      	* gcc.dg/Wvla-1.c: Rename to...
      	* gcc.dg/Wvla-larger-than-1.c: ...this.
      	* gcc.dg/Wvla-2.c: Rename to...
      	* gcc.dg/Wvla-larger-than-2.c: ...this.
      	* gcc.dg/Wvla-3.c: Rename to...
      	* gcc.dg/Walloca-11.c.: ...this.
      	* gcc.dg/wvla-[1-7].c: Rename to:
      	* gcc.dg/Wvla-[1-7].c: ...this.
      
      From-SVN: r241344
      Aldy Hernandez committed
    • omp-low.c (pass_oacc_device_lower::gate): New method. · 346a966e
      	* omp-low.c (pass_oacc_device_lower::gate): New method.
      	(execute): Always call execute_oacc_device_lower.
      
      From-SVN: r241343
      Eric Botcazou committed
    • re PR tree-optimization/77916 (ICE in verify_gimple_in_cfg: invalid (pointer)… · 6e3d8cb4
      re PR tree-optimization/77916 (ICE in verify_gimple_in_cfg: invalid (pointer) operands to plus/minus)
      
      2016-10-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	PR tree-optimization/77916
      	PR tree-optimization/77937
      	* gimple-ssa-strength-reduction.c (analyze_increments): Remove
      	stopgap fix.
      	(insert_initializers): Requirement of initializer for -1 should be
      	based on pointer-typedness of the candidate basis.
      
      From-SVN: r241342
      Bill Schmidt committed
    • Test experimental::shared_ptr construction from other smart pointers · a04df2ba
      	* testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc:
      	Add tests for valid and invalid conversions.
      	* testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc:
      	Likewise.
      
      From-SVN: r241340
      Jonathan Wakely committed
    • re PR tree-optimization/78005 (172.mgrid and 450.soplex miscompare) · cbb22e61
      	PR tree-optimization/78005
      	* tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Compute
      	upper (included) bound for niters of prolog loop.
      	(vect_gen_scalar_loop_niters): Change parameter VF to VFM1.
      	Compute niters of scalar loop above which vectorized loop is
      	preferred, as well as the upper (included) bound for the niters.
      	(vect_do_peeling): Record niter bound for loops accordingly.
      
      	gcc/testsuite
      	PR tree-optimization/78005
      	* gcc.dg/vect/pr78005.c: New.
      	* gcc.target/i386/l_fma_float_1.c: Revise test.
      	* gcc.target/i386/l_fma_float_2.c: Ditto.
      	* gcc.target/i386/l_fma_float_3.c: Ditto.
      	* gcc.target/i386/l_fma_float_4.c: Ditto.
      	* gcc.target/i386/l_fma_float_5.c: Ditto.
      	* gcc.target/i386/l_fma_float_6.c: Ditto.
      	* gcc.target/i386/l_fma_double_1.c: Ditto.
      	* gcc.target/i386/l_fma_double_2.c: Ditto.
      	* gcc.target/i386/l_fma_double_3.c: Ditto.
      	* gcc.target/i386/l_fma_double_4.c: Ditto.
      	* gcc.target/i386/l_fma_double_5.c: Ditto.
      	* gcc.target/i386/l_fma_double_6.c: Ditto.
      
      From-SVN: r241339
      Bin Cheng committed
    • [PR lto/77458] Avoid ICE in offloading with differing _FloatN, _FloatNx types · 3b834a2e
      	gcc/
      	PR lto/77458
      	* tree-core.h (enum tree_index): Put the complex types after their
      	component types.
      	* tree-streamer.c (verify_common_node_recorded): New function.
      	(preload_common_nodes) <TREE_CODE (node) == COMPLEX_TYPE>: Use it.
      
      From-SVN: r241338
      Thomas Schwinge committed
    • Replace NULL with false as a return value · aff98801
      	* cgraph.h (cgraph_edge::binds_to_current_def_p):
      	Replace NULL with false as a return value.
      
      From-SVN: r241336
      Martin Liska committed
    • [PR tree-optimization/78024] Clear basic block flags before using BB_VISITED for… · a023f8c8
      [PR tree-optimization/78024] Clear basic block flags before using BB_VISITED for OpenACC loops processing
      
      	gcc/
      	* omp-low.c (oacc_loop_discovery): Call clear_bb_flags before, and
      	don't clear BB_VISITED after processing.
      
      	gcc/testsuite/
      	* gcc.dg/goacc/loop-processing-1.c: New file.
      
      From-SVN: r241334
      Thomas Schwinge committed
    • Move negative unique_ptr tests to new file · d40627f9
      	* testsuite/20_util/unique_ptr/cons/cv_qual.cc: Move negative tests
      	to new file.
      	* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: New file.  Fix
      	test for incompatible deleters to not also use incompatible types.
      	Add tests for incompatible array types.
      
      From-SVN: r241332
      Jonathan Wakely committed
    • Fix std::experimental::shared_ptr SFINAE constraints · 84870b6b
      	* include/experimental/bits/shared_ptr.h
      	(__shared_ptr<__libfund_v1<_Tp, false>, _Lp>::_Compatible): Just use
      	is_convertible for non-array specialization.
      	(__shared_ptr<__libfund_v1<_Tp, false>, _Lp>::_UniqCompatible): New
      	constraint for conversions from unique_ptr.
      	(__shared_ptr<__libfund_v1<_Tp, false>, _Lp>::__shared_ptr): Constrain.
      	(__shared_ptr<__libfund_v1<_Tp, false>, _Lp>::reset): Likewise.
      	(__sp_compatible_v): New variable template for trait.
      	(__sp_is_constructible): New trait to check shared_ptr constraints.
      	(__sp_is_constructible_v): New variable template for trait.
      	(__shared_ptr<__libfund_v1<_Tp, true>, _Lp>::_SafeConv): New
      	constraint for construction/reset, using __sp_is_constructible_v.
      	(__shared_ptr<__libfund_v1<_Tp, true>, _Lp>::_UniqCompatible): New
      	constraint for conversions from unique_ptr.
      	(__shared_ptr<__libfund_v1<_Tp, true>, _Lp>::__shared_ptr): Constrain.
      	(__shared_ptr<__libfund_v1<_Tp, true>, _Lp>::reset): Likewise.
      	(shared_ptr::_SafeConv): Constraint for checking constructors.
      	(shared_ptr(Tp1*), shared_ptr(_Tp1, _Deleter))
      	(shared_ptr(_Tp1, _Deleter, _Alloc)): Constrain with _SafeConv.
      	(shared_ptr(const weak_ptr<_Tp1>&)): Constrain with _Compatible.
      	(shared_ptr(auto_ptr<_Tp1>&&)): Fix, remove TODO.
      	* testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc:
      	Remove tests using invalid conversions.
      	* testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc:
      	New test.
      	* testsuite/experimental/memory/shared_ptr/cons/torture.cc: New test.
      	* testsuite/experimental/memory/shared_ptr/modifiers/reset.cc: Remove
      	tests using invalid conversions.
      	* testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc: New
      	test.
      	* testsuite/experimental/memory/shared_ptr/observers/use_count.cc:
      	Remove tests using invalid conversions.
      
      From-SVN: r241331
      Jonathan Wakely committed
    • PR77990 refactor unique_ptr to encapsulate tuple · e182393e
      	PR libstdc++/77990
      	* include/bits/unique_ptr.h (__uniq_ptr_impl): New type to
      	encapsulate implementation details.
      	(unique_ptr::unique_ptr(_Up)): Don't copy deleter object.
      	(unique_ptr::get, unique_ptr::get_deleter, unique_ptr::release):
      	Call member functions of implementation object.
      	(unique_ptr<T[], D>): Likewise.
      	* python/libstdcxx/v6/printers.py (UniquePointerPrinter): Adjust for
      	new implementation.
      	* python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker): Likewise.
      	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust dg-error
      	lines.
      	* testsuite/20_util/unique_ptr/assign/cv_qual.cc: Likewise.
      	* testsuite/20_util/unique_ptr/cons/cv_qual.cc: Likewise.
      	* testsuite/20_util/unique_ptr/cons/77990.cc: New test.
      
      From-SVN: r241330
      Jonathan Wakely committed