Author: dim
Date: Tue Aug  8 16:53:40 2017
New Revision: 322264
URL: https://svnweb.freebsd.org/changeset/base/322264

Log:
  Vendor import of libc++ release_50 branch r310316:
  https://llvm.org/svn/llvm-project/libcxx/branches/release_50@310316

Modified:
  vendor/libc++/dist/include/__bsd_locale_defaults.h
  vendor/libc++/dist/include/__bsd_locale_fallbacks.h
  vendor/libc++/dist/include/__locale
  vendor/libc++/dist/include/mutex
  vendor/libc++/dist/include/sstream
  
vendor/libc++/dist/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp
  
vendor/libc++/dist/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
  
vendor/libc++/dist/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
  vendor/libc++/dist/www/cxx1z_status.html
  vendor/libc++/dist/www/cxx2a_status.html

Modified: vendor/libc++/dist/include/__bsd_locale_defaults.h
==============================================================================
--- vendor/libc++/dist/include/__bsd_locale_defaults.h  Tue Aug  8 16:53:34 
2017        (r322263)
+++ vendor/libc++/dist/include/__bsd_locale_defaults.h  Tue Aug  8 16:53:40 
2017        (r322264)
@@ -15,6 +15,10 @@
 #ifndef _LIBCPP_BSD_LOCALE_DEFAULTS_H
 #define _LIBCPP_BSD_LOCALE_DEFAULTS_H
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#pragma GCC system_header
+#endif
+
 #define __libcpp_mb_cur_max_l(loc)                          MB_CUR_MAX_L(loc)
 #define __libcpp_btowc_l(ch, loc)                           btowc_l(ch, loc)
 #define __libcpp_wctob_l(wch, loc)                          wctob_l(wch, loc)

Modified: vendor/libc++/dist/include/__bsd_locale_fallbacks.h
==============================================================================
--- vendor/libc++/dist/include/__bsd_locale_fallbacks.h Tue Aug  8 16:53:34 
2017        (r322263)
+++ vendor/libc++/dist/include/__bsd_locale_fallbacks.h Tue Aug  8 16:53:40 
2017        (r322264)
@@ -18,6 +18,10 @@
 #include <stdarg.h>
 #include <memory>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#pragma GCC system_header
+#endif
+
 _LIBCPP_BEGIN_NAMESPACE_STD
 
 inline _LIBCPP_ALWAYS_INLINE

Modified: vendor/libc++/dist/include/__locale
==============================================================================
--- vendor/libc++/dist/include/__locale Tue Aug  8 16:53:34 2017        
(r322263)
+++ vendor/libc++/dist/include/__locale Tue Aug  8 16:53:40 2017        
(r322264)
@@ -34,7 +34,7 @@
 # include <support/solaris/xlocale.h>
 #elif defined(_NEWLIB_VERSION)
 # include <support/newlib/xlocale.h>
-#elif (defined(__GLIBC__) || defined(__APPLE__)      || defined(__FreeBSD__) \
+#elif (defined(__APPLE__)      || defined(__FreeBSD__) \
     || defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
 # include <xlocale.h>
 #elif defined(__Fuchsia__)

Modified: vendor/libc++/dist/include/mutex
==============================================================================
--- vendor/libc++/dist/include/mutex    Tue Aug  8 16:53:34 2017        
(r322263)
+++ vendor/libc++/dist/include/mutex    Tue Aug  8 16:53:40 2017        
(r322264)
@@ -116,7 +116,7 @@ class scoped_lock // C++17 (public)
     using mutex_type = Mutex;  // If MutexTypes... consists of the single type 
Mutex
 
     explicit scoped_lock(MutexTypes&... m);
-    scoped_lock(MutexTypes&... m, adopt_lock_t);
+    scoped_lock(adopt_lock_t, MutexTypes&... m);
     ~scoped_lock();
     scoped_lock(scoped_lock const&) = delete;
     scoped_lock& operator=(scoped_lock const&) = delete;
