<pre style='margin:0'>
Jeremy Huddleston Sequoia (jeremyhu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/864eb7639d6774a7853767be6b15384c790bfe70">https://github.com/macports/macports-ports/commit/864eb7639d6774a7853767be6b15384c790bfe70</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 864eb76  libcxx: Bump to 3.9.0 (#52666)
</span>864eb76 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 864eb7639d6774a7853767be6b15384c790bfe70
</span>Author: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
AuthorDate: Tue Nov 1 16:52:53 2016 -0700

<span style='display:block; white-space:pre;color:#404040;'>    libcxx: Bump to 3.9.0 (#52666)
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
</span>---
 lang/libcxx/Portfile                               |  20 +-
 .../files/0001-buildit-build-fix-for-Leopard.patch |  36 ---
 ...-compatibility-version-to-RC_ProjectSourc.patch |  29 --
 ...nd-iterator-when-building-with-Lion-and-n.patch |  46 ---
 ...tomic-using-mutex-lock_guard-for-64b-ops-.patch | 320 ---------------------
 .../0005-string-Fix-exception-declaration.patch    |  14 -
 6 files changed, 10 insertions(+), 455 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxx/Portfile b/lang/libcxx/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 6fb363a..fd97869 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxx/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/libcxx/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,7 +4,7 @@ PortSystem              1.0
</span> PortGroup               compiler_blacklist_versions 1.0
 
 name                    libcxx
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version                 3.7.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version                 3.9.0
</span> epoch                   1
 categories              lang
 platforms               darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,8 +26,8 @@ dist_subdir             llvm
</span> use_xz                  yes
 distname                ${name}-${version}.src
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums               rmd160  b63d75f0547eb17e3f3f4df0875dfe1d0c32525d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  357fbd4288ce99733ba06ae2bec6f503413d258aeebaab8b6a791201e6f7f144
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums               rmd160  977a7c44cd29a4ba45d4ea36ac4e9c9a119e259d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  d0b38d51365c6322f5666a2a8105785f2e114430858de4c25a86b49f227f5b06
</span> 
 variant universal {}
 default_variants +universal
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -69,16 +69,16 @@ if {${os.major} < 11 || [variant_isset replacemnt_libcxx]} {
</span> 
     if {[variant_isset universal] && [lsearch ${universal_archs} ppc] != -1} {
         # http://trac.macports.org/wiki/LibcxxOnOlderSystems#Leopardppc
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        compiler.whitelist macports-clang-3.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        compiler.whitelist macports-clang-3.7 macports-clang-3.6
</span>     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch.pre_args -p3
</span>     patchfiles-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        0001-buildit-build-fix-for-Leopard.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        0002-buildit-Set-compatibility-version-to-RC_ProjectSourc.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        0003-Fix-local-and-iterator-when-building-with-Lion-and-n.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        0004-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        0005-string-Fix-exception-declaration.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        3001-buildit-build-fix-for-Leopard.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        3002-buildit-Set-compatibility-version-to-RC_ProjectSourc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        3003-Fix-local-and-iterator-when-building-with-Lion-and-n.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        3004-Fix-missing-long-long-math-prototypes-when-using-the.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        3005-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch
</span> 
     build.dir ${worksrcpath}/lib
     build.cmd ./buildit
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxx/files/0001-buildit-build-fix-for-Leopard.patch b/lang/libcxx/files/0001-buildit-build-fix-for-Leopard.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a7101dc..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxx/files/0001-buildit-build-fix-for-Leopard.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,36 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From bb8bfbe6e5de7d6cebe38a3af0b9a492336714a7 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 16 Jan 2015 21:10:35 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 1/4] buildit build fix for Leopard
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 357f51a5693be595909be627d11bfba20e3944cd)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/buildit | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 2 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/buildit b/lib/buildit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7e3bc2e..2740dee 100755
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/buildit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/buildit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -50,7 +50,7 @@ case $TRIPLE in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       RC_CFLAGS="-arch i386 -arch x86_64"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     SOEXT=dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if [ "$MACOSX_DEPLOYMENT_TARGET" = "10.6" ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if [ "$MACOSX_DEPLOYMENT_TARGET" = "10.5" ] || [ "$MACOSX_DEPLOYMENT_TARGET" = "10.6" ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         EXTRA_FLAGS="-nostdinc++ -std=c++11 -U__STRICT_ANSI__"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         LDSHARED_FLAGS="-o libc++.1.dylib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -59,7 +59,7 @@ case $TRIPLE in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             -install_name /usr/lib/libc++.1.dylib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             -Wl,-reexport_library,/usr/lib/libc++abi.dylib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             -Wl,-unexported_symbols_list,libc++unexp.exp  \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            /usr/lib/libSystem.B.dylib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            /usr/lib/libSystem.B.dylib /usr/lib/libgcc_s.1.dylib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if [ -n "$SDKROOT" ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.2.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxx/files/0002-buildit-Set-compatibility-version-to-RC_ProjectSourc.patch b/lang/libcxx/files/0002-buildit-Set-compatibility-version-to-RC_ProjectSourc.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index ee285e0..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxx/files/0002-buildit-Set-compatibility-version-to-RC_ProjectSourc.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,29 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 6d6c5b2be37820441b003596800add52ad08b9bb Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 16 Jan 2015 21:11:37 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 2/4] buildit: Set compatibility version to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- RC_ProjectSourceVersion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit f76bf5631a732baf296f331f1c6b6d6fb12b481a)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/buildit | 3 ++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 2 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/buildit b/lib/buildit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2740dee..c74683f 100755
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/buildit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/buildit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -54,7 +54,8 @@ case $TRIPLE in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         EXTRA_FLAGS="-nostdinc++ -std=c++11 -U__STRICT_ANSI__"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         LDSHARED_FLAGS="-o libc++.1.dylib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            -dynamiclib -nodefaultlibs -current_version 1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            -dynamiclib -nodefaultlibs \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            -current_version ${RC_ProjectSourceVersion} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             -compatibility_version 1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             -install_name /usr/lib/libc++.1.dylib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             -Wl,-reexport_library,/usr/lib/libc++abi.dylib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.2.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxx/files/0003-Fix-local-and-iterator-when-building-with-Lion-and-n.patch b/lang/libcxx/files/0003-Fix-local-and-iterator-when-building-with-Lion-and-n.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 746c547..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxx/files/0003-Fix-local-and-iterator-when-building-with-Lion-and-n.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,46 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From e34bdf68de77066864ff3238d89fd19e19b3b508 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 16 Jan 2015 21:34:36 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 3/4] Fix <local> and <iterator> when building with Lion and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- newer Availability.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit e8d7616436baea0e0ff1dd78bd8d8dfc5d367e44)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include/iterator | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include/locale   | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 4 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/include/iterator b/include/iterator
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f338e01..64b52e7 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/include/iterator
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/include/iterator
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -913,8 +913,8 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     _LIBCPP_INLINE_VISIBILITY bool failed() const _NOEXCEPT {return __sbuf_ == 0;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if !defined(__APPLE__) || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && defined(__MAC_10_8) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_6_0) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     template <class _Ch, class _Tr>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     friend
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/include/locale b/include/locale
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index fcff402..10d8ca9 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/include/locale
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/include/locale
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1467,8 +1467,8 @@ __pad_and_output(_OutputIterator __s,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if !defined(__APPLE__) || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && defined(__MAC_10_8) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_6_0) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- template <class _CharT, class _Traits>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- _LIBCPP_HIDDEN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.2.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxx/files/0004-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch b/lang/libcxx/files/0004-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index c8e656f..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxx/files/0004-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,320 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From bab1ec954fe3ca9d6733da96c2d1bf46bd9345e7 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: David Fang <fang@csl.cornell.edu>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Wed, 15 Jan 2014 21:27:34 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 4/4] implement atomic<> using mutex/lock_guard for 64b ops on
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 32b PPC not pretty, not fast, but passes atomic tests
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 8ec078a3bf34383cf8a0cbc6294ddf0da6bc3bed)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Conflicts:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   include/atomic
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include/__atomic_locked | 240 ++++++++++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include/atomic          |  46 ++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 286 insertions(+)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- create mode 100644 include/__atomic_locked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/include/__atomic_locked b/include/__atomic_locked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-new file mode 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 0000000..f10dd74
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- /dev/null
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/include/__atomic_locked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,240 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// -*- C++ -*-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+//===--------------------------- __atomic_locked --------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+//                     The LLVM Compiler Infrastructure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// This file is distributed under the University of Illinois Open Source
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// License. See LICENSE.TXT for details.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef _LIBCPP_ATOMIC_LOCKED
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define _LIBCPP_ATOMIC_LOCKED
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <__mutex_base>     // for mutex and lock_guard
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/**
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  This provides slow-but-usable lock-based atomic access to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  structures for which atomic lock-free functions are missing.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  This is motivated by the desire for 64b atomic operations
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  on 32b PowerPC architectures.  
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+**/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#pragma GCC system_header
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+_LIBCPP_BEGIN_NAMESPACE_STD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+template <class _Tp, bool = is_integral<_Tp>::value && !is_same<_Tp, bool>::value>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+struct __atomic_mutex_locked  // false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    mutable _Atomic(_Tp) __a_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    mutable mutex __lock_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef lock_guard<mutex>       lock_type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp& na(void) const { return reinterpret_cast<_Tp&>(__a_); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    volatile _Tp& na(void) const volatile { return reinterpret_cast<volatile _Tp&>(__a_); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool is_lock_free() const volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return false;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool is_lock_free() const _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return false;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    void store(_Tp __d, memory_order = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_)); na() = __d; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    void store(_Tp __d, memory_order = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_); na() = __d; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp load(memory_order = memory_order_seq_cst) const volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_)); return na(); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp load(memory_order = memory_order_seq_cst) const _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_); return na(); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    operator _Tp() const volatile _NOEXCEPT {return load();}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    operator _Tp() const _NOEXCEPT          {return load();}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp exchange(_Tp __d, memory_order = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  // or use std::swap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          const _Tp ret = na(); na() = __d; return ret; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp exchange(_Tp __d, memory_order = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  // or use std::swap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          const _Tp ret = na(); na() = __d; return ret; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               memory_order __s, memory_order __f) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (na() == __e) { na() = __d; return true; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    else { __e = na(); return false; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               memory_order __s, memory_order __f) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (na() == __e) { na() = __d; return true; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    else { __e = na(); return false; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // for now, _weak inditinguishable from _strong
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                 memory_order __s, memory_order __f) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return compare_exchange_weak(__e, __d, __s, __f);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                 memory_order __s, memory_order __f) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return compare_exchange_weak(__e, __d, __s, __f);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                              memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return compare_exchange_weak(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return compare_exchange_weak(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                              memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return compare_exchange_strong(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                 memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {return compare_exchange_strong(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked() _NOEXCEPT = default;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked() _NOEXCEPT : __a_() {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_CONSTEXPR __atomic_mutex_locked(_Tp __d) _NOEXCEPT : __a_(__d) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked(const __atomic_mutex_locked&) = delete;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&) = delete;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&) volatile = delete;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked(const __atomic_mutex_locked&);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&) volatile;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};        // end struct __atomic_mutex_locked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// atomic<Integral>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+template <class _Tp>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+struct __atomic_mutex_locked<_Tp, true>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    : public __atomic_mutex_locked<_Tp, false>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef __atomic_mutex_locked<_Tp, false> __base;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef       typename __base::lock_type      lock_type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    using __base::__lock_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    using __base::na;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __atomic_mutex_locked() _NOEXCEPT _LIBCPP_DEFAULT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_CONSTEXPR __atomic_mutex_locked(_Tp __d) _NOEXCEPT : __base(__d) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() += __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() += __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() -= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() -= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() &= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() &= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() |= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() |= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() ^= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const _Tp ret = na(); na() ^= __op; return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator++(int) volatile _NOEXCEPT      {return fetch_add(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator++(int) _NOEXCEPT               {return fetch_add(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator--(int) volatile _NOEXCEPT      {return fetch_sub(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator--(int) _NOEXCEPT               {return fetch_sub(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator++() volatile _NOEXCEPT         {return fetch_add(_Tp(1)) + _Tp(1);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator++() _NOEXCEPT                  {return fetch_add(_Tp(1)) + _Tp(1);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator--() volatile _NOEXCEPT         {return fetch_sub(_Tp(1)) - _Tp(1);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator--() _NOEXCEPT                  {return fetch_sub(_Tp(1)) - _Tp(1);}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator+=(_Tp __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator+=(_Tp __op) _NOEXCEPT          {return fetch_add(__op) + __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator-=(_Tp __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator-=(_Tp __op) _NOEXCEPT          {return fetch_sub(__op) - __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator&=(_Tp __op) volatile _NOEXCEPT {return fetch_and(__op) & __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator&=(_Tp __op) _NOEXCEPT          {return fetch_and(__op) & __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator|=(_Tp __op) volatile _NOEXCEPT {return fetch_or(__op) | __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator|=(_Tp __op) _NOEXCEPT          {return fetch_or(__op) | __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator^=(_Tp __op) volatile _NOEXCEPT {return fetch_xor(__op) ^ __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator^=(_Tp __op) _NOEXCEPT          {return fetch_xor(__op) ^ __op;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+_LIBCPP_END_NAMESPACE_STD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif  // _LIBCPP_ATOMIC_LOCKED
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/include/atomic b/include/atomic
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f6ab1cb..e580315 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/include/atomic
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/include/atomic
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1528,4 +1528,50 @@ typedef atomic<uintmax_t> atomic_uintmax_t;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- _LIBCPP_END_NAMESPACE_STD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if       defined(__ppc__) && !defined(__ppc64__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// specialize fallback implementation where 64b atomics are missing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <__atomic_locked>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+_LIBCPP_BEGIN_NAMESPACE_STD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+template <>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+struct atomic<long long> : public __atomic_mutex_locked<long long>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef long long             _Tp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef __atomic_mutex_locked<_Tp> __base;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    atomic() _NOEXCEPT _LIBCPP_DEFAULT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator=(_Tp __d) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {__base::store(__d); return __d;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator=(_Tp __d) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {__base::store(__d); return __d;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+template <>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+struct atomic<unsigned long long> :
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public __atomic_mutex_locked<unsigned long long>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef unsigned long long            _Tp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef __atomic_mutex_locked<_Tp> __base;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    atomic() _NOEXCEPT _LIBCPP_DEFAULT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator=(_Tp __d) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {__base::store(__d); return __d;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Tp operator=(_Tp __d) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {__base::store(__d); return __d;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+_LIBCPP_END_NAMESPACE_STD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif    // defined(__ppc__) && !defined(__ppc64__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif  // _LIBCPP_ATOMIC
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.2.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxx/files/0005-string-Fix-exception-declaration.patch b/lang/libcxx/files/0005-string-Fix-exception-declaration.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index aaa81d8..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxx/files/0005-string-Fix-exception-declaration.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,14 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- orig/include/string    2016-01-08 14:43:17.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ new/include/string     2016-01-08 14:44:29.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1936,6 +1936,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- template <class _CharT, class _Traits, class _Allocator>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if _LIBCPP_STD_VER <= 14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     : __r_(__a)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if _LIBCPP_DEBUG_LEVEL >= 2
</span></pre><pre style='margin:0'>

</pre>