1. 14 Jun, 2017 6 commits
  2. 13 Jun, 2017 31 commits
  3. 12 Jun, 2017 3 commits
    • runtime: ignore _Gscan bit when checking status in CgocallDone · a282a875
          
          Also always access the atomicstatus field atomically.
          
          The effect of not checking the _Gscan bit is that if the GC decides to
          scan the stack just as the goroutine is leaving the system call, the
          goroutine might fail to call exitsyscall.  Then then typically causes
          a runtime assertion failure later on.  If we do call exitsyscall as we
          should, it will stall (in casgstatus) until the _Gscan bit is cleared.
          
          No separate test.  I've observed causing sporadic failures running the
          misc/cgo tests, but we don't currently have a way to run those
          routinely for gccgo.  I should fix that.
          
          Reviewed-on: https://go-review.googlesource.com/45392
      
      From-SVN: r249138
      Ian Lance Taylor committed
    • Finish implementing P0426R1 "Constexpr for std::char_traits" for C++17 · b51483f4
      As discussed in PR c++/80265 ("__builtin_{memcmp,memchr,strlen} are
      not usable in constexpr functions"), use __builtin_constant_p to tell
      whether we can defer to a constexpr algorithm.
      
      I used __always_inline__ just to be thorough.  It isn't really really
      necessary as far as I could determine.
      
      Changes like these:
      
      	 if (__n == 0)
      	   return 0;
       -	return wmemcmp(__s1, __s2, __n);
       +	else
       +	  return wmemcmp(__s1, __s2, __n);
      
      are necessary otherwise G++ complains that we're calling a
      non-constexpr function, which looks like a a manifestation of PR67026
      to me.
      
      libstdc++-v3:
      2017-06-12  Pedro Alves  <palves@redhat.com>
      
      	* doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
      	char_traits status.
      	* doc/html/*: Regenerate.
      
      	* include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if
      	not already defined.
      	(__cpp_lib_constexpr_char_traits): Uncomment.
      	(__constant_string_p, __constant_char_array_p): New.
      	(std::char_traits<char>, std::char_traits<wchar_t>): Add
      	_GLIBCXX17_CONSTEXPR on compare, length and find and use
      	__constant_string_p, __constant_char_array_p and
      	__builtin_constant_p to defer to __gnu_cxx::char_traits at compile
      	time.
      
      	* testsuite/21_strings/char_traits/requirements/
      	constexpr_functions_c++17.cc: Uncomment
      	__cpp_lib_constexpr_char_traits tests.  Uncomment
      	test_compare<char>, test_length<char>, test_find<char>,
      	test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t>
      	static_assert tests.
      
      From-SVN: r249137
      Pedro Alves committed
    • stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator default init. · 07cfc2d7
      2017-06-12  François Dumont  <fdumont@gcc.gnu.org>
      
      	* include/bits/stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator
      	default init.
      	* testsuite/util/testsuite_allocator.h
      	(__gnu_test::default_init_allocator<>) New.
      	* testsuite/23_containers/set/allocator/default_init.cc: New.
      	* testsuite/23_containers/map/allocator/default_init.cc: New.
      
      From-SVN: r249136
      François Dumont committed