@@ -500,7 +500,7 @@ class _LIBCPP_TEMPLATE_VIS scoped_lock<_Mutex> { (publ
     ~scoped_lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) 
{__m_.unlock();}
 
     _LIBCPP_INLINE_VISIBILITY
-    explicit scoped_lock(mutex_type& __m, adopt_lock_t) 
_LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
+    explicit scoped_lock(adopt_lock_t, mutex_type& __m) 
_LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
         : __m_(__m) {}
 
     scoped_lock(scoped_lock const&) = delete;
@@ -522,7 +522,7 @@ class _LIBCPP_TEMPLATE_VIS scoped_lock (public)
     }
 
     _LIBCPP_INLINE_VISIBILITY
-    scoped_lock(_MArgs&... __margs, adopt_lock_t)
+    scoped_lock(adopt_lock_t, _MArgs&... __margs)
         : __t_(__margs...)
     {
     }

Modified: vendor/libc++/dist/include/sstream
==============================================================================
--- vendor/libc++/dist/include/sstream  Tue Aug  8 16:53:34 2017        
(r322263)
+++ vendor/libc++/dist/include/sstream  Tue Aug  8 16:53:40 2017        
(r322264)
@@ -249,7 +249,8 @@ basic_stringbuf<_CharT, _Traits, _Allocator>::basic_st
 template <class _CharT, class _Traits, class _Allocator>
 basic_stringbuf<_CharT, _Traits, _Allocator>::basic_stringbuf(const 
string_type& __s,
                              ios_base::openmode __wch)
