1. 15 May, 2019 9 commits
    • re PR tree-optimization/90474 (ICE: verify_gimple failed (error:… · 6b943512
      re PR tree-optimization/90474 (ICE: verify_gimple failed (error: DECL_GIMPLE_REG_P set on a variable with address taken; error: invalid address operand in MEM_REF))
      
      2019-05-15  Richard Biener  <rguenther@suse.de>
      
      	PR c/90474
      	* c-common.c (c_common_mark_addressable_vec): Also mark
      	a COMPOUND_LITERAL_EXPR_DECL addressable similar to
      	c_mark_addressable.
      
      From-SVN: r271206
      Richard Biener committed
    • darwin, testsuite, powerpc - handle tests for new processors. · c221c627
      If we build Darwin with a modern assembler, then it might well
      recognise insns that cannot be used on current Darwin systems.
      
      The patch augments the tests for feature support for VSX,
      power8 and power9 to exclude Darwin even if the assembler can
      handle the instructions.
      
      2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* lib/target-supports.exp 
      	(check_effective_target_powerpc_p8vector_ok): No support for Darwin.
      	(check_effective_target_powerpc_p9vector_ok): Likewise.
      	(check_effective_target_powerpc_float128_sw_ok): Likewise.
      	(check_effective_target_powerpc_float128_hw_ok): Likewise.
      	(check_effective_target_powerpc_vsx_ok): Likewise.
      	* gcc.target/powerpc/bfp/bfp.exp: Don't try to run this for Darwin.
      	* gcc.target/powerpc/dfp/dfp.exp: Likewise.
      
      From-SVN: r271205
      Iain Sandoe committed
    • re PR tree-optimization/88828 (Inefficient update of the first element of vector registers) · 595ffc07
      2019-05-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/88828
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Fix
      	bogus check.
      
      From-SVN: r271204
      Richard Biener committed
    • gimple-parser.c (c_parser_gimple_statement): Remove questionable auto-promotion… · 90554985
      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: r271203
      Richard Biener committed
    • lto-plugin - support -save-temps, -v, --version. · c101cff8
      This patch makes the lto-plugin follow the same approach
      to save-temps as collect2. 
      
      -save-temps causes the temp file to be named meaningfully,
      and for the relevant input files to be saved in CWD.
      
      -v, —version causes the save actions to be output to stderr.
      
      one can get this to happen by just putting -save-temps, -v on
      the regular link line or (for compatibility with the way the
       -debug flag works) by appending -plugin-opt=-save-temps, etc.
      
      lto-plugin/
      
      2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* lto-plugin.c (exec_lto_wrapper): Make the wrapper
      	arguments filename more user-friendly.
      	(file_exists, maybe_unlink): New.
      	(cleanup_handler): Use maybe unlink to handle the
      	case when temps should be saved.
      	(process_option): Look for -v, —-version, -save-temps.
      	(onload): Record the linker output file name.
      	Check for -v, —-version, -save-temps in the GCC collect
      	options environment.
      
      From-SVN: r271202
      Iain Sandoe committed
    • add missing Changelog for last commit. · debe1ba0
      From-SVN: r271201
      Iain Sandoe committed
    • darwin, testsuite, ppc FIX PR87600 · 49ba885c
      The test fails on PPC Darwin because we emit 
      __POWERPC__ instead of __powerpc__ fixed by allowing
      for both.
      
      2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* gcc.dg/pr87600.h: Add __POWERPC__ as an alternate test
      	for PowerPC platforms.
      
      From-SVN: r271200
      Iain Sandoe committed
    • darwin, testsuite, laste piece to fix PR82920 · 92bde799
      These ae test adjustments to the scan assembler strings
      mostly just to catch missing __USER_LABEL_PREFIX__s  on
      symbols.
      
      2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>
      
      	PR target/82920
      	* g++.dg/cet-notrack-1.C: Adjust scan assembler for Darwin.
      	* gcc.target/i386/cet-notrack-5a.c: Likewise.
      	* gcc.target/i386/cet-notrack-5b.c: Likewise.
      	* gcc.target/i386/cet-notrack-6b.c: Likewise.
      	* gcc.target/i386/cet-notrack-icf-1.c: Likewise.
      	* gcc.target/i386/cet-notrack-icf-2.c: Likewise.
      	* gcc.target/i386/cet-notrack-icf-3.c: Likewise.
      	* gcc.target/i386/cet-notrack-icf-4.c: Likewise.
      	* gcc.target/i386/cet-sjlj-3.c: Likewise.
      	* gcc.target/i386/cet-sjlj-5.c: Likewise.
      
      From-SVN: r271199
      Iain Sandoe committed
    • Daily bump. · c838e455
      From-SVN: r271197
      GCC Administrator committed
  2. 14 May, 2019 31 commits
    • re PR c++/68918 (spurious "invalid use of incomplete type" in trailing return type) · 9177a016
      	PR c++/68918
      	* g++.dg/cpp0x/decltype71.C: New test.
      
      From-SVN: r271193
      Marek Polacek committed
    • re PR c++/70156 (incorrect "incomplete type" error initializing a static const data member) · 1d7dcb0e
      	PR c++/70156
      	* g++.dg/init/static5.C: New test.
      
      From-SVN: r271192
      Marek Polacek committed
    • darwin, testsuite, fix more PR 82920 · c76ea1b8
      Darwin doesn't support mx32, and some tests were
      failing because it was trying to do them.  When we
      disable this it turns out that quite a few tests
      requiring mx32 support were not guarded.
      
      gcc/
      
      2019-05-14  Iain Sandoe  <iain@sandoe.co.uk>
      
      	PR target/82920
      	* config/i386/darwin.h (CC1_SPEC): Report -mx32 as an error for
      	Darwin.
      
      gcc/testsuite/
      
      2019-05-14  Iain Sandoe  <iain@sandoe.co.uk>
      
      	PR target/82920
      	* gcc.target/i386/cet-sjlj-6b.c: Require effective target x32.
      	* gcc.target/i386/pr52146.c: Likewise.
      	* gcc.target/i386/pr52698.c: Likewise.
      	* gcc.target/i386/pr52857-1.c: Likewise.
      	* gcc.target/i386/pr52857-2.c: Likewise.
      	* gcc.target/i386/pr52876.c: Likewise.
      	* gcc.target/i386/pr53698.c: Likewise.
      	* gcc.target/i386/pr54157.c: Likewise.
      	* gcc.target/i386/pr55049-1.c: Likewise.
      	* gcc.target/i386/pr55093.c: Likewise.
      	* gcc.target/i386/pr55116-1.c: Likewise.
      	* gcc.target/i386/pr55116-2.c: Likewise.
      	* gcc.target/i386/pr55597.c: Likewise.
      	* gcc.target/i386/pr59929.c: Likewise.
      	* gcc.target/i386/pr66470.c: Likewise.
      
      From-SVN: r271190
      Iain Sandoe committed
    • Fix NullablePointer test utility · ff8b2a0a
      	* testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
      	Fix return value.
      
      From-SVN: r271189
      Jonathan Wakely committed
    • rs6000: Make eh_set_lr_<mode> a define_insn_and_split · b4d12b5e
      
      	* config/rs6000/rs6000.md (eh_set_lr_<mode>): Merge with following
      	define_split to become a define_insn_and_split.
      
      From-SVN: r271185
      Segher Boessenkool committed
    • 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