1. 24 Apr, 2019 24 commits
    • Make filesystem::path comparison operators hidden friends (LWG 3065) · f90b16c4
      This change revealed two testsuite bugs where some string comparisons
      only compiled by converting the strings to filesystem::path objects.
      
      	* include/bits/fs_path.h (operator<, operator<=, operator>)
      	(operator>=, operator==, operator!=): Make hidden friends, as per
      	LWG 3065.
      	* testsuite/27_io/filesystem/path/native/string-char8_t.cc: Fix
      	string type in test.
      	* testsuite/27_io/filesystem/path/native/string.cc: Likewise.
      
      From-SVN: r270558
      Jonathan Wakely committed
    • re PR c++/90236 (bogus error with auto non-type template argument) · 7f8aaa1a
      	PR c++/90236
      	* g++.dg/cpp1z/nontype-auto16.C: New test.
      
      From-SVN: r270557
      Marek Polacek committed
    • PR c++/90227 - error with template parameter packs. · fd177738
      If require_all_args, we aren't waiting for more args to be deduced later.
      
      	* pt.c (coerce_template_parms): Do add empty pack when
      	require_all_args.
      
      From-SVN: r270556
      Jason Merrill committed
    • libphobos: Fix FAIL phobos.exp/core.time on CentOS 5.11, Linux 2.6.18 · 58990c4d
      Merges upstream druntime e03164b5.
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2581
      
      libphobos/ChangeLog:
      
      2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	PR d/89432
      	* testsuite/lib/libphobos.exp (check_effective_target_linux_pre_2639):
      	New proc.
      	* testsuite/libphobos.druntime/druntime.exp: Add compiler flag
      	-fversion=Linux_Pre_2639 if target is linux_pre_2639.
      	* testsuite/libphobos.druntime_shared/druntime_shared.exp: Likewise.
      
      From-SVN: r270554
      Iain Buclaw committed
    • aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Disable OPTION_MASK_VSX and… · 265e6a0a
      aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Disable OPTION_MASK_VSX and OPTION_MASK_ALTIVEC from rs6000_isa_flags for Go on...
      
      2019-04-24  Clement Chigot  <clement.chigot@atos.net>
      
              * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Disable
              OPTION_MASK_VSX and OPTION_MASK_ALTIVEC from rs6000_isa_flags
              for Go on 32 bit AIX.
              * config/rs6000/aix72.h: Likewise.
      
      From-SVN: r270553
      Clement Chigot committed
    • Use __and_v<...> instead of __and_<...>::value · 303b2264
      	* include/std/any (any::any(ValueType&&)): Use __and_v.
      	* include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
      	Likewise.
      
      From-SVN: r270552
      Jonathan Wakely committed
    • Finish implementing "Treating Unnecessary decay" (P0777R1) · 81c7cf71
      	* include/std/tuple (apply): Use remove_reference_t instead of decay_t
      	as per P0777R1.
      	* include/std/type_traits (__result_of_memfun): Use remove_reference
      	instead of __remove_cvref_t and remove redundant is_same check.
      	(__inv_unwrap): Use __remove_cvref_t instead of decay_t.
      
      From-SVN: r270551
      Jonathan Wakely committed
    • re PR target/90193 (asm goto with TLS "m" input operand generates incorrect assembler in O1 and O2) · 73f1289e
      	PR target/90193
      	* rtl.c (classify_insn): Return JUMP_INSN for asm goto.
      	* emit-rtl.c (try_split): Copy over REG_LABEL_TARGET.
      
      	* gcc.target/i386/pr90193.c: New test.
      
      From-SVN: r270550
      Jakub Jelinek committed
    • Fix basic_string_view typedefs and enforce preconditions · fb8b3e29
      The basic_string_view::pointer and basic_string_view::reference typedefs
      are supposed to refer to the non-const value type.
      
      In previous standards having traits_type::char_type different to
      value_type was simply undefined, but in the C++2a draft it's ill-formed,
      as changed by P1148R0. For std::basic_string and iostreams we might
      want to only enforce this conditionally for __cplusplus > 201703L but
      for std::basic_string_view we don't have backwards compatibility
      concerns. Also add assertions to verify the _CharT argument is a
      "char-like" type (non-array, trivial, standard layout type).
      
      Also remove the non-standard basic_string_view::_M_check and
      basic_string_view::_M_limit member functions, replacing them with
      non-member functions that will still exist even if basic_string_view is
      specialized by the program.
      
      	* include/experimental/string_view (basic_string_view::pointer)
      	(basic_string_view::reference): Fix to refer to non-const value_type.
      	* include/bits/basic_string.h (basic_string): Use __sv_check and
      	__sv_limit instead of basic_string_view::_M_check and
      	basic_string_view::_M_limit.
      	* include/std/string_view (__sv_check, __sv_limit): New
      	helper functions to replace basic_string_view::_M_check and
      	basic_string_view::_M_limit.
      	(basic_string_view): Add static assertions to enforce ill-formed
      	requirement for traits_type::char_type from P1148R0, and to enforce
      	required properties of char-like types.
      	(basic_string_view::pointer, basic_string_view::reference): Fix to
      	refer to non-const value_type.
      	(basic_string_view::operator[], basic_string_view::at)
      	(basic_string_view::front, basic_string_view::back)
      	(basic_string_view::data): Use const_reference and const_pointer
      	typedefs for return types.
      	(basic_string_view::_M_check, basic_string_view::_M_limit): Remove.
      	(hash<wstring_view>): Fix argument_type typedef.
      	* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
      	char/1.cc: Fix expected return type of basic_string_view::data().
      	* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
      	wchar_t/1.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
      	char/1.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
      	wchar_t/1.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
      	New test.
      	* testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
      	Check reference and pointer typedefs.
      	* testsuite/experimental/string_view/requirements/typedefs.cc:
      	Likewise.
      	* testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc:
      	Fix expected return type of basic_string_view::data().
      	* testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/
      	1.cc: Likewise.
      	* testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
      	Likewise.
      	* testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
      	1.cc: Likewise.
      
      From-SVN: r270548
      Jonathan Wakely committed
    • PR libstdc++/90220 Fix std::any_cast for array types · 92750002
      Although the std::any constructors use decay_t to determine the type of
      the contained value, std::any_cast should use the un-decayed type (and
      so always fail for function and array types that decay to pointers).
      
      Using remove_cv_t is correct, because the condition for std::any_cast
      to return non-null is operand.type() == typeid(T) and typeid ignores
      top-level cv-qualifiers.
      
      	PR libstdc++/90220
      	* include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
      	Avoid a runtime check for types that can never be stored in std::any.
      	* testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
      	array types.
      
      From-SVN: r270547
      Jonathan Wakely committed
    • libphobos: Skip curl tests if libcurl is not installed on the target. · 540bc8a8
      libphobos/ChangeLog:
      
      2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	PR d/88654
      	* testsuite/lib/libphobos.exp (libphobos-dg-test): Check
      	libphobos_skipped_test_p before running test.
      	(libphobos-dg-prune): New proc.
      	(libphobos_init): Set libphobos_skip_tests.
      	(libphobos_skipped_test_p): New proc.
      	(check_effective_target_libcurl_available): New proc.
      	* testsuite/libphobos.phobos/phobos.exp: Skip curl tests if library
      	not found.
      	* testsuite/libphobos.phobos_shared/phobos_shared.exp: Likewise.
      
      From-SVN: r270545
      Iain Buclaw committed
    • S/390: Fix PR89952 incorrect CFI · 9fe19400
      This patch fixes a cases where inconsistent CFI is generated.
      
      After restoring the hard frame pointer (r11) from an FPR we have to
      set the CFA register.  In order to be able to set it back to the stack
      pointer (r15) we have to make sure that r15 has been restored already.
      
      The patch also adds a scheduler dependency to prevent the instruction
      scheduler from swapping the r11 and r15 restore again.
      
      gcc/ChangeLog:
      
      2019-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
      
      	PR target/89952
      	* config/s390/s390.c (s390_restore_gprs_from_fprs): Restore GPRs
          	from FPRs in reverse order.  Generate REG_CFA_DEF_CFA note also
          	for restored hard frame pointer.
      	(s390_sched_dependencies_evaluation): Implement new target hook.
      	(TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK): New macro definition.
      
      gcc/testsuite/ChangeLog:
      
      2019-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
      
      	PR target/89952
      	* gcc.target/s390/pr89952.c: New test.
      
      From-SVN: r270544
      Andreas Krebbel committed
    • re PR target/89093 (C++ exception handling clobbers d8 VFP register) · 972206e0
      	PR target/89093
          runtime: mark unwind functions general-regs-only on ARM
          
          For https://gcc.gnu.org/PR89093.
          
          Change-Id: Ic426b43d633c77104bda01d4e7835bc9ab4695ef
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/173657
          Reviewed-by: Ian Lance Taylor <iant@golang.org>
      
      From-SVN: r270542
      Ian Lance Taylor committed
    • libphobos: Fix assert in core.sys.posix.sys.stat for aarch64/ilp32. · 9e1558d3
      Merges upstream druntime 51365217.
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2579
      
      From-SVN: r270541
      Iain Buclaw committed
    • [ARC][COMMITTED] Fix typos. · fe3ddee9
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc-options.def: Fix typos and spelling mistakes.
      	* config/arc/arc.c (arc_init): Cleanup warning message.
      	(arc_override_options): Likewise.
      
      From-SVN: r270540
      Claudiu Zissulescu committed
    • call.c (null_ptr_cst_p): Order checks according to expensiveness. · be39d6f0
      2019-04-24  Richard Biener  <rguenther@suse.de>
      
      	cp/
      	* call.c (null_ptr_cst_p): Order checks according to expensiveness.
      	(conversion_null_warnings): Likewise.
      	* typeck.c (same_type_ignoring_top_level_qualifiers_p): Return
      	early if type1 == type2.
      
      From-SVN: r270539
      Richard Biener committed
    • PR libstdc++/90220 Fix std::any_cast for function pointers · f9bfdfa2
      	PR libstdc++/90220 (partial)
      	* include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
      	not attempt ill-formed static_cast to pointers to non-object types.
      	* testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
      	function types.
      
      From-SVN: r270538
      Jonathan Wakely committed
    • re PR target/90187 (ICE in extract_insn, at recog.c:2304 x86_64) · de6ae2ce
      	PR target/90187
      	* config/i386/i386.c (ix86_expand_sse_fp_minmax): Force if_true into
      	a register if both if_true and if_false are MEMs.
      
      	* g++.target/i386/pr90187.C: New test.
      
      From-SVN: r270537
      Jakub Jelinek committed
    • d/dmd: Merge upstream dmd 423758078 · 4a475b3f
      Fixes another failing test to pass on BigEndian.
      
      Initial patch by Robin Dapp.
      
      Reviewed-on: https://github.com/dlang/dmd/pull/9684
      
      gcc/testsuite/ChangeLog:
      
      2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* gdc.test/README.gcc: New file.
      
      From-SVN: r270536
      Iain Buclaw committed
    • re PR target/89093 (C++ exception handling clobbers d8 VFP register) · 0f7e4fe2
      	PR target/89093
      	* raise-gcc.c (TARGET_ATTRIBUTE): Define.
      	(continue_unwind, personality_body, PERSONALITY_FUNCTION): Add
      	TARGET_ATTRIBUTE.
      
      Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r270535
      Ramana Radhakrishnan committed
    • re PR tree-optimization/90208 (error: EH landing pad label) · 3795b582
      	PR tree-optimization/90208
      	* tree-cfg.c (remove_bb): Move forced labels from removed bbs
      	after labels of new_bb, not before them.
      
      	* gcc.dg/tsan/pr90208-1.c: New test.
      	* gcc.dg/tsan/pr90208-2.c: New test.
      
      From-SVN: r270534
      Jakub Jelinek committed
    • re PR tree-optimization/90211 (ICE: tree check: expected ssa_name, have real_cst… · 2bd49e6b
      re PR tree-optimization/90211 (ICE: tree check: expected ssa_name, have real_cst in first_readonly_imm_use, at ssa-iterators.h:351)
      
      	PR tree-optimization/90211
      	* tree-parloops.c (try_create_reduction_list): Ignore phi arguments
      	which are not SSA_NAMEs.
      
      	* gcc.dg/autopar/pr90211.c: New test.
      
      From-SVN: r270533
      Jakub Jelinek committed
    • libphobos: Fix link build errors when compiling with unsupported options · 9bedfe18
      The first compilation test to get baseline warnings was getting more
      messages due to a missing object.d file, compared to later configure
      tests where libphobos is in the include paths.
      
      Because there must always be an object module during compilation, let
      the tests themselves be an empty object module instead.
      
      libphobos/ChangeLog:
      
      2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	PR d/88431
      	* configure: Regenerate.
      	* m4/libtool.m4 (lt_simple_compile_test_code): Update to not have
      	dependencies on libphobos.
      	(lt_simple_link_test_code): Likewise.
      	(GDCFLAGS): Don't override for D compiler tests.
      
      From-SVN: r270531
      Iain Buclaw committed
    • Daily bump. · 0c1eb963
      From-SVN: r270530
      GCC Administrator committed
  2. 23 Apr, 2019 16 commits
    • Avoid -Wcatch-value warning in testsuite · e0657c24
      	* testsuite/20_util/variant/run.cc: Catch exception by reference to
      	prevent -Wcatch-value warning.
      
      From-SVN: r270527
      Jonathan Wakely committed
    • Fix whitespace in ChangeLog · 9588a07c
      From-SVN: r270526
      Jonathan Wakely committed
    • Implement LWG 2904 for std::variant assignment · 86a57ce1
      	* include/std/variant (__variant_construct): Use template parameter
      	type instead of equivalent decltype-specifier.
      	(_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
      	Replace forward with move.
      	(_Move_ctor_base<false, Types...>::_M_destructive_move)
      	(_Move_ctor_base<false, Types...>::_M_destructive_copy)
      	(_Move_ctor_base<true, Types...>::_M_destructive_move)
      	(_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
      	index after construction succeeds.
      	(_Copy_assign_base<false, Types...>::operator=): Remove redundant
      	if-constexpr checks that are always true. Use __remove_cvref_t instead
      	of remove_reference so that is_nothrow_move_constructible check
      	doesn't use a const rvalue parameter. In the potentially-throwing case
      	construct a temporary and move assign it, as per LWG 2904.
      	(_Move_assign_base<false, Types...>::operator=): Remove redundant
      	if-constexpr checks that are always true. Use emplace as per LWG 2904.
      	(variant::operator=(T&&)): Only use emplace conditionally, otherwise
      	construct a temporary and move assign from it, as per LWG 2904.
      	* testsuite/20_util/variant/exception_safety.cc: Check that
      	assignment operators have strong exception safety guarantee.
      
      From-SVN: r270525
      Jonathan Wakely committed
    • libphobos: Add AArch64 Linux as a supported target. · a0128060
      libphobos/ChangeLog:
      
      2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* configure.tgt: Add aarch64*-*-linux* as a supported target.
      
      From-SVN: r270524
      Iain Buclaw committed
    • libphobos: Add D support for S/390 Linux · 130cc10e
      gcc/d/ChangeLog:
      
      2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
      	    Robin Dapp  <rdapp@linux.ibm.com>
      
      	* typeinfo.cc (create_typeinfo): Write typeinfo flags as uint.
      
      gcc/testsuite/ChangeLog:
      
      2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
      	    Robin Dapp  <rdapp@linux.ibm.com>
      
      	* gdc.dg/link.d: Test if target d_runtime.
      	* gdc.dg/runnable.d: Fix tests to work on BigEndian.
      	* gdc.dg/simd.d: Likewise.
      
      libphobos/ChangeLog:
      
      2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
      	    Robin Dapp  <rdapp@linux.ibm.com>
      
      	* configure.tgt: Add s390*-linux* as a supported target.
      	* libdruntime/gcc/sections/elf_shared.d: import gcc.builtins.
      	(__tls_get_addr_internal): Declare.
      	(TLS_DTV_OFFSET): Define as zero on SystemZ.
      	(getTLSRange): Support getting TLS on SystemZ.
      	* testsuite/libphobos.typeinfo/struct-align.d: New test.
      
      Co-Authored-By: Robin Dapp <rdapp@linux.ibm.com>
      
      From-SVN: r270523
      Iain Buclaw committed
    • libphobos: Add D support for RISC-V Linux · d9392bfa
      2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* configure.tgt: Add riscv*-*-linux* as supported target.
      	* libdruntime/gcc/sections/elf_shared.d (getDependencies): Adjust
      	dlpi_addr on RISCV32 and RISCV64.
      	* src/std/math.d: Add IEEE FPU control support for RISCV.
      
      From-SVN: r270522
      Iain Buclaw committed
    • Document PSTL linker flags · 1bacd25b
      	* doc/xml/manual/using.xml: Add PSTL linker flags to table
              3.1.
      
      From-SVN: r270521
      Thomas Rodgers committed
    • Update .po files. · 451bbd9c
      	* be.po, da.po, de.po, el.po, fi.po, fr.po, hr.po, id.po, ja.po,
      	nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
      	zh_TW.po: Update.
      
      From-SVN: r270520
      Joseph Myers committed
    • d: Add support for compiling without libphobos library. · c0aebc60
      Merges upstream dmd 3b3dca8be
      
      Reviewed-on: https://github.com/dlang/dmd/pull/9678
      
      gcc/d/ChangeLog:
      
      2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* d-builtins.cc (d_init_versions): Add D_BetterC, D_ModuleInfo,
      	D_Exceptions, D_TypeInfo as predefined version conditions.
      	* d-codegen.cc (build_bounds_condition): Generate trap if D asserts
      	are turned off.
      	* d-frontend.cc (getTypeInfoType): Add error when -fno-rtti is set.
      	* d-lang.cc (d_init_options): Initialize new front-end options.
      	(d_handle_option): Handle -fdruntime, -fexceptions, and -frtti.
      	(d_post_options): Turn off D runtime features if -fno-druntime is set.
      	* d-spec.cc (lang_specific_driver): Handle -fdruntime.
      	* d-tree.h (have_typeinfo_p): Add prototype.
      	(build_typeinfo): Update prototype.
      	* decl.cc (DeclVisitor::visit(StructDeclaration)): Create typeinfo
      	only if TypeInfo exists.
      	(DeclVisitor::visit(ClassDeclaration)): Likewise.
      	(DeclVisitor::visit(InterfaceDeclaration)): Likewise.
      	(DeclVisitor::visit(EnumDeclaration)): Likewise.
      	* expr.cc: Update all calls to build_typeinfo.
      	* gdc.texi (Runtime Options): Document -fdruntime and -frtti.
      	* lang.opt: Add -fdruntime and -frtti.
      	* modules.cc (build_module_tree): Create module info only if
      	ModuleInfo exists.
      	* toir.cc (IRVisitor::visit(ThrowStatement)): Update test for
      	-fno-exceptions.
      	* typeinfo.cc (create_tinfo_types): Build internal typeinfo classes
      	only if Object exists.
      	(have_typeinfo_p): New function.
      	(class TypeInfoVisitor): Update all calls to build_typeinfo.
      	(build_typeinfo): Add error when -fno-rtti is set.
      
      gcc/testsuite/ChangeLog:
      
      2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* gdc.test/fail_compilation/fail2456.d: New test.
      	* gdc.test/fail_compilation/test18312.d: New test.
      	* gdc.test/gdc-test.exp (gdc-convert-args): Handle -betterC.
      
      From-SVN: r270518
      Iain Buclaw committed
    • [GCC, AARCH64] Add GNU note section with BTI and PAC. · 32efff9f
      This patch adds the GNU NOTE section to the BTI and/or PAC
      enabled objects for linux targets.
      
      The patches for needed for these in binutils are already approved
      and committed.
      https://sourceware.org/ml/binutils/2019-03/msg00072.html
      
      *** gcc/ChangeLog ***
      
      2018-04-23  Sudakshina Das  <sudi.das@arm.com>
      
      	* config/aarch64/aarch64-linux.h (TARGET_ASM_FILE_END): Define for
      	AArch64.
      	(aarch64_file_end_indicate_exec_stack): Add gnu note section.
      
      gcc/testsuite/ChangeLog:
      
      2018-04-23  Sudakshina Das  <sudi.das@arm.com>
      
      	* gcc.target/aarch64/bti-1.c: Add scan directive for gnu note section
      	for linux targets.
      	* gcc.target/aarch64/va_arg_1.c: Update scan directive to not clash
      	with GNU note section.
      
      From-SVN: r270515
      Sudakshina Das committed
    • re PR d/90079 (SEGV in _aaKeys, _aaValues on 32-bit SPARC) · c7bfed18
      	PR d/90079
      libphobos: Fix SEGV in _aaKeys, _aaValues on 32-bit SPARC
      
      Merges upstream druntime b43203a1
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2572
      
      From-SVN: r270514
      Iain Buclaw committed
    • * lib/target-supports.exp · d86bc962
      	(check_effective_target_keeps_null_pointer_checks): Add cr16.
      
      From-SVN: r270513
      Jeff Law committed
    • modulo-sched: prevent division by zero (PR87979) · 9fe3064b
      	PR rtl-optimization/87979
      	* modulo-sched.c (sms_schedule): Start ii value "mii" should
      	not equal zero.
      
      testsuite:
      
      	PR rtl-optimization/87979
      	* gcc.dg/pr87979.c: New test.
      
      From-SVN: r270512
      Roman Zhuykov committed
    • modulo-sched: fix branch scheduling issue (PR84032) · 8d64622f
      	PR rtl-optimization/84032
      	* modulo-sched.c (ps_insn_find_column): Change condition so that
      	branch will always be the last insn in a row inside partial
      	schedule.
      
      testsuite:
      
      	PR rtl-optimization/84032
      	* gcc.dg/pr84032.c: New test.
      
      From-SVN: r270511
      Roman Zhuykov committed
    • Implement correct std::variant triviality rules from P0602R4 · 038bc9bf
      The std::variant move assignment operator should not be trivial if the
      variant is not trivially move constructible.
      
      	* include/std/variant (__detail::__variant::_Traits): Make
      	_S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
      	_S_trivial_move_assign depend on _S_trivial_move_ctor, as per
      	P0602R4.
      	(__detail::__variant::_Copy_assign_alias): Only depend on
      	_S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
      	* testsuite/20_util/variant/compile.cc: Correct checks for trivial
      	move assignment operators.
      
      From-SVN: r270510
      Jonathan Wakely committed
    • PR libstdc++/90165 constrain variant(T&&) constructor · 06715e1c
      Also refactor some constraints slightly to be more readable.
      
      	PR libstdc++/90165
      	* include/std/variant (variant::__not_self): New helper for the
      	is_same_v<remove_cvref_t<T>, variant>==false constraints.
      	(variant::__to_type_impl): Remove.
      	(variant::__to_type): Add default argument to check pack size, instead
      	of using __to_type_impl.
      	(variant::__accepted_type): Add default argument using __not_self.
      	(variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
      	for variant(T&&) constructor constraint.
      	(variant::variant(T&&)): Use __not_in_place_tag in constraints.
      	Extract __accepted_type into a named template parameter for reuse in
      	other constraints and in the exception specification.
      	(variant::variant(in_place_type_t<T>, Args&&...))
      	(variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
      	(variant::variant(in_place_index_t<T>, Args&&...))
      	(variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
      	(variant::operator=T&&)): Remove redundant && from trait arguments.
      	* testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
      	isn't used for in_place_type or in_place_index arguments.
      
      From-SVN: r270509
      Jonathan Wakely committed