-    : __hm_(0),
+    : __str_(__s.get_allocator()),
+      __hm_(0),
       __mode_(__wch)
 {
     str(__s);

Modified: 
vendor/libc++/dist/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp
==============================================================================
--- 
vendor/libc++/dist/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp
   Tue Aug  8 16:53:34 2017        (r322263)
+++ 
vendor/libc++/dist/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp
   Tue Aug  8 16:53:40 2017        (r322264)
@@ -18,6 +18,16 @@
 #include <sstream>
 #include <cassert>
 
+template<typename T>
+struct NoDefaultAllocator : std::allocator<T>
+{
+  template<typename U> struct rebind { using other = NoDefaultAllocator<U>; };
+  NoDefaultAllocator(int id_) : id(id_) { }
+  template<typename U> NoDefaultAllocator(const NoDefaultAllocator<U>& a) : 
id(a.id) { }
+  int id;
+};
+
+
 int main()
 {
     {
@@ -45,5 +55,14 @@ int main()
         assert(i == 456);
         ss << i << ' ' << 123;
         assert(ss.str() == L"456 1236 ");
+    }
+    { // This is https://bugs.llvm.org/show_bug.cgi?id=33727
+               typedef std::basic_string   <char, std::char_traits<char>, 
NoDefaultAllocator<char> > S;
+               typedef std::basic_stringbuf<char, std::char_traits<char>, 
NoDefaultAllocator<char> > SB;
+
+               S s(NoDefaultAllocator<char>(1));
+               SB sb(s);
+       //      This test is not required by the standard, but *where else* 
could it get the allocator?
+               assert(sb.str().get_allocator() == s.get_allocator());
     }
 }

Modified: 
vendor/libc++/dist/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
==============================================================================
--- 
vendor/libc++/dist/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
  Tue Aug  8 16:53:34 2017        (r322263)
+++ 
vendor/libc++/dist/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
  Tue Aug  8 16:53:40 2017        (r322264)
@@ -14,7 +14,7 @@
 
 // template <class ...Mutex> class scoped_lock;
 
-// scoped_lock(Mutex&..., adopt_lock_t);
+// scoped_lock(adopt_lock_t, Mutex&...);
 
 #include <mutex>
 #include <cassert>
@@ -43,7 +43,7 @@ int main()
         using LG = std::scoped_lock<TestMutex>;
         m1.lock();
         {
-            LG lg(m1, std::adopt_lock);
+            LG lg(std::adopt_lock, m1);
             assert(m1.locked);
         }
         assert(!m1.locked);
@@ -53,7 +53,7 @@ int main()
         using LG = std::scoped_lock<TestMutex, TestMutex>;
         m1.lock(); m2.lock();
         {
-            LG lg(m1, m2, std::adopt_lock);
+            LG lg(std::adopt_lock, m1, m2);
             assert(m1.locked && m2.locked);
         }
         assert(!m1.locked && !m2.locked);
@@ -63,7 +63,7 @@ int main()
         using LG = std::scoped_lock<TestMutex, TestMutex, TestMutex>;
         m1.lock(); m2.lock(); m3.lock();
         {
-            LG lg(m1, m2, m3, std::adopt_lock);
+            LG lg(std::adopt_lock, m1, m2, m3);
             assert(m1.locked && m2.locked && m3.locked);
         }
         assert(!m1.locked && !m2.locked && !m3.locked);

Modified: 
vendor/libc++/dist/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
==============================================================================
--- 
vendor/libc++/dist/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
    Tue Aug  8 16:53:34 2017        (r322263)
+++ 
vendor/libc++/dist/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
    Tue Aug  8 16:53:40 2017        (r322264)
@@ -261,4 +261,13 @@ int main() {
   test_copy_ctor_valueless_by_exception();
   test_copy_ctor_sfinae();
   test_constexpr_copy_ctor_extension();
+#if 0
+// disable this for the moment; it fails on older compilers.
+//  Need to figure out which compilers will support it.
+{ // This is the motivating example from P0739R0
+  std::variant<int, double> v1(3);
+  std::variant v2 = v1;
+  (void) v2;
+}
+#endif
 }

Modified: vendor/libc++/dist/www/cxx1z_status.html
==============================================================================
--- vendor/libc++/dist/www/cxx1z_status.html    Tue Aug  8 16:53:34 2017        
(r322263)
+++ vendor/libc++/dist/www/cxx1z_status.html    Tue Aug  8 16:53:40 2017        
(r322264)
@@ -39,6 +39,8 @@
   <p>In February 2017, the C++ standard committee approved this draft, and 
sent it to ISO for approval as C++17</p>
   <p>This page shows the status of libc++; the status of clang's support of 
the language features is <a 
href="http://clang.llvm.org/cxx_status.html#cxx17";>here</a>.</p>
 
+  <p>Reminder: Features in unreleased drafts of the standard are subject to 
change.</p>
+
   <p>The groups that have contributed papers:
   <ul>
     <li>LWG - Library working group</li>
@@ -163,7 +165,7 @@
        <tr><td><a 
href="http://wg21.link/P0623R0";>P0623R0</a></td><td>LWG</td><td>Final C++17 
Parallel Algorithms Fixes</td><td>Kona</td><td></td><td></td></tr>
        <tr><td></td><td></td><td></td><td></td><td></td><td></td></tr>
        <tr><td><a 
href="http://wg21.link/P0682R1";>P0682R1</a></td><td>LWG</td><td>Repairing 
elementary string conversions</td><td>Toronto</td><td></td><td></td></tr>
-       <tr><td><a 
href="http://wg21.link/P0739R0";>P0739R0</a></td><td>LWG</td><td>Some 
improvements to class template argument deduction integration into the standard 
library</td><td>Toronto</td><td></td><td></td></tr>
+       <tr><td><a 
href="http://wg21.link/P0739R0";>P0739R0</a></td><td>LWG</td><td>Some 
improvements to class template argument deduction integration into the standard 
library</td><td>Toronto</td><td>Complete</td><td>5.0</td></tr>
 
 <!--   <tr><td></td><td></td><td></td><td></td><td></td><td></td></tr> -->
   </table>
@@ -497,7 +499,7 @@
 <!--   <tr><td></td><td></td><td></td><td></td></tr> -->
   </table>
 
-  <p>Last Updated: 25-May-2017</p>
+  <p>Last Updated: 27-Jul-2017</p>
 </div>
 </body>
 </html>

Modified: vendor/libc++/dist/www/cxx2a_status.html
==============================================================================
--- vendor/libc++/dist/www/cxx2a_status.html    Tue Aug  8 16:53:34 2017        
(r322263)
+++ vendor/libc++/dist/www/cxx2a_status.html    Tue Aug  8 16:53:40 2017        
(r322264)
@@ -38,6 +38,8 @@
   <p>In July 2017, the C++ standard committee created a draft for the next 
version of the C++ standard, known here as "C++2a" (probably to be C++20).</p>
   <p>This page shows the status of libc++; the status of clang's support of 
the language features is <a 
href="http://clang.llvm.org/cxx_status.html#cxx2a";>here</a>.</p>
 
+  <p>Reminder: Features in unreleased drafts of the standard are subject to 
change.</p>
+
   <p>The groups that have contributed papers:
   <ul>
     <li>LWG - Library working group</li>
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to