Iain Buclaw [Wed, 24 Apr 2019 18:57:36 +0000 (18:57 +0000)]
libphobos: Fix FAIL phobos.exp/core.time on CentOS 5.11, Linux 2.6.18
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
Clement Chigot [Wed, 24 Apr 2019 18:03:47 +0000 (18:03 +0000)]
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
Jonathan Wakely [Wed, 24 Apr 2019 16:25:21 +0000 (17:25 +0100)]
Use __and_v<...> instead of __and_<...>::value
* 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 [Wed, 24 Apr 2019 16:25:17 +0000 (17:25 +0100)]
Finish implementing "Treating Unnecessary decay" (P0777R1)
* 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
Jakub Jelinek [Wed, 24 Apr 2019 15:49:36 +0000 (17:49 +0200)]
re PR target/90193 (asm goto with TLS "m" input operand generates incorrect assembler in O1 and O2)
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
Jonathan Wakely [Wed, 24 Apr 2019 15:17:53 +0000 (16:17 +0100)]
Fix basic_string_view typedefs and enforce preconditions
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 [Wed, 24 Apr 2019 15:17:43 +0000 (16:17 +0100)]
PR libstdc++/90220 Fix std::any_cast for array types
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
Iain Buclaw [Wed, 24 Apr 2019 14:17:34 +0000 (14:17 +0000)]
libphobos: Skip curl tests if libcurl is not installed on the target.
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
Andreas Krebbel [Wed, 24 Apr 2019 13:40:38 +0000 (13:40 +0000)]
S/390: Fix PR89952 incorrect CFI
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
Ian Lance Taylor [Wed, 24 Apr 2019 12:45:45 +0000 (12:45 +0000)]
re PR target/89093 (C++ exception handling clobbers d8 VFP register)
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
Iain Buclaw [Wed, 24 Apr 2019 11:04:22 +0000 (11:04 +0000)]
libphobos: Fix assert in core.sys.posix.sys.stat for aarch64/ilp32.
Merges upstream druntime
51365217.
Reviewed-on: https://github.com/dlang/druntime/pull/2579
From-SVN: r270541
Claudiu Zissulescu [Wed, 24 Apr 2019 10:15:47 +0000 (12:15 +0200)]
[ARC][COMMITTED] Fix typos.
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
Richard Biener [Wed, 24 Apr 2019 10:08:07 +0000 (10:08 +0000)]
call.c (null_ptr_cst_p): Order checks according to expensiveness.
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
Jonathan Wakely [Wed, 24 Apr 2019 09:46:07 +0000 (10:46 +0100)]
PR libstdc++/90220 Fix std::any_cast for function pointers
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
Jakub Jelinek [Wed, 24 Apr 2019 09:27:14 +0000 (11:27 +0200)]
re PR target/90187 (ICE in extract_insn, at recog.c:2304 x86_64)
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
Iain Buclaw [Wed, 24 Apr 2019 09:15:59 +0000 (09:15 +0000)]
d/dmd: Merge upstream dmd
423758078
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
Ramana Radhakrishnan [Wed, 24 Apr 2019 08:16:07 +0000 (08:16 +0000)]
re PR target/89093 (C++ exception handling clobbers d8 VFP register)
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
Jakub Jelinek [Wed, 24 Apr 2019 08:14:50 +0000 (10:14 +0200)]
re PR tree-optimization/90208 (error: EH landing pad label)
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 [Wed, 24 Apr 2019 08:13:29 +0000 (10:13 +0200)]
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
Iain Buclaw [Wed, 24 Apr 2019 02:04:04 +0000 (02:04 +0000)]
libphobos: Fix link build errors when compiling with unsupported options
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
GCC Administrator [Wed, 24 Apr 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270530
Jonathan Wakely [Tue, 23 Apr 2019 23:17:52 +0000 (00:17 +0100)]
Avoid -Wcatch-value warning in testsuite
* testsuite/20_util/variant/run.cc: Catch exception by reference to
prevent -Wcatch-value warning.
From-SVN: r270527
Jonathan Wakely [Tue, 23 Apr 2019 23:01:35 +0000 (00:01 +0100)]
Fix whitespace in ChangeLog
From-SVN: r270526
Jonathan Wakely [Tue, 23 Apr 2019 23:01:12 +0000 (00:01 +0100)]
Implement LWG 2904 for std::variant assignment
* 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
Iain Buclaw [Tue, 23 Apr 2019 22:53:35 +0000 (22:53 +0000)]
libphobos: Add AArch64 Linux as a supported target.
libphobos/ChangeLog:
2019-04-24 Iain Buclaw <ibuclaw@gdcproject.org>
* configure.tgt: Add aarch64*-*-linux* as a supported target.
From-SVN: r270524
Iain Buclaw [Tue, 23 Apr 2019 22:53:25 +0000 (22:53 +0000)]
libphobos: Add D support for S/390 Linux
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 [Tue, 23 Apr 2019 22:53:12 +0000 (22:53 +0000)]
libphobos: Add D support for RISC-V Linux
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
Thomas Rodgers [Tue, 23 Apr 2019 21:03:24 +0000 (21:03 +0000)]
Document PSTL linker flags
* doc/xml/manual/using.xml: Add PSTL linker flags to table
3.1.
From-SVN: r270521
Joseph Myers [Tue, 23 Apr 2019 21:03:01 +0000 (22:03 +0100)]
Update .po files.
* 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
Iain Buclaw [Tue, 23 Apr 2019 20:08:46 +0000 (20:08 +0000)]
d: Add support for compiling without libphobos library.
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
Sudakshina Das [Tue, 23 Apr 2019 15:51:25 +0000 (15:51 +0000)]
[GCC, AARCH64] Add GNU note section with BTI and PAC.
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
Iain Buclaw [Tue, 23 Apr 2019 15:19:55 +0000 (15:19 +0000)]
re PR d/90079 (SEGV in _aaKeys, _aaValues on 32-bit SPARC)
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
Jeff Law [Tue, 23 Apr 2019 14:39:50 +0000 (08:39 -0600)]
* lib/target-supports.exp
(check_effective_target_keeps_null_pointer_checks): Add cr16.
From-SVN: r270513
Roman Zhuykov [Tue, 23 Apr 2019 13:14:57 +0000 (13:14 +0000)]
modulo-sched: prevent division by zero (PR87979)
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 [Tue, 23 Apr 2019 12:53:43 +0000 (12:53 +0000)]
modulo-sched: fix branch scheduling issue (PR84032)
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
Jonathan Wakely [Tue, 23 Apr 2019 12:48:28 +0000 (13:48 +0100)]
Implement correct std::variant triviality rules from P0602R4
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 [Tue, 23 Apr 2019 12:48:18 +0000 (13:48 +0100)]
PR libstdc++/90165 constrain variant(T&&) constructor
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 [Tue, 23 Apr 2019 10:27:14 +0000 (11:27 +0100)]
Corrections for C++2a std::unwrap_reference traits
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
Richard Biener [Tue, 23 Apr 2019 10:10:10 +0000 (10:10 +0000)]
re PR debug/90131 (wrong debug info at -O3)
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
Ramana Radhakrishnan [Tue, 23 Apr 2019 10:03:41 +0000 (10:03 +0000)]
re PR target/89093 (C++ exception handling clobbers d8 VFP register)
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
Jonathan Wakely [Tue, 23 Apr 2019 09:55:36 +0000 (10:55 +0100)]
Fix whitespace in ChangeLog
From-SVN: r270503
Jonathan Wakely [Tue, 23 Apr 2019 09:55:33 +0000 (10:55 +0100)]
Fix std::variant regression caused by never-valueless optimization
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 [Tue, 23 Apr 2019 09:55:28 +0000 (10:55 +0100)]
Make some std::variant helper functions noexcept
* 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
Bin Cheng [Tue, 23 Apr 2019 04:07:46 +0000 (04:07 +0000)]
re PR tree-optimization/90078 (ICE with deep templates caused by overflow)
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 [Tue, 23 Apr 2019 03:54:59 +0000 (03:54 +0000)]
re PR tree-optimization/90021 (ICE in index_in_loop_nest, at tree-data-ref.h:587 since r270203)
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
GCC Administrator [Tue, 23 Apr 2019 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270498
Steven G. Kargl [Mon, 22 Apr 2019 21:00:40 +0000 (21:00 +0000)]
re PR fortran/90166 (Compiler Fails at Assembler)
2019-04-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/90166
* decl.c (in_module_or_interface): New function to check that the
current state is in a module, submodule, or interface.
(gfc_match_prefix): Use it.
2019-04-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/90166
* gfortran.dg/submodule_22.f08: Add additional dg-error comments.
From-SVN: r270495
Jason Merrill [Mon, 22 Apr 2019 19:16:46 +0000 (15:16 -0400)]
PR c++/87366 - wrong error with alias template.
With this testcase the code in template_args_equal to treat aliases as
distinct wasn't sufficient, because it only looked at the top level, whereas
here we have a reference to the alias. So let's also handle treating them
as distinct in structural_comptypes. For GCC 10 I have a more comprehensive
patch, but for GCC 9 let's go with this smaller change.
* typeck.c (structural_comptypes): When comparing_specializations,
aliases are unequal.
(comptypes): When comparing_specializations, do structural
comparison.
From-SVN: r270494
Roman Zhuykov [Mon, 22 Apr 2019 16:05:36 +0000 (16:05 +0000)]
Add myself to MAINTAINERS
2019-04-22 Roman Zhuykov <zhroma@ispras.ru>
* MAINTAINERS (Various Maintainers): Remove Ayal Zaks and add myself
as modulo-scheduler maintainer.
From-SVN: r270492
Iain Buclaw [Mon, 22 Apr 2019 13:46:25 +0000 (13:46 +0000)]
libphobos: Merge upstream phobos
b538f758a
Fixes endian bugs in std.uni, and corrects unit-tests that failed on
version(BigEndian) targets.
Initial patch by Robin Dapp.
Reviewed-on: https://github.com/dlang/phobos/pull/6975
From-SVN: r270491
Iain Buclaw [Mon, 22 Apr 2019 13:46:13 +0000 (13:46 +0000)]
libphobos: Merge upstream druntime
109f0f2e
Backports more extern(C) bindings and platform ports.
Reviewed-on: https://github.com/dlang/druntime/pull/2569
From-SVN: r270490
Paul Thomas [Mon, 22 Apr 2019 06:50:33 +0000 (06:50 +0000)]
re PR fortran/57284 ([OOP] ICE with find_array_spec for polymorphic arrays)
2019-04-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/57284
* resolve.c (find_array_spec): If this is a class expression
and the symbol and component array specs are the same, this is
not an error.
*trans-intrinsic.c (gfc_conv_intrinsic_size): If a class symbol
argument, has no namespace, it has come from the interface
mapping and the _data component must be accessed directly.
2019-04-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/57284
* gfortran.dg/class_70.f03
From-SVN: r270489
GCC Administrator [Mon, 22 Apr 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270488
Iain Buclaw [Sun, 21 Apr 2019 20:26:12 +0000 (20:26 +0000)]
re PR d/90130 (gdc.test/runnable/test12.d FAILs)
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
H.J. Lu [Sun, 21 Apr 2019 18:23:00 +0000 (18:23 +0000)]
LRA: Revert "Remove useless move insns"
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
Iain Buclaw [Sun, 21 Apr 2019 10:21:07 +0000 (10:21 +0000)]
re PR d/90064 (InSituRegion lacks SPARC64 support)
PR d/90064
libphobos: Merge upstream phobos
428460ddd
Defines growDownwards on SPARC64, initial patch by Rainer Orth.
Backports another fix to std.process, allowing permissions tests to be
skipped when running as root.
Reviewed-on: https://github.com/dlang/phobos/pull/6962
From-SVN: r270483
Iain Buclaw [Sun, 21 Apr 2019 10:02:02 +0000 (10:02 +0000)]
libphobos: Merge upstream druntime
4b2674b3
Adds version (BacktraceExternal) for using libexecinfo instead of
internal implementation on FreeBSD, NetBSD, and DragonFly.
Reviewed-on: https://github.com/dlang/druntime/pull/2560
From-SVN: r270482
Iain Sandoe [Sun, 21 Apr 2019 08:33:19 +0000 (08:33 +0000)]
MAINTAINERS - add iains as darwin co-maintainer.
2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
* MAINTAINERS: Add myself as co-maintainer for Darwin.
From-SVN: r270481
Iain Sandoe [Sun, 21 Apr 2019 08:25:44 +0000 (08:25 +0000)]
Fix test fails on powerpc-darwin.
The current implementation of “speculation_barrier”
and “group_end_nop” insns emit hard-wired register
names which causes tests using them to fail on Darwin,
at least, which uses “rNN” instead of “NN”.
The patch makes the register names for these insns use
the operand output mechanism to substitute the
appropriate variant when needed.
gcc/
2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/rs6000.md (group_end_nop): Emit insn register
names using operand format, rather than hard-wired.
(speculation_barrier): Likewise.
From-SVN: r270480
Iain Sandoe [Sun, 21 Apr 2019 08:14:47 +0000 (08:14 +0000)]
libstdc++-v3 Skip tests on Darwin8-10.
These earlier Darwin versions have “FP_≈” inside a
comment in architecture/{ppc,i386}/math.h, which is
included by math.h which causes the tests to fail.
The intent of the tests (i.e. to ensure that the
library itself does not emit non-ascii) is covered
by other platforms, including later Darwin editions.
2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
* testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
to Darwin10.
* testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
* testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
* testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
* testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
From-SVN: r270479
Iain Buclaw [Sun, 21 Apr 2019 07:03:32 +0000 (07:03 +0000)]
d: Use semanticRun to prevent declaration pass from running multiple times.
This shouldn't happen during normal traversal of the AST provided from
the front-end, however as there are some cases where declarations need
to be visited out of order, such as what is being done in PR d/89017, it
then becomes necessary to guard against this.
gcc/d/ChangeLog:
2019-04-21 Iain Buclaw <ibuclaw@gdcproject.org>
* decl.cc (DeclVisitor::visit(Import)): Set semanticRun after
completion, guard against being called more than once.
(DeclVisitor::visit(StructDeclaration)): Likewise.
(DeclVisitor::visit(ClassDeclaration)): Likewise.
(DeclVisitor::visit(InterfaceDeclaration)): Likewise.
(DeclVisitor::visit(VarDeclaration)): Likewise.
(DeclVisitor::visit(TypeInfoDeclaration)): Likewise.
From-SVN: r270478
Iain Buclaw [Sun, 21 Apr 2019 07:03:22 +0000 (07:03 +0000)]
d: Ensure all unittests are registered against the original module.
As any unittest functions registered against the testing module when
compiling with -fbuilding-libphobos-tests are ignored during the
generation of the ModuleInfo data.
gcc/d/ChangeLog:
2019-04-21 Iain Buclaw <ibuclaw@gdcproject.org>
* modules.cc (register_module_decl): Don't register unittests against
the ModuleInfo symbol for -fbuilding-libphobos-tests.
From-SVN: r270477
Sandra Loosemore [Sun, 21 Apr 2019 02:01:36 +0000 (22:01 -0400)]
pr89009.C: Add dg-require-effective-target fpic.
2019-04-20 Sandra Loosemore <sandra@codesourcery.com>
gcc/testsuite/
* g++.dg/ipa/pr89009.C: Add dg-require-effective-target fpic.
From-SVN: r270476
GCC Administrator [Sun, 21 Apr 2019 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270475
Thomas Rodgers [Sat, 20 Apr 2019 23:20:03 +0000 (23:20 +0000)]
Delegate PSTL configuration to pstl/pstl_config.h
* include/bits/c++config: Remove explicit PSTL configuration
macros and use definitions from <pstl/pstl_config.h>.
From-SVN: r270472
Thomas Rodgers [Sat, 20 Apr 2019 22:45:58 +0000 (22:45 +0000)]
Cleanup algorithm implementations
* include/pstl/glue_algorithm_impl.h (stable_sort): Forward
execution policy.
(mismatch): Forward execution policy.
(equal): Qualify call to std::equal().
(partial_sort): Forward execution policy.
(inplace_merge): Forward execution policy.
From-SVN: r270471
Iain Buclaw [Sat, 20 Apr 2019 17:14:50 +0000 (17:14 +0000)]
libphobos: core.atomic should have fallback when there's no libatomic.
libphobos/ChangeLog:
2019-04-20 Iain Buclaw <ibuclaw@gdcproject.org>
PR d/89293
* libdruntime/core/atomic.d (casImpl): Remove static assert for
GNU_Have_Atomics, add static path to handle missing atomic support.
(atomicLoad): Likewise.
(atomicStore): Likewise.
(atomicFence): Likewise.
(atomicMutexHandle, AtomicMutex): Declare types.
(_getAtomicMutex): New function.
(getAtomicMutex): Declare.
From-SVN: r270470
Jason Merrill [Sat, 20 Apr 2019 06:18:39 +0000 (02:18 -0400)]
PR c++/90190 - CTAD with list-constructor.
The passage quoted talks about an initializer list containing a single
expression, but a braced-init-list is not an expression.
* pt.c (do_class_deduction): Don't try the single element deduction
if the single element is also a braced list.
From-SVN: r270468
Jason Merrill [Sat, 20 Apr 2019 06:18:30 +0000 (02:18 -0400)]
PR c++/90171 - ICE with destroying delete with size_t parm.
The problem here was that "second parm is size_t" is false for a destroying
sized delete. So let's introduce sized_deallocation_fn_p when that's what
we're asking, and reserve second_parm_is_size_t for the specific case of
warning about possible confusion with placement delete.
* call.c (sized_deallocation_fn_p): New. Use it instead of
second_parm_is_size_t in most cases.
(second_parm_is_size_t): Don't check for aligned.
From-SVN: r270467
GCC Administrator [Sat, 20 Apr 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270466
Thomas Rodgers [Fri, 19 Apr 2019 22:44:11 +0000 (22:44 +0000)]
Improve implementation of parallel equal()
* include/pstl/algorithm_impl.h
(__internal::__brick_equal): use "4 iterator" version of
std::equal().
(__internal::__brick_equal): use simd for random access
iterators on unsequenced execution policies.
(__internal::__pattern_equal): add "4 iterator" version
(__internal::__pattern_equal): dispatch to simd __brick_equal
for vector-only execution policies.
(__internal::__pattern_equal): dispatch to __parallel_or for
parallel execution policies.
* include/pstl/glue_algorithm_impl.h
(std::equal): dispatch to "4 iterator" version of
__internal::__pattern_equal().
From-SVN: r270463
Jakub Jelinek [Fri, 19 Apr 2019 19:19:51 +0000 (21:19 +0200)]
* de.po, es.po, fr.po, sv.po: Update.
From-SVN: r270462
Segher Boessenkool [Fri, 19 Apr 2019 16:58:01 +0000 (18:58 +0200)]
tree-call-cdce: If !HONOR_NANS do not make code with NaNs (PR88055)
If we don't HONOR_NANS we should not try to use any unordered
comparison results. Best case those will just be optimized away;
realistically, they ICE. For example, the rs6000 backend has some
code that specifically checks we never do this.
PR tree-optimization/88055
* tree-call-cdce.c (comparison_code_if_no_nans): New function.
(gen_one_condition): Use it if !HONOR_NANS.
From-SVN: r270460
Paolo Carlini [Fri, 19 Apr 2019 15:36:20 +0000 (15:36 +0000)]
re PR c++/89900 (ICE: Segmentation fault (in check_instantiated_arg))
/cp
2019-04-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/89900
* pt.c (fn_type_unification): When handling null explicit
arguments do not special case non-parameter packs.
/testsuite
2019-04-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/89900
* g++.dg/cpp0x/pr89900-1.C: New.
* g++.dg/cpp0x/pr89900-2.C: Likewise.
* g++.dg/cpp0x/pr89900-3.C: Likewise.
* g++.dg/cpp0x/pr89900-4.C: Likewise.
From-SVN: r270459
Ian Lance Taylor [Fri, 19 Apr 2019 14:20:16 +0000 (14:20 +0000)]
libgo/go/syscall: add SockAddrDatalink on AIX
This patch is required in order to build golang.org/x/net. The
corresponding Go Toolchain patch is CL 170537.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/172898
From-SVN: r270458
Jakub Jelinek [Fri, 19 Apr 2019 11:58:11 +0000 (13:58 +0200)]
re PR middle-end/90139 (ICE in emit_block_move_hints, at expr.c:1601)
PR middle-end/90139
* tree-outof-ssa.c (get_temp_reg): If reg_mode is BLKmode, return
assign_temp instead of gen_reg_rtx.
* gcc.c-torture/compile/pr90139.c: New test.
From-SVN: r270457
Jakub Jelinek [Fri, 19 Apr 2019 11:57:23 +0000 (13:57 +0200)]
re PR c++/90138 (ICE on invalid in contains_struct_check())
PR c++/90138
* pt.c (process_template_parm): Set decl to pushdecl result. If
!is_non_type, also set parm to that.
* g++.dg/template/pr90138.C: New test.
From-SVN: r270456
Jakub Jelinek [Fri, 19 Apr 2019 11:56:07 +0000 (13:56 +0200)]
re PR c/89888 (When switch controlling expression is promoted from type narrower than int, GCC does not diagnose identical cases)
PR c/89888
* c-common.h (c_add_case_label): Remove orig_type and outside_range_p
arguments.
(c_do_switch_warnings): Remove outside_range_p argument.
* c-common.c (check_case_bounds): Removed.
(c_add_case_label): Remove orig_type and outside_range_p arguments.
Don't call check_case_bounds. Fold low_value as well as high_value.
* c-warn.c (c_do_switch_warnings): Remove outside_range_p argument.
Check for case labels outside of range of original type here and
adjust them.
c/
* c-typeck.c (struct c_switch): Remove outside_range_p member.
(c_start_case): Don't clear it.
(do_case): Adjust c_add_case_label caller.
(c_finish_case): Adjust c_do_switch_warnings caller.
cp/
* decl.c (struct cp_switch): Remove outside_range_p member.
(push_switch): Don't clear it.
(pop_switch): Adjust c_do_switch_warnings caller.
(finish_case_label): Adjust c_add_case_label caller.
testsuite/
* c-c++-common/pr89888.c: New test.
* g++.dg/torture/pr40335.C: Change dg-bogus into dg-warning.
Don't expect -Wswitch-unreachable warning.
From-SVN: r270455
Christophe Lyon [Fri, 19 Apr 2019 09:08:49 +0000 (09:08 +0000)]
PR translation/90118 Missing space between words
2019-04-19 Christophe Lyon <christophe.lyon@linaro.org>
PR translation/90118
contrib/
* check-internal-format-escaping.py: Check that %< is not next to
a word.
gcc/
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Add missing space before %<.
From-SVN: r270454
Jakub Jelinek [Fri, 19 Apr 2019 08:24:05 +0000 (10:24 +0200)]
re PR c++/90108 (ICE: Segmentation fault (in c_tree_chain_next))
PR c++/90108
* c-decl.c (merge_decls): If remove is main variant and
DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
variant that has newdecl as TYPE_NAME if any.
* decl.c (duplicate_decls): If remove is main variant and
DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
variant that has newdecl as TYPE_NAME if any.
* c-c++-common/pr90108.c: New test.
From-SVN: r270453
GCC Administrator [Fri, 19 Apr 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270451
Peter Bergner [Thu, 18 Apr 2019 22:14:17 +0000 (22:14 +0000)]
re PR rtl-optimization/87871 (testcases fail after r265398 on arm)
PR rtl-optimization/87871
* ira-lives.c (make_object_dead): Don't add conflicts to
TOTAL_CONFLICT_HARD_REGS for register ignore_reg_for_conflicts.
From-SVN: r270448
Martin Sebor [Thu, 18 Apr 2019 20:26:07 +0000 (20:26 +0000)]
PR middle-end/89797 - ICE on a vector_size (1LU << 33) int variable
gcc/ChangeLog:
* tree.h (TYPE_VECTOR_SUBPARTS): Use HOST_WIDE_INT_1U.
* config/aarch64/aarch64.c (aarch64_simd_vector_alignment): Avoid
assuming type size fits in SHWI.
From-SVN: r270447
Jan Hubicka [Thu, 18 Apr 2019 17:03:00 +0000 (19:03 +0200)]
re PR ipa/85051 (ICE: in edge_badness, at ipa-inline.c:1035 with flattening recursive calls)
PR ipa/85051
* ipa-inline.c (flatten_function): New parameter UPDATE.
(ipa_inline, early_inliner): Use it.
From-SVN: r270446
Jason Merrill [Thu, 18 Apr 2019 16:50:10 +0000 (12:50 -0400)]
PR c++/87554 - ICE with extern template and reference member.
The removed code ended up setting DECL_INITIAL to the INIT_EXPR returned by
split_nonconstant_init, which makes no sense. This code was added back in
1996, so any rationale is long lost.
* decl.c (cp_finish_decl): Don't set DECL_INITIAL of external vars.
From-SVN: r270445
Segher Boessenkool [Thu, 18 Apr 2019 13:38:55 +0000 (15:38 +0200)]
move ChangeLog entry to the correct file
From-SVN: r270444
Richard Sandiford [Thu, 18 Apr 2019 12:30:36 +0000 (12:30 +0000)]
Fix UB in int_const_binop
When testing PR 85164, the baseline bootstrap-ubsan results had
a lot of failures from int_const_binop. This is because with the
new overflow handling we can sometimes do:
poly_res = res;
on an uninitialised res.
2019-04-18 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* fold-const.c (int_const_binop): Return early on failure.
From-SVN: r270443
Richard Sandiford [Thu, 18 Apr 2019 12:29:56 +0000 (12:29 +0000)]
Fix two ubsan failures (PR85164)
Two fixes for UB when handling very large offsets. The calculation in
force_int_to_mode would have been correct if signed integers used modulo
arithmetic, so just switch to unsigned types. The calculation in
rtx_addr_can_trap_p_1 didn't handle overflow properly, so switch to
known_subrange_p instead (which is supposed to handle all cases).
2019-04-18 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR middle-end/85164
* combine.c (force_int_to_mode): Cast the argument rather than
the result of known_alignment.
* rtlanal.c (rtx_addr_can_trap_p_1): Use known_subrange_p.
gcc/testsuite/
PR middle-end/85164
* gcc.dg/pr85164-1.c, gcc.dg/pr85164-2.c: New tests.
From-SVN: r270442
Richard Biener [Thu, 18 Apr 2019 12:02:40 +0000 (12:02 +0000)]
re PR debug/90131 (wrong debug info at -O3)
2019-04-18 Richard Biener <rguenther@suse.de>
PR debug/90131
* tree-cfgcleanup.c (move_debug_stmts_from_forwarder): Split
out from ...
(remove_forwarder_block): ... here.
(remove_forwarder_block_with_phi): Also move debug stmts here.
* gcc.dg/guality/pr90131.c: New testcase.
From-SVN: r270441
Jakub Jelinek [Thu, 18 Apr 2019 10:34:06 +0000 (12:34 +0200)]
Reverted unintended part of previous commit.
From-SVN: r270439
Jakub Jelinek [Thu, 18 Apr 2019 10:28:21 +0000 (12:28 +0200)]
re PR translation/79183 (Hard coded plurals in gimple-ssa-sprintf.c:2050)
PR translation/79183
* gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
inform where appropriate.
From-SVN: r270438
Richard Biener [Thu, 18 Apr 2019 07:40:35 +0000 (07:40 +0000)]
tree.c (get_qualified_type): Put found type variants at the head of the variant list.
2019-04-18 Richard Biener <rguenther@suse.de>
* tree.c (get_qualified_type): Put found type variants at the
head of the variant list.
From-SVN: r270437
Iain Sandoe [Thu, 18 Apr 2019 07:40:08 +0000 (07:40 +0000)]
MAINTAINERS: Update email address
2019-04-18 Iain Sandoe <iain@sandoe.co.uk>
* MAINTAINERS: Update my email address.
From-SVN: r270436
Erik Schnetter [Thu, 18 Apr 2019 06:53:21 +0000 (06:53 +0000)]
re PR bootstrap/89864 (gcc fails to build/bootstrap with XCode 10.2)
fix PR89864
2019-04-18 Erik Schnetter <schnetter@gmail.com>
Jakub Jelinek <jakub@redhat.com>
Iain Sandoe <iain@sandoe.co.uk>
PR bootstrap/89864
* inclhack.def (darwin_ucred__Atomic): New, work around _Atomic keyword
use in headers included by C++.
* fixincl.x: Regenerated.
Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r270435
Ian Lance Taylor [Thu, 18 Apr 2019 04:11:22 +0000 (04:11 +0000)]
re PR go/90110 (libgo fails to build against glibc 2.19)
PR go/90110
compiler: use temporary to avoid early destruction
The code was passing a substr directly to strtol, and then checking
the *end value returned by strtol. But the substr could be destroyed
as soon as strtol returns, making the test of *end invalid.
Also fix an incorrect test of the string index rather than the value.
Fixes https://gcc.gnu.org/PR90110
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/172663
From-SVN: r270434
Jason Merrill [Thu, 18 Apr 2019 03:32:24 +0000 (23:32 -0400)]
PR c++/90047 - ICE with enable_if alias template.
In order to make alias templates useful for SFINAE we instantiate them under
the prevailing 'complain' argument, so an error encountered while
instantiating during SFINAE context is silent. The problem in this PR comes
when we later look up the erroneous instantiation and don't give an error at
that point. Fixed by not adding an erroneous instantiation to the hash
table, so we instantiate it again when needed and get the error. This
required changes to a number of tests, which previously said "substitution
failed:" with no explanation of what the failure was; now we properly
explain.
* pt.c (tsubst_decl) [TYPE_DECL]: Don't put an erroneous decl in the
hash table when we're in SFINAE context.
From-SVN: r270433
GCC Administrator [Thu, 18 Apr 2019 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270430
Jonathan Wakely [Wed, 17 Apr 2019 21:47:20 +0000 (22:47 +0100)]
PR libstdc++/90105 make forward_list::sort stable
While testing the fix I also discovered that operator== assumes the
elements are comparable with operator!= which is not required.
PR libstdc++/90105
* include/bits/forward_list.h (operator==): Do not use operator!= to
compare elements.
(forward_list<T, A>::sort(Comp)): When elements are equal take the one
earlier in the list, so that sort is stable.
* testsuite/23_containers/forward_list/operations/90105.cc: New test.
* testsuite/23_containers/forward_list/comparable.cc: Test with
types that meet the minimum EqualityComparable and LessThanComparable
requirements. Remove irrelevant comment.
From-SVN: r270427
Segher Boessenkool [Wed, 17 Apr 2019 21:11:00 +0000 (23:11 +0200)]
rs6000: Remove a comma in a debug string
It is a bit confusing, it looks as if the compiler tried to print
something there.
* config/rs6000/rs6000.c (rs6000_register_move_cost): Fix typo.
From-SVN: r270426
Jonathan Wakely [Wed, 17 Apr 2019 19:27:27 +0000 (20:27 +0100)]
Fix condition for std::variant to be copy constructible
The standard says the std::variant copy constructor is defined as
deleted unless all alternative types are copy constructible, but we were
making it also depend on move constructible. Fix the condition and
enhance the tests to check the semantics with pathological copy-only
types (i.e. supporting copying but having deleted moves).
The enhanced tests revealed a regression in copy assignment for
non-trivial alternative types, where the assignment would not be
performed because the condition in the _Copy_assign_base visitor is
false: is_same_v<remove_reference_t<T&>, remove_reference_t<const T&>>.
* include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
Do not depend on whether all alternative types are move constructible.
(__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
from the operand when deciding whether to perform the assignment.
* testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
with deleted move constructor and deleted move assignment operator.
(default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
behaviour of variants with DeletedMoves as an alternative.
* testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
(move_ctor, move_assign): Check that moving a variant with a
DeletedMoves alternative falls back to copying instead of moving.
From-SVN: r270425