summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-05-07 05:37:31 +0000
committerEric Fiselier <eric@efcs.ca>2016-05-07 05:37:31 +0000
commit2266a8d473256630785f5803bb8de6c7e619ef9d (patch)
treea4effd4985fa20e485c03e9b1f89c1d748bd1e27
parentbbedb1495cf73111fae2d2455100059fffb1620a (diff)
downloadbcm5719-llvm-2266a8d473256630785f5803bb8de6c7e619ef9d.tar.gz
bcm5719-llvm-2266a8d473256630785f5803bb8de6c7e619ef9d.zip
Fix memory_resource build for _LIBCPP_HAS_NO_THREADS
llvm-svn: 268850
-rw-r--r--libcxx/src/experimental/memory_resource.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/libcxx/src/experimental/memory_resource.cpp b/libcxx/src/experimental/memory_resource.cpp
index 046ef02a4bc..ff0fbb6065f 100644
--- a/libcxx/src/experimental/memory_resource.cpp
+++ b/libcxx/src/experimental/memory_resource.cpp
@@ -11,7 +11,7 @@
#ifndef _LIBCPP_HAS_NO_ATOMIC_HEADER
#include "atomic"
-#else
+#elif !defined(_LIBCPP_HAS_NO_THREADS)
#include "mutex"
#endif
@@ -100,7 +100,7 @@ __default_memory_resource(bool set = false, memory_resource * new_res = nullptr)
return _VSTD::atomic_load_explicit(
&__res, memory_order::memory_order_acquire);
}
-#else
+#elif !defined(_LIBCPP_HAS_NO_THREADS)
static memory_resource * res = &res_init.resources.new_delete_res;
static mutex res_lock;
if (set) {
@@ -113,6 +113,16 @@ __default_memory_resource(bool set = false, memory_resource * new_res = nullptr)
lock_guard<mutex> guard(res_lock);
return res;
}
+#else
+ static memory_resource* res = &res_init.resources.new_delete_res;
+ if (set) {
+ new_res = new_res ? new_res : new_delete_resource();
+ memory_resource * old_res = res;
+ res = new_res;
+ return old_res;
+ } else {
+ return res;
+ }
#endif
}
OpenPOWER on IntegriCloud