1. 14 May, 2019 28 commits
    • rs6000: New enum epilogue_type · a3d59ce9
      We currently call rs6000_emit_epilogue with a boolean parameter saying
      if this is for a sibcall.  We also need to create epilogues for
      eh_return.  This isn't yet indicated directly: instead, we get an
      eh_return epilogue if crtl->calls_eh_return and this is not a sibcall.
      
      This patch changes things so there is a three-way enum argument.
      
      What is called "normal" now can still actually be "eh_return".  The
      rs6000_emit_epilogue function still uses an "int sibcall" variable
      internally.
      
      
      	* config/rs6000/rs6000-protos.h (rs6000_emit_epilogue): Change
      	arguments.
      	* config/rs6000/rs6000.c (rs6000_emit_epilogue): Change arguments.
      	* config/rs6000/rs6000.md (epilogue_type): New define_enum.
      	(sibcall_epilogue): Adjust.
      	(epilogue): Adjust.
      
      From-SVN: r271184
      Segher Boessenkool committed
    • Remove obsolete Solaris 10 support · ccd1242e
      	libstdc++-v3:
      	* config/os/solaris/solaris2.10: Move to ...
      	* config/os/solaris: ... this.
      	* configure.host (os_include_dir): Adapt.
      	(abi_baseline_pair): Remove Solaris 10 handling.
      	* config/abi/post/i386-solaris2.10: Remove.
      	* config/abi/post/sparc-solaris2.10: Remove.
      	* config/abi/post/i386-solaris2.11: Rename to ...
      	* config/abi/post/i386-solaris: ... this.
      	* config/abi/post/sparc-solaris2.11: Rename to ...
      	* config/abi/post/sparc-solaris: ... this.
      
      	* libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
      	workaround.
      
      	* testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
      	xfail.
      
      	libsanitizer:
      	* configure.ac (have_dl_iterate_phdr): Remove *-*-solaris2.10*
      	handling.
      	* configure: Regenerate.
      
      	libgcc:
      	* config.host: Simplify various *-*-solaris2.1[0-9]* to
      	*-*-solaris2*.
      	* configure.ac: Likewise.
      	* configure: Regenerate.
      
      	* config/i386/sol2-unwind.h (x86_fallback_frame_state): Remove
      	Solaris 10 and Solaris 11 < snv_125 handling.
      
      	libbacktrace:
      	* configure.ac (have_dl_iterate_phdr): Remove *-*-solaris2.10*
      	handling.
      	* configure: Regenerate.
      
      	gcc/testsuite:
      	* gcc.dg/atomic/c11-atomic-exec-4.c: Simplify triplet to
      	*-*-solaris2*.
      	* gcc.dg/atomic/c11-atomic-exec-5.c: Likewise.
      	* gcc.dg/c99-math-double-1.c: Likewise.
      	* gcc.dg/c99-math-float-1.c: Likewise.
      	* gcc.dg/c99-math-long-double-1.c: Likewise.
      	* gcc.misc-tests/linkage.exp: Simplify triplet to
      	x86_64-*-solaris2*.
      
      	* gcc.target/i386/mcount_pic.c: Remove *-*-solaris2.10* && !gld
      	xfail.
      	* gcc.target/i386/pr63620.c: Likewise.
      
      	* lib/target-supports.exp (check_sse_os_support_available): Remove
      	Solaris 9/x86 workaround.
      
      	gcc:
      	* config.gcc: Move *-*-solaris2.10* from obsolete configurations
      	to unsupported ones.
      	Simplify x86_64-*-solaris2.1[0-9]* to x86_64-*-solaris2*.
      	* config.host: Likewise.
      	* config/i386/sol2.h (ASM_COMMENT_START): Remove.
      	* config/sparc/driver-sparc.c (host_detect_local_cpu) [__sun__ &&
      	__svr4__]: Remove "brand" fallback.
      	[!KSTAT_DATA_STRING]: Remove.
      	* configure.ac (gcc_cv_ld_hidden): Simplify *-*-solaris2.1[0-9]*
      	to *-*-solaris2*.
      	(comdat_group): Likewise.
      	(set_have_as_tls): Likewise.
      	(gcc_cv_target_dl_iterate_phdr): Likewise.
      	(gcc_cv_as_shf_merge): Remove Solaris 10/x86 workaround.
      	(gcc_cv_ld_aligned_shf_merge): Remove Solaris 10/SPARC workaround.
      	* configure: Regenerate.
      	* doc/install.texi: Simplify Solaris target triplets.
      	(Specific, i?86-*-solaris2*): Remove Solaris 10 references.
      	(Specific, *-*-solaris2*): Document Solaris 10 removal.
      	Remove Solaris 10 references.
      	Remove obsolete Solaris bug reference.
      	(Specific, sparc-sun-solaris2.10): Remove.
      
      From-SVN: r271183
      Rainer Orth committed
    • Add __raw_visit and __raw_idx_visit, use INVOKE<R> · 956a62aa
      This change simplifies visitation for variants, by using INVOKE<R> for
      the visit<R> form, and explicitly specifying the tag types for raw
      visitation, instead of inferring them from the return types of the
      lambda functions used as visitors.
      
      	* include/std/variant (__visit_with_index): Remove typedef.
      	(__deduce_visit_result): New tag type.
      	(__raw_visit, __raw_idx_visit): New helper functions for "raw"
      	visitation of possibly-valueless variants, forwarding to __do_visit
      	with the relevant tag type.
      	(_Variant_storage<false, _Types...>::_M_reset_impl): Use __raw_visit
      	and make lambda return void.
      	(__variant_construct): Likewise.
      	(_Copy_assign_base::operator=, _Move_assign_base::operator=): Use
      	__raw_idx_visit and make lambda return void.
      	(_Multi_array::__untag_result): Add metafunction to check the function
      	pointer type for a tag type that dictates the kind of visitation.
      	(_Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>):
      	Use decltype(auto) instead of tagged function pointer type.
      	(__gen_vtable_impl): Remove bool non-type parameter and unused
      	_Variant_tuple parameter.
      	(__gen_vtable_impl::__visit_invoke_impl): Remove.
      	(__gen_vtable_impl::__do_visit_invoke): Remove.
      	(__gen_vtable_impl::__do_visit_invoke_r): Remove.
      	(__gen_vtable_impl::__visit_invoke): Use if-constexpr and __invoke_r
      	for the visit<R> case, rather than dispatching to separate functions.
      	(_VARIANT_RELATION_FUNCTION_TEMPLATE): Use __raw_idx_visit and make
      	lambda return void.
      	(variant::swap): Likewise.
      	(__do_visit): Replace two non-type template parameters with a single
      	type parameter, so that the caller must specify the visitor's return
      	type (or one of the tag types).
      	(visit): Deduce a return type from the visitor and use the
      	__deduce_visit_result tag to enforce that all overloads return the
      	same type.
      	(visit<R>): Call __do_visit<R> with explicit result type.
      	(__variant_hash_call_base_impl::operator()): Use __raw_visit and make
      	lambda return void.
      
      From-SVN: r271182
      Jonathan Wakely committed
    • i386.md (any_div): New code iterator. · 00f0898d
      	* config/i386/i386.md (any_div): New code iterator.
      	(paired_mod): New code attribute.
      	(sgnprefix): Handle DIV and UDIV RTXes.
      	(u): Ditto.
      	(<u>divmod<mode>4): Macroize expander from divmod<mode>4
      	and udivmod<mode>4 patterns using any_div code iterator.
      	(divmod splitters): Macroize splitters using any_div code iterator.
      	(*udivmodsi4_pow2_zext_1): Use exactl_log2 in insn condition.
      	(*udivmodsi4_pow2_zext_2): Ditto.
      	(*<u>divmod<mode>4_noext): Macroize insn from *divmod<mode>4_noext
      	and *udivmod<mode>4_noext patterns using any_div code iterator.
      	(*<u>divmod<mode>4_noext_zext_1): Macroize insn from
      	*divmod<mode>4_noext_zext_1 and *udivmod<mode>4_noext_zext_1
      	patterns using any_div code iterator.
      	(*<u>divmod<mode>4_noext_zext_2): Macroize insn from
      	*divmod<mode>4_noext_zext_2 and *udivmod<mode>4_noext_zext_2
      	patterns using any_div code iterator.
      	(<u>divmodhiqi3): Macroize insn from divmodhiqi3 and
      	udivmodhiqi3 patterns using any_extend code iterator.
      
      From-SVN: r271179
      Uros Bizjak committed
    • nonesuch is insufficiently useless (lwg2996) · a73d2fa8
      2019-05-14  Nina Dinka Ranns  <dinka.ranns@gmail.com>
      
      	nonesuch is insufficiently useless (lwg2996)
      	* include/std/type_traits (struct __nonesuch): Added private base
      	class to make __nonesuch not an aggregate and removed deleted default
      	constructor.
      	* include/bits/stl_pair.h (struct __nonesuch_no_braces): Removed.
      	(operator=(const pair&)): Use __nonesuch instead of
      	__nonesuch_no_braces.
      	(operator=(pair&&)): Likewise
      	* include/std/tuple (operator=(const tuple&)): Use __nonesuch instead
      	of __nonesuch_no_braces.
      	(operator=(tuple&&)): Likewise
      	* include/experimental/type_traits (struct nonesuch): Added private
      	base class to make nonesuch not an aggregate and removed deleted
      	default constructor.
      	* testsuite/20_util/nonesuch/nonesuch.cc: New.
      	* testsuite/experimental/type_traits/nonesuch.cc: New.
      
      From-SVN: r271175
      Nina Dinka Ranns committed
    • Use INVOKE<R> in std::function, std::bind and std::packaged_task · 330b1747
      As well as simpifying the code by removing duplication, this means that
      we only need to touch std::__invoke_r if we need to implement changes to
      INVOKE<R>, such as those in P0932R0.
      
      	* include/bits/std_function.h (_Simple_type_wrapper): Remove.
      	(_Function_handler): Remove partial specializations for void return
      	types and pointers to member.
      	(_Function_handler::_M_manager): Adapt to removal of
      	_Simple_type_wrapper.
      	(_Function_handler::_M_invoke): Use __invoke_r instead of __invoke.
      	* include/std/functional (_Bind_result::__enable_if_void)
      	(_Bind_result::__disable_if_void): Remove sfinae helpers.
      	(_Bind_result::__call): Use __invoke_r and remove overloads for void
      	return types.
      	* include/std/future (__future_base::_Task_state::_M_run)
      	(__future_base::_Task_state::_M_run_delayed): Use __invoke_r and
      	change return type of lambda expressions.
      
      From-SVN: r271174
      Jonathan Wakely committed
    • Define std::__invoke_r for INVOKE<R> · 78c2855d
      	* include/bits/invoke.h (__invoke_r): Define new function implementing
      	the INVOKE<R> pseudo-function.
      	* testsuite/20_util/function_objects/invoke/1.cc: Add more tests.
      	* testsuite/20_util/function_objects/invoke/2.cc: New test.
      
      From-SVN: r271173
      Jonathan Wakely committed
    • libgo: reduce overhead for memory/block/mutex profiling · 1ac09ef2
          
          Revise the gccgo version of memory/block/mutex profiling to reduce
          runtime overhead. The main change is to collect raw stack traces while
          the profile is on line, then post-process the stacks just prior to the
          point where we are ready to use the final product. Memory profiling
          (at a very low sampling rate) is enabled by default, and the overhead
          of the symbolization / DWARF-reading from backtrace_full was slowing
          things down relative to the main Go runtime.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/171497
      
      From-SVN: r271172
      Ian Lance Taylor committed
    • Add __is_nothrow_convertible to fix std::is_nothrow_invocable_r · ce9f305e
      The definition of is_nothrow_invocable in terms of is_convertible and
      is_nothrow_constructible is incorrect, because a type could have an
      explicit constructor that means is_nothrow_constructible is true, but
      implicit conversions could use a different constructor that is
      potentially-throwing.
      
      Fix it by adding a C++11 version of C++20's is_nothrow_convertible that
      only considers implicit conversions.
      
      	* include/std/type_traits (__is_nt_convertible_helper): Define it
      	unconditionally, not only for C++20.
      	(__is_nothrow_convertible): Define internal trait for use in C++11.
      	(__is_nt_invocable_impl: Fix by using __is_nothrow_convertible.
      	(is_invocable_r_v, is_nothrow_invocable_r_v): Add missing parameter.
      	* testsuite/20_util/is_nothrow_convertible/value_ext.cc: New test.
      	* testsuite/20_util/is_nothrow_convertible/value.cc: Check with type
      	that has nothrow explicit conversion but potentially-throwing implicit
      	conversion.
      	* testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
      	* testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix helper
      	function to only consider implicit conversions.
      	* testsuite/20_util/tuple/cons/noexcept_specs.cc: Add comment.
      
      From-SVN: r271171
      Jonathan Wakely committed
    • gimple-parser.c (c_parser_gimple_statement): Remove questionable auto-promotion… · 1158c5b4
      gimple-parser.c (c_parser_gimple_statement): Remove questionable auto-promotion to VIEW_CONVERT_EXPR.
      
      2019-05-14  Richard Biener  <rguenther@suse.de>
      
      	* gimple-parser.c (c_parser_gimple_statement): Remove
      	questionable auto-promotion to VIEW_CONVERT_EXPR.
      	(c_parser_gimple_typespec): Split out from __MEM parsing.
      	(c_parser_gimple_postfix_expression): Handle __VIEW_CONVERT.
      	* tree-pretty-print.c (dump_generic_node): Dump VIEW_CONVERT_EXPR
      	as __VIEW_CONVERT with -gimple.
      
      	* gcc.dg/gimplefe-40.c: New testcase.
      
      From-SVN: r271170
      Richard Biener committed
    • Reduce header dependencies in <iterator> · 22b6a9c1
      	* include/std/iterator: Include <iosfwd> instead of <istream> and
      	<ostream>.
      
      From-SVN: r271169
      Jonathan Wakely committed
    • Removing unused, non-standard function in _Rb_tree · 7198e982
      	* include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
      	Remove unused, non-standard function.
      
      From-SVN: r271168
      Jonathan Wakely committed
    • Make std::match_results::_M_resize more useful · 0b3c00ff
      As both callers of match_results::_M_resize(unsigned) immediately follow
      it with a loop to update the value of each sub_match, that behaviour can
      be moved into _M_resize itself. The first caller fills the container
      with unmatched subs, which can be done with vector::assign, and the
      second caller clears the container to establish a specific state, which
      can be provided by a new member function specific to that purpose.
      
      Tangentially, I also noticed that match_results::max_size() doesn't
      account for the three special sub_match objects that are always present
      in a fully established result state. This patch also fixes that.
      
      	* include/bits/regex.h (match_results::max_size()): Adjust return
      	value to account for prefix/suffix/unmatched subs.
      	(match_results::_M_resize(unsigned int)): Use _Base_type::assign to
      	reset the contained sub matches.
      	(match_results::_M_establish_failed_match(_Bi_iter)): Add new member
      	function to set result state following a failed match.
      	* include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
      	sub_match states after _M_resize. Use _M_establish_failed_match.
      
      From-SVN: r271167
      Jonathan Wakely committed
    • PR libstdc++/69724 avoid temporary in std::thread construction · 8db7a05f
      The std::thread constructor creates (and then moves) an unnecessary
      temporary copy of each argument. Optimize it to only make the one copy
      that is required.
      
      	PR libstdc++/69724
      	* include/std/thread (thread::_State_impl, thread::_S_make_state):
      	Replace single _Callable parameter with variadic _Args pack, to
      	forward them directly to the tuple of decayed copies.
      	* testsuite/30_threads/thread/cons/69724.cc: New test.
      
      From-SVN: r271166
      Jonathan Wakely committed
    • Inconsistency wrt Allocators in basic_string assignment (LWG2579) · db33efde
      2019-05-14  Nina Dinka Ranns  <dinka.ranns@gmail.com>
      
      	Inconsistency wrt Allocators in basic_string assignment (LWG2579)
      	* include/bits/basic_string.h: (operator=(const basic_string&):
      	Move allocator decision to assign.
      	(assign(const basic_string&)): Move allocator decision here.
      	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
      	Add tests.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
      	Add tests.
      
      From-SVN: r271165
      Nina Dinka Ranns committed
    • Reapply r270597. · 4593483f
      2019-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR preprocessor/90382
      	* decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
      	min_location.
      2019-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR preprocessor/90382
      	* g++.dg/diagnostic/trailing1.C: New test.
      
      From-SVN: r271164
      Paolo Carlini committed
    • Fix min_location usage in line-map.c (PR preprocessor/90382). · 19eda56d
      2019-05-14  Martin Liska  <mliska@suse.cz>
      
      	PR preprocessor/90382
      	* line-map.c (first_map_in_common_1): Handle ADHOC
      	locations.
      
      From-SVN: r271163
      Martin Liska committed
    • Do a refactoring in linemap (PR preprocessor/90382). · e6fc8353
      2019-05-14  Martin Liska  <mliska@suse.cz>
      
      	PR preprocessor/90382
      	* include/line-map.h (get_data_from_adhoc_loc): Add const to
      	the first argument.
      	(get_location_from_adhoc_loc): Likewise.
      	* line-map.c(get_data_from_adhoc_loc):  Add const to
      	the first argument.
      	(get_location_from_adhoc_loc): Likewise.
      	(get_combined_adhoc_loc): Use get_location_from_adhoc_loc
      	(or get_data_from_adhoc_loc).
      	(get_range_from_adhoc_loc): Likewise.
      	(get_pure_location): Likewise.
      	(linemap_position_for_loc_and_offset): Likewise.
      	(linemap_lookup): Likewise.
      	(linemap_ordinary_map_lookup): Likewise.
      	(linemap_macro_map_lookup): Likewise.
      	(linemap_get_expansion_line): Likewise.
      	(linemap_get_expansion_filename): Likewise.
      	(linemap_location_in_system_header_p): Likewise.
      	(linemap_location_from_macro_expansion_p): Likewise.
      	(linemap_macro_loc_to_exp_point): Likewise.
      	(linemap_resolve_location): Likewise.
      	(linemap_unwind_toward_expansion): Likewise.
      	(linemap_unwind_to_first_non_reserved_loc): Likewise.
      	(linemap_expand_location): Likewise.
      	(linemap_dump_location): Likewise.
      
      From-SVN: r271162
      Martin Liska committed
    • Fix indentation in testsuite utility header · c688848d
      	* testsuite/util/testsuite_allocator.h (memory_resource)
      	(default_resource_mgr): Fix indentation.
      
      From-SVN: r271161
      Jonathan Wakely committed
    • Add __gnu_test::NullablePointer utility to testsuite · 066f9ea2
      	* testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
      	Use operator-> to access raw pointer member.
      	* testsuite/23_containers/vector/59829.cc: Likewise.
      	* testsuite/23_containers/vector/bool/80893.cc: Likewise.
      	* testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
      	* testsuite/util/testsuite_allocator.h (NullablePointer): New utility
      	for tests.
      	(PointerBase, PointerBase_void): Derive from NullablePointer and use
      	its constructors and equality operators. Change converting
      	constructors to use operator-> to access private member of the other
      	pointer type.
      	(PointerBase_void::operator->()): Add, for access to private member.
      	(operator-(PointerBase, PointerBase)): Change to hidden friend.
      	(operator==(PointerBase, PointerBase)): Remove.
      	(operator!=(PointerBase, PointerBase)): Remove.
      
      From-SVN: r271160
      Jonathan Wakely committed
    • Fix unique_ptr pretty printer for empty classes · e25f488d
      The printer was confused when unique_ptr<T,D>::pointer is an empty
      class, or the deleter is not empty. Instead of assuming the tuple has a
      single _M_head_impl member manually inspect the tuple base classes to
      get the first element.
      
      	* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
      	not assume field called _M_head_impl is the first tuple element.
      	* testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
      	implementation more accurate.
      	* testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
      	empty pointer type and non-empty deleter.
      
      From-SVN: r271159
      Jonathan Wakely committed
    • LWG 2899 - Make is_move_constructible correct for unique_ptr · 1b18663e
      	* include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
      	move assignment operator.
      	(__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
      	(__uniq_ptr_data): New class template with conditionally deleted
      	special members.
      	(unique_ptr, unique_ptr<T[], D>): Change type of data member from
      	__uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
      	constructor and move assignment operator as defaulted.
      	(unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
      	__uniq_ptr_impl::release().
      	(unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
      	to __uniq_ptr_impl::reset(pointer).
      	* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
      	Check for new __uniq_ptr_data type.
      	* testsuite/20_util/unique_ptr/dr2899.cc: New test.
      
      From-SVN: r271158
      Jonathan Wakely committed
    • Fix a test-case in PR middle-end/90340. · 24c30e14
      2019-05-14  marxin  <mliska@suse.cz>
      
      	PR middle-end/90340
      	* gcc.dg/tree-ssa/pr90340-2.c: Add case-values-threshold
      	param.
      
      From-SVN: r271156
      Martin Liska committed
    • re PR tree-optimization/88828 (Inefficient update of the first element of vector registers) · 962372f9
      2019-05-14  Richard Biener  <rguenther@suse.de>
      	H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR tree-optimization/88828
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Handle
      	permuting in a single non-constant element not extracted
      	from a vector.
      
      	* gcc.target/i386/pr88828-1.c: New test.
      	* gcc.target/i386/pr88828-1a.c: Likewise.
      	* gcc.target/i386/pr88828-1b.c: Likewise.
      	* gcc.target/i386/pr88828-1c.c: Likewise.
      	* gcc.target/i386/pr88828-4a.c: Likewise.
      	* gcc.target/i386/pr88828-4b.c: Likewise.
      	* gcc.target/i386/pr88828-5a.c: Likewise.
      	* gcc.target/i386/pr88828-5b.c: Likewise.
      	* gcc.target/i386/pr88828-7.c: Likewise.
      	* gcc.target/i386/pr88828-7a.c: Likewise.
      	* gcc.target/i386/pr88828-7b.c: Likewise.
      	* gcc.target/i386/pr88828-8.c: Likewise.
      	* gcc.target/i386/pr88828-8a.c: Likewise.
      	* gcc.target/i386/pr88828-8b.c: Likewise.
      	* gcc.target/i386/pr88828-9.c: Likewise.
      	* gcc.target/i386/pr88828-9a.c: Likewise.
      	* gcc.target/i386/pr88828-9b.c: Likewise.
      
      Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
      
      From-SVN: r271153
      Richard Biener committed
    • 2019-05-14 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com\> · a52cf5cf
      gcc/
      	* internal-fn.def (SIGNBIT): New.
      	* config/aarch64/aarch64-simd.md (signbitv2sf2): New expand
      	defined.
      	(signbitv4sf2): Likewise.
      
      gcc/testsuite/
      	* gcc.target/aarch64/signbitv4sf.c: New test.
      	* gcc.target/aarch64/signbitv2sf.c: New test.
      
      From-SVN: r271149
      Przemyslaw Wirkus committed
    • [MIPS] Skip forward src into next insn when the SRC reg is dead. · 4dbf3a15
      	PR target/90357
      	gcc/
      	* config/mips/mips.c (mips_split_move): Skip forward SRC into
      	next insn when the SRC reg is dead.
      
      From-SVN: r271146
      Chenghua Xu committed
    • gimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1. · 98aaa1a6
      	* gimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1.
      	(alloc_cand_and_find_basis): Ditto.
      	(backtrace_base_for_ref, create_mul_ssa_cand): Remove if-then-else.
      	(create_mul_imm_cand, create_add_ssa_cand): Ditto.
      	(create_add_imm_cand, slsr_process_cast): Ditto.
      	(slsr_process_copy, replace_mult_candidate): Ditto.
      	(replace_rhs_if_not_dup, replace_one_candidate): Ditto.
      	(dump_cand_vec, analyze_candidates_and_replace): Skip NULL element.
      	(pass_strength_reduction::execute): Init the first NULL element.
      
      From-SVN: r271145
      Bin Cheng committed
    • Daily bump. · 5900c710
      From-SVN: r271144
      GCC Administrator committed
  2. 13 May, 2019 12 commits
    • * sv.po: Update. · 004269d6
      From-SVN: r271139
      Joseph Myers committed
    • Use releasing_vec more broadly. · cd9cf97b
      	* cp-tree.h (struct releasing_vec): Replace get_ref method with
      	operator&.
      	(vec_safe_push, vec_safe_reserve, vec_safe_length, vec_safe_splice):
      	Forwarding functions for releasing_vec.
      	(release_tree_vector): Declare but don't define.
      	* call.c (build_op_delete_call, build_temp, call_copy_ctor)
      	(perform_direct_initialization_if_possible): Use releasing_vec.
      	* constexpr.c (cxx_eval_vec_init_1, cxx_eval_store_expression):
      	Likewise.
      	* cp-gimplify.c (cp_fold): Likewise.
      	* cvt.c (force_rvalue, ocp_convert): Likewise.
      	* decl.c (get_tuple_decomp_init): Likewise.
      	* except.c (build_throw): Likewise.
      	* init.c (perform_member_init, expand_default_init): Likewise.
      	* method.c (do_build_copy_assign, locate_fn_flags): Likewise.
      	* parser.c (cp_parser_userdef_char_literal)
      	(cp_parser_userdef_numeric_literal)
      	(cp_parser_userdef_string_literal)
      	(cp_parser_perform_range_for_lookup)
      	(cp_parser_range_for_member_function, cp_parser_omp_for_loop)
      	(cp_parser_omp_for_loop_init): Likewise.
      	* pt.c (tsubst_copy_and_build, do_class_deduction): Likewise.
      	* semantics.c (calculate_direct_bases, calculate_bases)
      	(finish_omp_barrier, finish_omp_flush, finish_omp_taskwait)
      	(finish_omp_taskyield, finish_omp_cancel)
      	(finish_omp_cancellation_point): Likewise.
      	* tree.c (build_vec_init_elt, strip_typedefs, strip_typedefs_expr)
      	(build_min_non_dep_op_overload): Likewise.
      	* typeck.c (build_function_call_vec, cp_build_function_call_nary)
      	(cp_build_modify_expr): Likewise.
      	* typeck2.c (build_functional_cast): Likewise.
      
      From-SVN: r271138
      Jason Merrill committed
    • libgo: drop Solaris 10 support · 93ee143d
          
          Based on patch by Rainer Orth.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176938
      
      From-SVN: r271135
      Ian Lance Taylor committed
    • PR libstdc++/90454.cc path construction from void* · bceb07e3
      Make the filesystem::path constructors SFINAE away for void* arguments,
      instead of giving an error due to iterator_traits<void*>::reference.
      
      	PR libstdc++/90454.cc path construction from void*
      	* include/bits/fs_path.h (path::_Path): Use remove_pointer so that
      	pointers to void are rejected as well as void.
      	* include/experimental/bits/fs_path.h (path::_Path): Likewise.
      	* testsuite/27_io/filesystem/path/construct/80762.cc: Also check
      	pointers to void.
      	* testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
      
      From-SVN: r271134
      Jonathan Wakely committed
    • Fix testsuite regression caused by r271077 · 0dd50fc6
      	* g++.dg/cpp0x/Wattributes1.C: Adjust dg-error line number to fix
      	regression, by matching a note on any line.
      	* g++.dg/cpp0x/Wattributes2.C: Add another copy that checks the
      	correct line number is matched without depending on a library header.
      
      From-SVN: r271133
      Jonathan Wakely committed
    • Small markup changes to PBDS docs · e6e08429
      	* doc/xml/manual/policy_data_structures.xml: Comment out stray
      	<remark> elements. Fix formatting of bibliography references.
      
      From-SVN: r271132
      Jonathan Wakely committed
    • [PATCH] A couple of driver cleanups · f5545ebe
      https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00624.html
      	* gcc.c (execute): Simplify cond-expr into if.  Reformat comment.
      	(run_attempt): Reformat line break
      
      From-SVN: r271131
      Nathan Sidwell committed
    • re PR bootstrap/90418 (powerpc-darwin9 bootstrap fails after r271013) · 2a03d8ca
      	PR target/90418
              * config/rs6000/rs6000.c (rs6000_emit_epilogue): Don't load EH
              data registers in sibcall epilogues.
              Don't add EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues.
      
      From-SVN: r271130
      David Edelsohn committed
    • re PR target/89221 (--enable-frame-pointer does not work as intended) · 6221eb9d
      	PR target/89221
      	* configure.ac (--enable-frame-pointer):
      	Disable by default for cygwin and mingw.
      	* configure: Regenerate.
      
      From-SVN: r271129
      Uros Bizjak committed
    • 2019-05-13 Chung-Lin Tang <cltang@codesourcery.com> · 1f4c5b9b
      	Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      
      	libgomp/
      	* libgomp-plugin.h (struct goacc_asyncqueue): Declare.
      	(struct goacc_asyncqueue_list): Likewise.
      	(goacc_aq): Likewise.
      	(goacc_aq_list): Likewise.
      	(GOMP_OFFLOAD_openacc_register_async_cleanup): Remove.
      	(GOMP_OFFLOAD_openacc_async_test): Remove.
      	(GOMP_OFFLOAD_openacc_async_test_all): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait_async): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait_all): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait_all_async): Remove.
      	(GOMP_OFFLOAD_openacc_async_set_async): Remove.
      	(GOMP_OFFLOAD_openacc_exec): Adjust declaration.
      	(GOMP_OFFLOAD_openacc_cuda_get_stream): Likewise.
      	(GOMP_OFFLOAD_openacc_cuda_set_stream): Likewise.
      	(GOMP_OFFLOAD_openacc_async_exec): Declare.
      	(GOMP_OFFLOAD_openacc_async_construct): Declare.
      	(GOMP_OFFLOAD_openacc_async_destruct): Declare.
      	(GOMP_OFFLOAD_openacc_async_test): Declare.
      	(GOMP_OFFLOAD_openacc_async_synchronize): Declare.
      	(GOMP_OFFLOAD_openacc_async_serialize): Declare.
      	(GOMP_OFFLOAD_openacc_async_queue_callback): Declare.
      	(GOMP_OFFLOAD_openacc_async_host2dev): Declare.
      	(GOMP_OFFLOAD_openacc_async_dev2host): Declare.
      
      	* libgomp.h (struct acc_dispatch_t): Define 'async' sub-struct.
      	(gomp_acc_insert_pointer): Adjust declaration.
      	(gomp_copy_host2dev): New declaration.
      	(gomp_copy_dev2host): Likewise.
      	(gomp_map_vars_async): Likewise.
      	(gomp_unmap_tgt): Likewise.
      	(gomp_unmap_vars_async): Likewise.
      	(gomp_fini_device): Likewise.
      
      	* oacc-async.c (get_goacc_thread): New function.
      	(get_goacc_thread_device): New function.
      	(lookup_goacc_asyncqueue): New function.
      	(get_goacc_asyncqueue): New function.
      	(acc_async_test): Adjust code to use new async design.
      	(acc_async_test_all): Likewise.
      	(acc_wait): Likewise.
      	(acc_wait_async): Likewise.
      	(acc_wait_all): Likewise.
      	(acc_wait_all_async): Likewise.
      	(goacc_async_free): New function.
      	(goacc_init_asyncqueues): Likewise.
      	(goacc_fini_asyncqueues): Likewise.
      	* oacc-cuda.c (acc_get_cuda_stream): Adjust code to use new async
      	design.
      	(acc_set_cuda_stream): Likewise.
      	* oacc-host.c (host_openacc_exec): Adjust parameters, remove 'async'.
      	(host_openacc_register_async_cleanup): Remove.
      	(host_openacc_async_exec): New function.
      	(host_openacc_async_test): Adjust parameters.
      	(host_openacc_async_test_all): Remove.
      	(host_openacc_async_wait): Remove.
      	(host_openacc_async_wait_async): Remove.
      	(host_openacc_async_wait_all): Remove.
      	(host_openacc_async_wait_all_async): Remove.
      	(host_openacc_async_set_async): Remove.
      	(host_openacc_async_synchronize): New function.
      	(host_openacc_async_serialize): New function.
      	(host_openacc_async_host2dev): New function.
      	(host_openacc_async_dev2host): New function.
      	(host_openacc_async_queue_callback): New function.
      	(host_openacc_async_construct): New function.
      	(host_openacc_async_destruct): New function.
      	(struct gomp_device_descr host_dispatch): Remove initialization of old
      	interface, add intialization of new async sub-struct.
      	* oacc-init.c (acc_shutdown_1): Adjust to use gomp_fini_device.
      	(goacc_attach_host_thread_to_device): Remove old async code usage.
      	* oacc-int.h (goacc_init_asyncqueues): New declaration.
      	(goacc_fini_asyncqueues): Likewise.
      	(goacc_async_copyout_unmap_vars): Likewise.
      	(goacc_async_free): Likewise.
      	(get_goacc_asyncqueue): Likewise.
      	(lookup_goacc_asyncqueue): Likewise.
      
      	* oacc-mem.c (memcpy_tofrom_device): Adjust code to use new async
      	design.
      	(present_create_copy): Adjust code to use new async design.
      	(delete_copyout): Likewise.
      	(update_dev_host): Likewise.
      	(gomp_acc_insert_pointer): Add async parameter, adjust code to use new
      	async design.
      	(gomp_acc_remove_pointer): Adjust code to use new async design.
      	* oacc-parallel.c (GOACC_parallel_keyed): Adjust code to use new async
      	design.
      	(GOACC_enter_exit_data): Likewise.
      	(goacc_wait): Likewise.
      	(GOACC_update): Likewise.
      	* oacc-plugin.c (GOMP_PLUGIN_async_unmap_vars): Change to assert fail
      	when called, warn as obsolete in comment.
      
      	* target.c (goacc_device_copy_async): New function.
      	(gomp_copy_host2dev): Remove 'static', add goacc_asyncqueue parameter,
      	add goacc_device_copy_async case.
      	(gomp_copy_dev2host): Likewise.
      	(gomp_map_vars_existing): Add goacc_asyncqueue parameter, adjust code.
      	(gomp_map_pointer): Likewise.
      	(gomp_map_fields_existing): Likewise.
      	(gomp_map_vars_internal): New always_inline function, renamed from
      	gomp_map_vars.
      	(gomp_map_vars): Implement by calling gomp_map_vars_internal.
      	(gomp_map_vars_async): Implement by calling gomp_map_vars_internal,
      	passing goacc_asyncqueue argument.
      	(gomp_unmap_tgt): Remove static, add attribute_hidden.
      	(gomp_unref_tgt): New function.
      	(gomp_unmap_vars_internal): New always_inline function, renamed from
      	gomp_unmap_vars.
      	(gomp_unmap_vars): Implement by calling gomp_unmap_vars_internal.
      	(gomp_unmap_vars_async): Implement by calling
      	gomp_unmap_vars_internal, passing goacc_asyncqueue argument.
      	(gomp_fini_device): New function.
      	(gomp_exit_data): Adjust gomp_copy_dev2host call.
      	(gomp_load_plugin_for_device): Remove old interface, adjust to load
      	new async interface.
      	(gomp_target_fini): Adjust code to call gomp_fini_device.
      
      	* plugin/plugin-nvptx.c (struct cuda_map): Remove.
      	(struct ptx_stream): Remove.
      	(struct nvptx_thread): Remove current_stream field.
      	(cuda_map_create): Remove.
      	(cuda_map_destroy): Remove.
      	(map_init): Remove.
      	(map_fini): Remove.
      	(map_pop): Remove.
      	(map_push): Remove.
      	(struct goacc_asyncqueue): Define.
      	(struct nvptx_callback): Define.
      	(struct ptx_free_block): Define.
      	(struct ptx_device): Remove null_stream, active_streams, async_streams,
      	stream_lock, and next fields.
      	(enum ptx_event_type): Remove.
      	(struct ptx_event): Remove.
      	(ptx_event_lock): Remove.
      	(ptx_events): Remove.
      	(init_streams_for_device): Remove.
      	(fini_streams_for_device): Remove.
      	(select_stream_for_async): Remove.
      	(nvptx_init): Remove ptx_events and ptx_event_lock references.
      	(nvptx_attach_host_thread_to_device): Remove CUDA_ERROR_NOT_PERMITTED
      	case.
      	(nvptx_open_device): Add free_blocks initialization, remove
      	init_streams_for_device call.
      	(nvptx_close_device): Remove fini_streams_for_device call, add
      	free_blocks destruct code.
      	(event_gc): Remove.
      	(event_add): Remove.
      	(nvptx_exec): Adjust parameters and code.
      	(nvptx_free): Likewise.
      	(nvptx_host2dev): Remove.
      	(nvptx_dev2host): Remove.
      	(nvptx_set_async): Remove.
      	(nvptx_async_test): Remove.
      	(nvptx_async_test_all): Remove.
      	(nvptx_wait): Remove.
      	(nvptx_wait_async): Remove.
      	(nvptx_wait_all): Remove.
      	(nvptx_wait_all_async): Remove.
      	(nvptx_get_cuda_stream): Remove.
      	(nvptx_set_cuda_stream): Remove.
      	(GOMP_OFFLOAD_alloc): Adjust code.
      	(GOMP_OFFLOAD_free): Likewise.
      	(GOMP_OFFLOAD_openacc_register_async_cleanup): Remove.
      	(GOMP_OFFLOAD_openacc_exec): Adjust parameters and code.
      	(GOMP_OFFLOAD_openacc_async_test_all): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait_async): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait_all): Remove.
      	(GOMP_OFFLOAD_openacc_async_wait_all_async): Remove.
      	(GOMP_OFFLOAD_openacc_async_set_async): Remove.
      	(cuda_free_argmem): New function.
      	(GOMP_OFFLOAD_openacc_async_exec): New plugin hook function.
      	(GOMP_OFFLOAD_openacc_create_thread_data): Adjust code.
      	(GOMP_OFFLOAD_openacc_cuda_get_stream): Adjust code.
      	(GOMP_OFFLOAD_openacc_cuda_set_stream): Adjust code.
      	(GOMP_OFFLOAD_openacc_async_construct): New plugin hook function.
      	(GOMP_OFFLOAD_openacc_async_destruct): New plugin hook function.
      	(GOMP_OFFLOAD_openacc_async_test): Remove and re-implement.
      	(GOMP_OFFLOAD_openacc_async_synchronize): New plugin hook function.
      	(GOMP_OFFLOAD_openacc_async_serialize): New plugin hook function.
      	(GOMP_OFFLOAD_openacc_async_queue_callback): New plugin hook function.
      	(cuda_callback_wrapper): New function.
      	(cuda_memcpy_sanity_check): New function.
      	(GOMP_OFFLOAD_host2dev): Remove and re-implement.
      	(GOMP_OFFLOAD_dev2host): Remove and re-implement.
      	(GOMP_OFFLOAD_openacc_async_host2dev): New plugin hook function.
      	(GOMP_OFFLOAD_openacc_async_dev2host): New plugin hook function.
      
      From-SVN: r271128
      Chung-Lin Tang committed
    • [DWARF] dwarf2out cleanups · f78f5d23
      https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00485.html
      	* dwarf2out.c (breakout_comdat_types): Move comment to correct
      	piece of code.
      	(const_ok_for_output_1): Balance parens around #if/#else/#endif
      	(gen_member_die): Move abstract origin check earlier.  Only VARs
      	can be static_inline_p.  Simplify splicing control flow.
      
      From-SVN: r271127
      Nathan Sidwell committed
    • tree-vect-slp.c (vect_get_and_check_slp_defs): Handle VIEW_CONVERT_EXPR. · 61021c35
      2019-05-13  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-slp.c (vect_get_and_check_slp_defs): Handle
      	VIEW_CONVERT_EXPR.
      	(vect_build_slp_tree_1): Likewise.
      
      From-SVN: r271126
      Richard Biener committed