1. 24 Apr, 2019 6 commits
  2. 23 Apr, 2019 25 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
    • Corrections for C++2a std::unwrap_reference traits · 82e8c3da
      The P0318R1 paper added to the C++2a draft recently was not the latest
      version of the paper, and should have included these changes. These
      changes will be made to the working draft via a Defect Report, so I'm
      applying them to libstdc++ now.
      
      	* include/std/type_traits (unwrap_reference_t): Define for C++2a.
      	(unwrap_ref_decay): Remove inheritance from unwrap_reference.
      	* testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.
      
      From-SVN: r270506
      Jonathan Wakely committed
    • re PR debug/90131 (wrong debug info at -O3) · 6e271009
      2019-04-23  Richard Biener  <rguenther@suse.de>
      
      	PR debug/90131
      	* tree-cfgcleanup.c (move_debug_stmts_from_forwarder): Add
      	dest_single_pred_p argument.
      	(remove_forwarder_block): Adjust.
      	(remove_forwarder_block_with_phi): Likewise.
      
      From-SVN: r270505
      Richard Biener committed
    • re PR target/89093 (C++ exception handling clobbers d8 VFP register) · 48528842
      	PR target/89093
      	* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Diagnose
      	if used with general-regs-only.
      	(arm_conditional_register_usage): Don't add non-general regs if
      	general-regs-only.
      	(arm_valid_target_attribute_rec): Handle general-regs-only.
      	* config/arm/arm.h (TARGET_HARD_FLOAT): Return false if
      	general-regs-only.
      	(TARGET_HARD_FLOAT_SUB): Define.
      	(TARGET_SOFT_FLOAT): Define as negation of TARGET_HARD_FLOAT_SUB.
      	(TARGET_REALLY_IWMMXT): Add && !TARGET_GENERAL_REGS_ONLY.
      	(TARGET_REALLY_IWMMXT2): Likewise.
      	* config/arm/arm.opt: Add -mgeneral-regs-only.
      	* doc/extend.texi: Document ARM general-regs-only target.
      	* doc/invoke.texi: Document ARM -mgeneral-regs-only.
      libgcc/
      	* config/arm/pr-support.c: Add #pragma GCC target("general-regs-only").
      	* config/arm/unwind-arm.c: Likewise.
      	* unwind-c.c (PERSONALITY_FUNCTION): Add general-regs-only target
      	attribute for ARM.
      libobjc/
      	* exception.c (PERSONALITY_FUNCTION): Add general-regs-only target
      	attribute for ARM.
      libphobos/
      	* libdruntime/gcc/deh.d: Import gcc.attribute.
      	(personality_fn_attributes): New enum.
      	(scanLSDA, CONTINUE_UNWINDING, gdc_personality, __gdc_personality):
      	Add @personality_fn_attributes.
      libstdc++-v3/
      	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
      	general-regs-only target attribute for ARM.
      
      Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r270504
      Ramana Radhakrishnan committed
    • Fix whitespace in ChangeLog · 70265a0c
      From-SVN: r270503
      Jonathan Wakely committed
    • Fix std::variant regression caused by never-valueless optimization · 47a468bd
      A regression was introduced by the recent changes to provide the strong
      exception safety guarantee for "never valueless" types that have O(1),
      non-throwing move assignment. The problematic code is:
      
        else if constexpr (__detail::__variant::_Never_valueless_alt<type>())
          {
            // This construction might throw:
            variant __tmp(in_place_index<_Np>, __il,
                          std::forward<_Args>(__args)...);
            // But _Never_valueless_alt<type> means this won't:
            *this = std::move(__tmp);
          }
      
      When the variant is not assignable, the assignment is ill-formed, so
      should not be attempted. When the variant has a copy assignment operator
      but not a move assignment operator, the assignment performs a copy
      assignment and that could throw, so should not be attempted.
      
      The solution is to only take that branch when the variant has a move
      assignment operator, which is determined by the _Traits::_S_move_assign
      constant. When that is false the strong exception safety guarantee is
      not possible, and so the __never_valueless function should also depend
      on _S_move_assign.
      
      While testing the fixes for this I noticed that the partial
      specialization _Never_valueless_alt<basic_string<C,T,A>> incorrectly
      assumed that is_nothrow_move_constructible<basic_string<C,T,A>> is
      always true, but that's wrong for fully-dynamic COW strings. Fix the
      partial specialization, and improve the comment describing
      _Never_valueless_alt to be clear it depends on move construction as well
      as move assignment.
      
      Finally, I also observed that _Variant_storage<false, T...>::_M_valid()
      was not taking advantage of the __never_valueless<T...>() function to
      avoid a runtime check. Only the _Variant_storage<true, T...>::_M_valid()
      function was using __never_valueless. That is also fixed.
      
      	PR libstdc++/87431
      	* include/bits/basic_string.h (_Never_valueless_alt): Make partial
      	specialization also depend on is_nothrow_move_constructible.
      	* include/std/variant (__detail::__variant::__never_valueless()):
      	Only true if the variant would have a move assignment operator.
      	(__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
      	Check __never_valueless<T...>().
      	(variant::emplace): Only perform non-throwing move assignments
      	for never-valueless alternatives if the variant has a move assignment
      	operator.
      	* testsuite/20_util/variant/compile.cc: Check that never-valueless
      	types can be emplaced into non-assignable variants.
      	* testsuite/20_util/variant/run.cc: Check that never-valueless types
      	don't get copied when emplaced into non-assignable variants.
      
      From-SVN: r270502
      Jonathan Wakely committed
    • Make some std::variant helper functions noexcept · be46043e
      	* include/std/variant (__detail::__variant::__ref_cast): Remove
      	unused function.
      	(__detail::__variant::_Uninitialized::_M_get)
      	(__detail::__variant::__get)
      	(__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
      
      From-SVN: r270501
      Jonathan Wakely committed
    • re PR tree-optimization/90078 (ICE with deep templates caused by overflow) · 4b5689aa
      	PR tree-optimization/90078
      	* tree-ssa-loop-ivopts.c (comp_cost::operator +,-,+=,-+,/=,*=): Add
      	checks for infinite_cost overflow.
      
      	gcc/testsuite
      	* gcc/testsuite/g++.dg/tree-ssa/pr90078.C: New test.
      
      	Also fix typo in ChangeLog entry for revision 270499.
      
      From-SVN: r270500
      Bin Cheng committed
    • re PR tree-optimization/90021 (ICE in index_in_loop_nest, at tree-data-ref.h:587 since r270203) · 9e14603d
      	PR tree-optimization/92001
      	* tree-chrec.c (evolution_function_is_univariate_p): New parameter
      	and check univariate against it.
      	* tree-chrec.h (evolution_function_is_univariate_p): New parameter.
      	* tree-data-ref.c (add_other_self_distances): Pass new argument.
      
      	gcc/testsuite
      	* gcc/testsuite/gfortran.dg/pr90021.f90: New test.
      
      From-SVN: r270499
      Bin Cheng committed
    • Daily bump. · 6e8fc175
      From-SVN: r270498
      GCC Administrator committed
  3. 22 Apr, 2019 7 commits
  4. 21 Apr, 2019 2 commits
    • re PR d/90130 (gdc.test/runnable/test12.d FAILs) · 3595df34
          PR d/90130
      d/dmd: Merge upstream dmd 065fbd452
      
      Fixes endian bug in CTFE, and corrects tests in the D2 testsuite that
      failed on big endian targets.
      
      Initial patch by Robin Dapp.
      
      Reviewed-on: https://github.com/dlang/dmd/pull/9665
      
      From-SVN: r270485
      Iain Buclaw committed
    • LRA: Revert "Remove useless move insns" · f94302e9
      Useless move insn removal was added to LRA just to avoid wasting CPU
      cycles on such insn processing afterwards.  Such insns are removed
      anyway later in the pass pipeline.  The CPU time savings are tiny but
      the removal creates too many problems including PR target/90178.
      Vladimir pre-approved the patch to remove the code:
      
      https://gcc.gnu.org/ml/gcc-patches/2019-04/msg00834.html
      
      gcc/
      
      	PR target/90178
      	Revert:
      	2018-11-21  Uros Bizjak  <ubizjak@gmail.com>
      
      	Revert the revert:
      	2013-10-26  Vladimir Makarov  <vmakarov@redhat.com>
      
      	Revert:
      	2013-10-25  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* lra-spills.c (lra_final_code_change): Remove useless move insns.
      
      gcc/testsuite/
      
      	PR target/90178
      	* gcc.target/i386/pr90178.c: New test.
      
      From-SVN: r270484
      H.J. Lu committed