summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/__mutex_base6
-rw-r--r--libcxx/include/atomic6
-rw-r--r--libcxx/include/condition_variable4
-rw-r--r--libcxx/include/future6
-rw-r--r--libcxx/include/ios4
-rw-r--r--libcxx/include/memory6
-rw-r--r--libcxx/include/mutex4
-rw-r--r--libcxx/include/shared_mutex6
-rw-r--r--libcxx/include/thread6
-rw-r--r--libcxx/src/algorithm.cpp8
-rw-r--r--libcxx/src/condition_variable.cpp6
-rw-r--r--libcxx/src/debug.cpp40
-rw-r--r--libcxx/src/future.cpp6
-rw-r--r--libcxx/src/ios.cpp2
-rw-r--r--libcxx/src/memory.cpp6
-rw-r--r--libcxx/src/mutex.cpp27
-rw-r--r--libcxx/src/shared_mutex.cpp5
-rw-r--r--libcxx/src/thread.cpp5
-rw-r--r--libcxx/test/atomics/atomics.fences/atomic_signal_fence.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.fences/atomic_thread_fence.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/atomic_flag_clear.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/atomic_flag_clear_explicit.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set_explicit.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/clear.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/default.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/init.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.flag/test_and_set.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.lockfree/lockfree.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.order/kill_dependency.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.order/memory_order.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.generic/address.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.generic/bool.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.generic/cstdint_typedefs.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.generic/integral.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.generic/integral_typedefs.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.generic/trivially_copyable.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor_explicit.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp2
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp3
-rw-r--r--libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_var_init.pass.cpp2
-rw-r--r--libcxx/test/atomics/version.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.async/async.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.errors/default_error_condition.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.errors/equivalent_error_code_int.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.errors/equivalent_int_error_condition.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.errors/future_category.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.errors/make_error_code.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.errors/make_error_condition.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.future_error/code.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.future_error/types.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.future_error/what.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.overview/future_errc.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.overview/future_status.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.overview/is_error_code_enum_future_errc.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.overview/launch.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/alloc_ctor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/default.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/dtor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/get_future.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/move_assign.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/move_ctor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_exception.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_lvalue.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_rvalue.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_value_const.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/set_value_void.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/swap.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.promise/uses_allocator.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/copy_assign.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/copy_ctor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/ctor_future.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/default.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/dtor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/get.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/move_assign.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/move_ctor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/wait.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/wait_for.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.shared_future/wait_until.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/assign_move.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_default.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func_alloc.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_move.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/dtor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/get_future.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/make_ready_at_thread_exit.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/operator.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/reset.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.members/swap.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/swap.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/uses_allocator.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.tas/types.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/default.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/dtor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/get.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/move_assign.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/move_ctor.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/share.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/wait.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/wait_for.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/futures.unique_future/wait_until.pass.cpp2
-rw-r--r--libcxx/test/thread/futures/version.pass.cpp2
-rw-r--r--libcxx/test/thread/macro.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/cv_status.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/destructor.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/native_handle.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/notify_all.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/wait.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/wait_pred.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/destructor.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_all.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.exception.pass.cpp11
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.exception.pass.cpp11
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_pred.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.condition/version.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock.algorithm/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock.algorithm/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/adopt_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/types.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/member_swap.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/nonmember_swap.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/release.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/mutex.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/op_bool.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/owns_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/types.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/types.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.lock/types.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/native_handle.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/native_handle.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock_shared.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.mutex/thread.once/thread.once.callonce/call_once.pass.cpp10
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/assign.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/copy.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/default.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/lt.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/thread_id.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.static/hardware_concurrency.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.class/types.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.this/get_id.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/thread.thread.this/yield.pass.cpp2
-rw-r--r--libcxx/test/thread/thread.threads/version.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp2
-rw-r--r--libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp2
268 files changed, 687 insertions, 8 deletions
diff --git a/libcxx/include/__mutex_base b/libcxx/include/__mutex_base
index 293feada648..d5ece7c1454 100644
--- a/libcxx/include/__mutex_base
+++ b/libcxx/include/__mutex_base
@@ -22,6 +22,8 @@
_LIBCPP_BEGIN_NAMESPACE_STD
+#ifndef _LIBCPP_HAS_NO_THREADS
+
class _LIBCPP_TYPE_VIS mutex
{
pthread_mutex_t __m_;
@@ -315,6 +317,7 @@ private:
void __do_timed_wait(unique_lock<mutex>& __lk,
chrono::time_point<chrono::system_clock, chrono::nanoseconds>) _NOEXCEPT;
};
+#endif // !_LIBCPP_HAS_NO_THREADS
template <class _To, class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY
@@ -332,6 +335,7 @@ __ceil(chrono::duration<_Rep, _Period> __d)
return __r;
}
+#ifndef _LIBCPP_HAS_NO_THREADS
template <class _Predicate>
void
condition_variable::wait(unique_lock<mutex>& __lk, _Predicate __pred)
@@ -396,6 +400,8 @@ condition_variable::wait_for(unique_lock<mutex>& __lk,
_VSTD::move(__pred));
}
+#endif // !_LIBCPP_HAS_NO_THREADS
+
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP___MUTEX_BASE
diff --git a/libcxx/include/atomic b/libcxx/include/atomic
index 91f18292d73..b01a59f5f96 100644
--- a/libcxx/include/atomic
+++ b/libcxx/include/atomic
@@ -533,6 +533,10 @@ void atomic_signal_fence(memory_order m) noexcept;
#pragma GCC system_header
#endif
+#ifdef _LIBCPP_HAS_NO_THREADS
+#error <atomic> is not supported on this single threaded system
+#else // !_LIBCPP_HAS_NO_THREADS
+
_LIBCPP_BEGIN_NAMESPACE_STD
#if !__has_feature(cxx_atomic) && _GNUC_VER < 407
@@ -1779,4 +1783,6 @@ typedef atomic<uintmax_t> atomic_uintmax_t;
_LIBCPP_END_NAMESPACE_STD
+#endif // !_LIBCPP_HAS_NO_THREADS
+
#endif // _LIBCPP_ATOMIC
diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable
index dc67266a97b..1af2484abd7 100644
--- a/libcxx/include/condition_variable
+++ b/libcxx/include/condition_variable
@@ -115,6 +115,8 @@ public:
#pragma GCC system_header
#endif
+#ifndef _LIBCPP_HAS_NO_THREADS
+
_LIBCPP_BEGIN_NAMESPACE_STD
class _LIBCPP_TYPE_VIS condition_variable_any
@@ -253,4 +255,6 @@ void notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk);
_LIBCPP_END_NAMESPACE_STD
+#endif // !_LIBCPP_HAS_NO_THREADS
+
#endif // _LIBCPP_CONDITION_VARIABLE
diff --git a/libcxx/include/future b/libcxx/include/future
index de00f25d7fb..7cd88cb726b 100644
--- a/libcxx/include/future
+++ b/libcxx/include/future
@@ -374,6 +374,10 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>;
#pragma GCC system_header
#endif
+#ifndef _LIBCPP_HAS_NO_THREADS
+#error <future> is not supported on this single threaded system
+#else // !_LIBCPP_HAS_NO_THREADS
+
_LIBCPP_BEGIN_NAMESPACE_STD
//enum class future_errc
@@ -2612,4 +2616,6 @@ future<void>::share()
_LIBCPP_END_NAMESPACE_STD
+#endif // !_LIBCPP_HAS_NO_THREADS
+
#endif // _LIBCPP_FUTURE
diff --git a/libcxx/include/ios b/libcxx/include/ios
index d95f18a5e1e..6d426079d4f 100644
--- a/libcxx/include/ios
+++ b/libcxx/include/ios
@@ -216,7 +216,7 @@ storage-class-specifier const error_category& iostream_category() noexcept;
#include <__locale>
#include <system_error>
-#if __has_feature(cxx_atomic)
+#if __has_feature(cxx_atomic) && !_LIBCPP_HAS_NO_THREADS
#include <atomic> // for __xindex_
#endif
@@ -367,7 +367,7 @@ private:
int* __index_;
size_t __event_size_;
size_t __event_cap_;
-#if __has_feature(cxx_atomic)
+#if __has_feature(cxx_atomic) && !_LIBCPP_HAS_NO_THREADS
static atomic<int> __xindex_;
#else
static int __xindex_;
diff --git a/libcxx/include/memory b/libcxx/include/memory
index dc9aeba7a7e..a9256da65e8 100644
--- a/libcxx/include/memory
+++ b/libcxx/include/memory
@@ -610,7 +610,7 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
#include <cassert>
#endif
-#if __has_feature(cxx_atomic)
+#if __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS)
# include <atomic>
#endif
@@ -5262,7 +5262,7 @@ inline _LIBCPP_INLINE_VISIBILITY
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p);
-#if __has_feature(cxx_atomic)
+#if __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS)
class _LIBCPP_TYPE_VIS __sp_mut
{
@@ -5388,7 +5388,7 @@ atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v
return atomic_compare_exchange_weak(__p, __v, __w);
}
-#endif // __has_feature(cxx_atomic)
+#endif // __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS)
//enum class
struct _LIBCPP_TYPE_VIS pointer_safety
diff --git a/libcxx/include/mutex b/libcxx/include/mutex
index 5dfba6325b3..9c26356590d 100644
--- a/libcxx/include/mutex
+++ b/libcxx/include/mutex
@@ -187,6 +187,8 @@ template<class Callable, class ...Args>
_LIBCPP_BEGIN_NAMESPACE_STD
+#ifndef _LIBCPP_HAS_NO_THREADS
+
class _LIBCPP_TYPE_VIS recursive_mutex
{
pthread_mutex_t __m_;
@@ -425,6 +427,8 @@ lock(_L0& __l0, _L1& __l1, _L2& __l2, _L3& ...__l3)
#endif // _LIBCPP_HAS_NO_VARIADICS
+#endif // !_LIBCPP_HAS_NO_THREADS
+
struct _LIBCPP_TYPE_VIS_ONLY once_flag;
#ifndef _LIBCPP_HAS_NO_VARIADICS
diff --git a/libcxx/include/shared_mutex b/libcxx/include/shared_mutex
index 00f816dc4a0..9b7f0bf7735 100644
--- a/libcxx/include/shared_mutex
+++ b/libcxx/include/shared_mutex
@@ -112,6 +112,10 @@ template <class Mutex>
#pragma GCC system_header
#endif
+#ifdef _LIBCPP_HAS_NO_THREADS
+#error <shared_mutex> is not supported on this single threaded system
+#else // !_LIBCPP_HAS_NO_THREADS
+
_LIBCPP_BEGIN_NAMESPACE_STD
class _LIBCPP_TYPE_VIS shared_timed_mutex
@@ -414,6 +418,8 @@ swap(shared_lock<_Mutex>& __x, shared_lock<_Mutex>& __y) _NOEXCEPT
_LIBCPP_END_NAMESPACE_STD
+#endif // !_LIBCPP_HAS_NO_THREADS
+
#endif // _LIBCPP_STD_VER > 11
#endif // _LIBCPP_SHARED_MUTEX
diff --git a/libcxx/include/thread b/libcxx/include/thread
index 1f1e4a2b945..808d76b82a0 100644
--- a/libcxx/include/thread
+++ b/libcxx/include/thread
@@ -106,6 +106,10 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time);
#define __STDCPP_THREADS__ __cplusplus
+#ifdef _LIBCPP_HAS_NO_THREADS
+#error <thread> is not supported on this single threaded system
+#else // !_LIBCPP_HAS_NO_THREADS
+
_LIBCPP_BEGIN_NAMESPACE_STD
template <class _Tp>
@@ -455,4 +459,6 @@ void yield() _NOEXCEPT {sched_yield();}
_LIBCPP_END_NAMESPACE_STD
+#endif // !_LIBCPP_HAS_NO_THREADS
+
#endif // _LIBCPP_THREAD
diff --git a/libcxx/src/algorithm.cpp b/libcxx/src/algorithm.cpp
index 6d5cf7c0bc8..e548856ff6e 100644
--- a/libcxx/src/algorithm.cpp
+++ b/libcxx/src/algorithm.cpp
@@ -47,12 +47,16 @@ template bool __insertion_sort_incomplete<__less<long double>&, long double*>(lo
template unsigned __sort5<__less<long double>&, long double*>(long double*, long double*, long double*, long double*, long double*, __less<long double>&);
+#ifndef _LIBCPP_HAS_NO_THREADS
static pthread_mutex_t __rs_mut = PTHREAD_MUTEX_INITIALIZER;
+#endif
unsigned __rs_default::__c_ = 0;
__rs_default::__rs_default()
{
+#ifndef _LIBCPP_HAS_NO_THREADS
pthread_mutex_lock(&__rs_mut);
+#endif
__c_ = 1;
}
@@ -63,8 +67,12 @@ __rs_default::__rs_default(const __rs_default&)
__rs_default::~__rs_default()
{
+#ifndef _LIBCPP_HAS_NO_THREADS
if (--__c_ == 0)
pthread_mutex_unlock(&__rs_mut);
+#else
+ --__c_;
+#endif
}
__rs_default::result_type
diff --git a/libcxx/src/condition_variable.cpp b/libcxx/src/condition_variable.cpp
index 061d1388d3e..5fd5fc891c1 100644
--- a/libcxx/src/condition_variable.cpp
+++ b/libcxx/src/condition_variable.cpp
@@ -7,6 +7,10 @@
//
//===----------------------------------------------------------------------===//
+#include "__config"
+
+#ifndef _LIBCPP_HAS_NO_THREADS
+
#include "condition_variable"
#include "thread"
#include "system_error"
@@ -79,3 +83,5 @@ notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk)
}
_LIBCPP_END_NAMESPACE_STD
+
+#endif // !_LIBCPP_HAS_NO_THREADS
diff --git a/libcxx/src/debug.cpp b/libcxx/src/debug.cpp
index d0e867957dc..60694a3bdb0 100644
--- a/libcxx/src/debug.cpp
+++ b/libcxx/src/debug.cpp
@@ -35,6 +35,7 @@ __get_const_db()
namespace
{
+#ifndef _LIBCPP_HAS_NO_THREADS
typedef mutex mutex_type;
typedef lock_guard<mutex_type> WLock;
typedef lock_guard<mutex_type> RLock;
@@ -45,6 +46,7 @@ mut()
static mutex_type m;
return m;
}
+#endif // !_LIBCPP_HAS_NO_THREADS
} // unnamed namespace
@@ -108,7 +110,9 @@ __libcpp_db::~__libcpp_db()
void*
__libcpp_db::__find_c_from_i(void* __i) const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
RLock _(mut());
+#endif
__i_node* i = __find_iterator(__i);
_LIBCPP_ASSERT(i != nullptr, "iterator not found in debug database.");
return i->__c_ != nullptr ? i->__c_->__c_ : nullptr;
@@ -117,7 +121,9 @@ __libcpp_db::__find_c_from_i(void* __i) const
void
__libcpp_db::__insert_ic(void* __i, const void* __c)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
if (__cbeg_ == __cend_)
return;
size_t hc = hash<const void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
@@ -138,7 +144,9 @@ __libcpp_db::__insert_ic(void* __i, const void* __c)
__c_node*
__libcpp_db::__insert_c(void* __c)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
if (__csz_ + 1 > static_cast<size_t>(__cend_ - __cbeg_))
{
size_t nc = __next_prime(2*static_cast<size_t>(__cend_ - __cbeg_) + 1);
@@ -184,7 +192,9 @@ __libcpp_db::__insert_c(void* __c)
void
__libcpp_db::__erase_i(void* __i)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
if (__ibeg_ != __iend_)
{
size_t hi = hash<void*>()(__i) % static_cast<size_t>(__iend_ - __ibeg_);
@@ -215,7 +225,9 @@ __libcpp_db::__erase_i(void* __i)
void
__libcpp_db::__invalidate_all(void* __c)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
if (__cend_ != __cbeg_)
{
size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
@@ -239,17 +251,23 @@ __libcpp_db::__invalidate_all(void* __c)
__c_node*
__libcpp_db::__find_c_and_lock(void* __c) const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
mut().lock();
+#endif
if (__cend_ == __cbeg_)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
mut().unlock();
+#endif
return nullptr;
}
size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
__c_node* p = __cbeg_[hc];
if (p == nullptr)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
mut().unlock();
+#endif
return nullptr;
}
while (p->__c_ != __c)
@@ -257,7 +275,9 @@ __libcpp_db::__find_c_and_lock(void* __c) const
p = p->__next_;
if (p == nullptr)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
mut().unlock();
+#endif
return nullptr;
}
}
@@ -281,13 +301,17 @@ __libcpp_db::__find_c(void* __c) const
void
__libcpp_db::unlock() const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
mut().unlock();
+#endif
}
void
__libcpp_db::__erase_c(void* __c)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
if (__cend_ != __cbeg_)
{
size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
@@ -322,7 +346,9 @@ __libcpp_db::__erase_c(void* __c)
void
__libcpp_db::__iterator_copy(void* __i, const void* __i0)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
__i_node* i = __find_iterator(__i);
__i_node* i0 = __find_iterator(__i0);
__c_node* c0 = i0 != nullptr ? i0->__c_ : nullptr;
@@ -348,7 +374,9 @@ __libcpp_db::__iterator_copy(void* __i, const void* __i0)
bool
__libcpp_db::__dereferenceable(const void* __i) const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
RLock _(mut());
+#endif
__i_node* i = __find_iterator(__i);
return i != nullptr && i->__c_ != nullptr && i->__c_->__dereferenceable(__i);
}
@@ -356,7 +384,9 @@ __libcpp_db::__dereferenceable(const void* __i) const
bool
__libcpp_db::__decrementable(const void* __i) const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
RLock _(mut());
+#endif
__i_node* i = __find_iterator(__i);
return i != nullptr && i->__c_ != nullptr && i->__c_->__decrementable(__i);
}
@@ -364,7 +394,9 @@ __libcpp_db::__decrementable(const void* __i) const
bool
__libcpp_db::__addable(const void* __i, ptrdiff_t __n) const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
RLock _(mut());
+#endif
__i_node* i = __find_iterator(__i);
return i != nullptr && i->__c_ != nullptr && i->__c_->__addable(__i, __n);
}
@@ -372,7 +404,9 @@ __libcpp_db::__addable(const void* __i, ptrdiff_t __n) const
bool
__libcpp_db::__subscriptable(const void* __i, ptrdiff_t __n) const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
RLock _(mut());
+#endif
__i_node* i = __find_iterator(__i);
return i != nullptr && i->__c_ != nullptr && i->__c_->__subscriptable(__i, __n);
}
@@ -380,7 +414,9 @@ __libcpp_db::__subscriptable(const void* __i, ptrdiff_t __n) const
bool
__libcpp_db::__less_than_comparable(const void* __i, const void* __j) const
{
+#ifndef _LIBCPP_HAS_NO_THREADS
RLock _(mut());
+#endif
__i_node* i = __find_iterator(__i);
__i_node* j = __find_iterator(__j);
__c_node* ci = i != nullptr ? i->__c_ : nullptr;
@@ -391,7 +427,9 @@ __libcpp_db::__less_than_comparable(const void* __i, const void* __j) const
void
__libcpp_db::swap(void* c1, void* c2)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
size_t hc = hash<void*>()(c1) % static_cast<size_t>(__cend_ - __cbeg_);
__c_node* p1 = __cbeg_[hc];
_LIBCPP_ASSERT(p1 != nullptr, "debug mode internal logic error swap A");
@@ -420,7 +458,9 @@ __libcpp_db::swap(void* c1, void* c2)
void
__libcpp_db::__insert_i(void* __i)
{
+#ifndef _LIBCPP_HAS_NO_THREADS
WLock _(mut());
+#endif
__insert_iterator(__i);
}
diff --git a/libcxx/src/future.cpp b/libcxx/src/future.cpp
index c67dc58826e..0c5c2c4488d 100644
--- a/libcxx/src/future.cpp
+++ b/libcxx/src/future.cpp
@@ -7,6 +7,10 @@
//
//===----------------------------------------------------------------------===//
+#include "__config"
+
+#ifndef _LIBCPP_HAS_NO_THREADS
+
#include "future"
#include "string"
@@ -298,3 +302,5 @@ shared_future<void>::operator=(const shared_future& __rhs)
}
_LIBCPP_END_NAMESPACE_STD
+
+#endif // !_LIBCPP_HAS_NO_THREADS
diff --git a/libcxx/src/ios.cpp b/libcxx/src/ios.cpp
index b71d7da1a8b..0bd500bf3c2 100644
--- a/libcxx/src/ios.cpp
+++ b/libcxx/src/ios.cpp
@@ -148,7 +148,7 @@ ios_base::getloc() const
}
// xalloc
-#if __has_feature(cxx_atomic)
+#if __has_feature(cxx_atomic) && !_LIBCPP_HAS_NO_THREADS
atomic<int> ios_base::__xindex_ = ATOMIC_VAR_INIT(0);
#else
int ios_base::__xindex_ = 0;
diff --git a/libcxx/src/memory.cpp b/libcxx/src/memory.cpp
index 666673fc6b4..31e823cf419 100644
--- a/libcxx/src/memory.cpp
+++ b/libcxx/src/memory.cpp
@@ -9,8 +9,10 @@
#define _LIBCPP_BUILDING_MEMORY
#include "memory"
+#ifndef _LIBCPP_HAS_NO_THREADS
#include "mutex"
#include "thread"
+#endif
_LIBCPP_BEGIN_NAMESPACE_STD
@@ -119,7 +121,7 @@ __shared_weak_count::__get_deleter(const type_info&) const _NOEXCEPT
#endif // _LIBCPP_NO_RTTI
-#if __has_feature(cxx_atomic)
+#if __has_feature(cxx_atomic) && !_LIBCPP_HAS_NO_THREADS
static const std::size_t __sp_mut_count = 16;
static pthread_mutex_t mut_back_imp[__sp_mut_count] =
@@ -172,7 +174,7 @@ __get_sp_mut(const void* p)
return muts[hash<const void*>()(p) & (__sp_mut_count-1)];
}
-#endif // __has_feature(cxx_atomic)
+#endif // __has_feature(cxx_atomic) && !_LIBCPP_HAS_NO_THREADS
void
declare_reachable(void*)
diff --git a/libcxx/src/mutex.cpp b/libcxx/src/mutex.cpp
index 07678978a67..e56271d308e 100644
--- a/libcxx/src/mutex.cpp
+++ b/libcxx/src/mutex.cpp
@@ -14,6 +14,7 @@
#include "cassert"
_LIBCPP_BEGIN_NAMESPACE_STD
+#ifndef _LIBCPP_HAS_NO_THREADS
const defer_lock_t defer_lock = {};
const try_to_lock_t try_to_lock = {};
@@ -206,18 +207,42 @@ recursive_timed_mutex::unlock() _NOEXCEPT
}
}
+#endif // !_LIBCPP_HAS_NO_THREADS
+
// If dispatch_once_f ever handles C++ exceptions, and if one can get to it
// without illegal macros (unexpected macros not beginning with _UpperCase or
// __lowercase), and if it stops spinning waiting threads, then call_once should
// call into dispatch_once_f instead of here. Relevant radar this code needs to
// keep in sync with: 7741191.
+#ifndef _LIBCPP_HAS_NO_THREADS
static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cv = PTHREAD_COND_INITIALIZER;
+#endif
void
__call_once(volatile unsigned long& flag, void* arg, void(*func)(void*))
{
+#if defined(_LIBCPP_HAS_NO_THREADS)
+ if (flag == 0)
+ {
+#ifndef _LIBCPP_NO_EXCEPTIONS
+ try
+ {
+#endif // _LIBCPP_NO_EXCEPTIONS
+ flag = 1;
+ func(arg);
+ flag = ~0ul;
+#ifndef _LIBCPP_NO_EXCEPTIONS
+ }
+ catch (...)
+ {
+ flag = 0ul;
+ throw;
+ }
+#endif // _LIBCPP_NO_EXCEPTIONS
+ }
+#else // !_LIBCPP_HAS_NO_THREADS
pthread_mutex_lock(&mut);
while (flag == 1)
pthread_cond_wait(&cv, &mut);
@@ -248,6 +273,8 @@ __call_once(volatile unsigned long& flag, void* arg, void(*func)(void*))
}
else
pthread_mutex_unlock(&mut);
+#endif // !_LIBCPP_HAS_NO_THREADS
+
}
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/src/shared_mutex.cpp b/libcxx/src/shared_mutex.cpp
index dd78a1647fe..2b78c1feb9f 100644
--- a/libcxx/src/shared_mutex.cpp
+++ b/libcxx/src/shared_mutex.cpp
@@ -7,6 +7,9 @@
//
//===----------------------------------------------------------------------===//
+#include "__config"
+#ifndef _LIBCPP_HAS_NO_THREADS
+
#define _LIBCPP_BUILDING_SHARED_MUTEX
#include "shared_mutex"
@@ -99,3 +102,5 @@ shared_timed_mutex::unlock_shared()
_LIBCPP_END_NAMESPACE_STD
+
+#endif // !_LIBCPP_HAS_NO_THREADS
diff --git a/libcxx/src/thread.cpp b/libcxx/src/thread.cpp
index e6f57c46a7d..0ced1e3bba1 100644
--- a/libcxx/src/thread.cpp
+++ b/libcxx/src/thread.cpp
@@ -7,6 +7,9 @@
//
//===----------------------------------------------------------------------===//
+#include "__config"
+#ifndef _LIBCPP_HAS_NO_THREADS
+
#include "thread"
#include "exception"
#include "vector"
@@ -225,3 +228,5 @@ __thread_struct::__make_ready_at_thread_exit(__assoc_sub_state* __s)
}
_LIBCPP_END_NAMESPACE_STD
+
+#endif // !_LIBCPP_HAS_NO_THREADS
diff --git a/libcxx/test/atomics/atomics.fences/atomic_signal_fence.pass.cpp b/libcxx/test/atomics/atomics.fences/atomic_signal_fence.pass.cpp
index 65e1d3813c9..aec060c4d5f 100644
--- a/libcxx/test/atomics/atomics.fences/atomic_signal_fence.pass.cpp
+++ b/libcxx/test/atomics/atomics.fences/atomic_signal_fence.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.fences/atomic_thread_fence.pass.cpp b/libcxx/test/atomics/atomics.fences/atomic_thread_fence.pass.cpp
index 8c2abc0442e..4f3b0e330e3 100644
--- a/libcxx/test/atomics/atomics.fences/atomic_thread_fence.pass.cpp
+++ b/libcxx/test/atomics/atomics.fences/atomic_thread_fence.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/atomic_flag_clear.pass.cpp b/libcxx/test/atomics/atomics.flag/atomic_flag_clear.pass.cpp
index 12be67c4f18..64093d639e4 100644
--- a/libcxx/test/atomics/atomics.flag/atomic_flag_clear.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/atomic_flag_clear.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/atomic_flag_clear_explicit.pass.cpp b/libcxx/test/atomics/atomics.flag/atomic_flag_clear_explicit.pass.cpp
index f1065dc544f..e1a9349c939 100644
--- a/libcxx/test/atomics/atomics.flag/atomic_flag_clear_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/atomic_flag_clear_explicit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set.pass.cpp b/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set.pass.cpp
index e3934d856f5..ae82df91954 100644
--- a/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set_explicit.pass.cpp b/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set_explicit.pass.cpp
index 83ee78ddea7..154850697c2 100644
--- a/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/atomic_flag_test_and_set_explicit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/clear.pass.cpp b/libcxx/test/atomics/atomics.flag/clear.pass.cpp
index 171f03812ab..65051af790d 100644
--- a/libcxx/test/atomics/atomics.flag/clear.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/clear.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/default.pass.cpp b/libcxx/test/atomics/atomics.flag/default.pass.cpp
index 5c077b0a166..45f5e709245 100644
--- a/libcxx/test/atomics/atomics.flag/default.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/init.pass.cpp b/libcxx/test/atomics/atomics.flag/init.pass.cpp
index 8a67e14e33c..c90509d8fbb 100644
--- a/libcxx/test/atomics/atomics.flag/init.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/init.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.flag/test_and_set.pass.cpp b/libcxx/test/atomics/atomics.flag/test_and_set.pass.cpp
index 24052754d19..210ba2050bb 100644
--- a/libcxx/test/atomics/atomics.flag/test_and_set.pass.cpp
+++ b/libcxx/test/atomics/atomics.flag/test_and_set.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.lockfree/lockfree.pass.cpp b/libcxx/test/atomics/atomics.lockfree/lockfree.pass.cpp
index 467f561eca8..a975a69a66f 100644
--- a/libcxx/test/atomics/atomics.lockfree/lockfree.pass.cpp
+++ b/libcxx/test/atomics/atomics.lockfree/lockfree.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.order/kill_dependency.pass.cpp b/libcxx/test/atomics/atomics.order/kill_dependency.pass.cpp
index 1beeb08e80c..0f0bafcbb0a 100644
--- a/libcxx/test/atomics/atomics.order/kill_dependency.pass.cpp
+++ b/libcxx/test/atomics/atomics.order/kill_dependency.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.order/memory_order.pass.cpp b/libcxx/test/atomics/atomics.order/memory_order.pass.cpp
index 82893044631..e734a4c7597 100644
--- a/libcxx/test/atomics/atomics.order/memory_order.pass.cpp
+++ b/libcxx/test/atomics/atomics.order/memory_order.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.generic/address.pass.cpp b/libcxx/test/atomics/atomics.types.generic/address.pass.cpp
index af9826f7f40..63ede41f589 100644
--- a/libcxx/test/atomics/atomics.types.generic/address.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.generic/address.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... test case crashes clang.
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.generic/bool.pass.cpp b/libcxx/test/atomics/atomics.types.generic/bool.pass.cpp
index 80e5665638c..aaf42438209 100644
--- a/libcxx/test/atomics/atomics.types.generic/bool.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.generic/bool.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.generic/cstdint_typedefs.pass.cpp b/libcxx/test/atomics/atomics.types.generic/cstdint_typedefs.pass.cpp
index eac51777dc5..a7874b9f5af 100644
--- a/libcxx/test/atomics/atomics.types.generic/cstdint_typedefs.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.generic/cstdint_typedefs.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.generic/integral.pass.cpp b/libcxx/test/atomics/atomics.types.generic/integral.pass.cpp
index 26caa5001d5..70aaa61803a 100644
--- a/libcxx/test/atomics/atomics.types.generic/integral.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.generic/integral.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.generic/integral_typedefs.pass.cpp b/libcxx/test/atomics/atomics.types.generic/integral_typedefs.pass.cpp
index c622d6e09bf..e8fae85fb4b 100644
--- a/libcxx/test/atomics/atomics.types.generic/integral_typedefs.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.generic/integral_typedefs.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.generic/trivially_copyable.pass.cpp b/libcxx/test/atomics/atomics.types.generic/trivially_copyable.pass.cpp
index 8cdd0878d47..c5c18f0a86b 100644
--- a/libcxx/test/atomics/atomics.types.generic/trivially_copyable.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.generic/trivially_copyable.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
index e9541949823..f1cc993ed33 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 34
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
index 7d84f8152b1..f667ab7f139 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 38
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
index b0902cd8e04..2a5c56e978c 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 34
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
index fdb0b7dbd14..4ba3a053f5d 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 38
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp
index b7edfcecd35..525e74aa637 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... fails assertion line 31
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp
index e1a2c5ff41d..9fe4ac81644 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 32
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp
index c9ec413eb5c..3408def9058 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... test crashes clang
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp
index 804289c9e3b..9977bd491e7 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... test crashes clang
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp
index 01d2cc6d361..4c7c0432efc 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp
index abfb83db1c8..d83bbf264de 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp
index 43b6c4f3330..acf6d439de4 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp
index 21078bbfff8..72685e4d940 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp
index 0a0fa0a16da..ed8b541291a 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... test crashes clang
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp
index cd7cfd8ab6e..e6c92eada6d 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... test crashes clang
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp
index 78120a76c1c..fc6b97b7db4 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor_explicit.pass.cpp
index 0a0cd154ccd..58772aa4d15 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor_explicit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp
index 98d4bee476a..137b6f60f74 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 34
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp
index 4071989204b..18a1605e209 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp
index 80ee0dbe65d..66918c71f1f 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 34
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp
index c6c1921d24a..5f402a9f139 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 31
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp
index b9d6c92ae30..2b9582b3c52 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 31
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp
index 6644345a075..8fe0c7d8842 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp
@@ -6,6 +6,9 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+// ... assertion fails line 31
// <atomic>
diff --git a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_var_init.pass.cpp b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_var_init.pass.cpp
index 6758c7bb5eb..5fed691da26 100644
--- a/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_var_init.pass.cpp
+++ b/libcxx/test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_var_init.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/atomics/version.pass.cpp b/libcxx/test/atomics/version.pass.cpp
index 85c42704e0d..fae2736d229 100644
--- a/libcxx/test/atomics/version.pass.cpp
+++ b/libcxx/test/atomics/version.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <atomic>
diff --git a/libcxx/test/thread/futures/futures.async/async.pass.cpp b/libcxx/test/thread/futures/futures.async/async.pass.cpp
index f67abe4ffd8..c8a742566d8 100644
--- a/libcxx/test/thread/futures/futures.async/async.pass.cpp
+++ b/libcxx/test/thread/futures/futures.async/async.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.errors/default_error_condition.pass.cpp b/libcxx/test/thread/futures/futures.errors/default_error_condition.pass.cpp
index 35afe5ab1d7..7f28b8a23b8 100644
--- a/libcxx/test/thread/futures/futures.errors/default_error_condition.pass.cpp
+++ b/libcxx/test/thread/futures/futures.errors/default_error_condition.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.errors/equivalent_error_code_int.pass.cpp b/libcxx/test/thread/futures/futures.errors/equivalent_error_code_int.pass.cpp
index 1f1cf407595..cd001765774 100644
--- a/libcxx/test/thread/futures/futures.errors/equivalent_error_code_int.pass.cpp
+++ b/libcxx/test/thread/futures/futures.errors/equivalent_error_code_int.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.errors/equivalent_int_error_condition.pass.cpp b/libcxx/test/thread/futures/futures.errors/equivalent_int_error_condition.pass.cpp
index 06fdce1bd80..05ad1ec9c6f 100644
--- a/libcxx/test/thread/futures/futures.errors/equivalent_int_error_condition.pass.cpp
+++ b/libcxx/test/thread/futures/futures.errors/equivalent_int_error_condition.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.errors/future_category.pass.cpp b/libcxx/test/thread/futures/futures.errors/future_category.pass.cpp
index 515946c67f6..7f407a061d9 100644
--- a/libcxx/test/thread/futures/futures.errors/future_category.pass.cpp
+++ b/libcxx/test/thread/futures/futures.errors/future_category.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.errors/make_error_code.pass.cpp b/libcxx/test/thread/futures/futures.errors/make_error_code.pass.cpp
index f904c46670e..3c14addf309 100644
--- a/libcxx/test/thread/futures/futures.errors/make_error_code.pass.cpp
+++ b/libcxx/test/thread/futures/futures.errors/make_error_code.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.errors/make_error_condition.pass.cpp b/libcxx/test/thread/futures/futures.errors/make_error_condition.pass.cpp
index fd0f1c585e0..52972aa373f 100644
--- a/libcxx/test/thread/futures/futures.errors/make_error_condition.pass.cpp
+++ b/libcxx/test/thread/futures/futures.errors/make_error_condition.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.future_error/code.pass.cpp b/libcxx/test/thread/futures/futures.future_error/code.pass.cpp
index fdbfa4ed9b5..e02af486fc3 100644
--- a/libcxx/test/thread/futures/futures.future_error/code.pass.cpp
+++ b/libcxx/test/thread/futures/futures.future_error/code.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.future_error/types.pass.cpp b/libcxx/test/thread/futures/futures.future_error/types.pass.cpp
index af8e219bea1..e741dd06e4b 100644
--- a/libcxx/test/thread/futures/futures.future_error/types.pass.cpp
+++ b/libcxx/test/thread/futures/futures.future_error/types.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.future_error/what.pass.cpp b/libcxx/test/thread/futures/futures.future_error/what.pass.cpp
index 5e543504df8..1a66e4a618e 100644
--- a/libcxx/test/thread/futures/futures.future_error/what.pass.cpp
+++ b/libcxx/test/thread/futures/futures.future_error/what.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// LWG 2056 changed the values of future_errc, so if we're using new headers
// with an old library we'll get incorrect messages.
diff --git a/libcxx/test/thread/futures/futures.overview/future_errc.pass.cpp b/libcxx/test/thread/futures/futures.overview/future_errc.pass.cpp
index 7b3b70a39a6..1e6fcb76a0e 100644
--- a/libcxx/test/thread/futures/futures.overview/future_errc.pass.cpp
+++ b/libcxx/test/thread/futures/futures.overview/future_errc.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.overview/future_status.pass.cpp b/libcxx/test/thread/futures/futures.overview/future_status.pass.cpp
index 0b6d32ca4c7..2c196aaac56 100644
--- a/libcxx/test/thread/futures/futures.overview/future_status.pass.cpp
+++ b/libcxx/test/thread/futures/futures.overview/future_status.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.overview/is_error_code_enum_future_errc.pass.cpp b/libcxx/test/thread/futures/futures.overview/is_error_code_enum_future_errc.pass.cpp
index 85b79932d61..499de52598b 100644
--- a/libcxx/test/thread/futures/futures.overview/is_error_code_enum_future_errc.pass.cpp
+++ b/libcxx/test/thread/futures/futures.overview/is_error_code_enum_future_errc.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.overview/launch.pass.cpp b/libcxx/test/thread/futures/futures.overview/launch.pass.cpp
index 5f4663ca5a0..da54f7ee673 100644
--- a/libcxx/test/thread/futures/futures.overview/launch.pass.cpp
+++ b/libcxx/test/thread/futures/futures.overview/launch.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/alloc_ctor.pass.cpp b/libcxx/test/thread/futures/futures.promise/alloc_ctor.pass.cpp
index dca399fc5a7..3b473508346 100644
--- a/libcxx/test/thread/futures/futures.promise/alloc_ctor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/alloc_ctor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/default.pass.cpp b/libcxx/test/thread/futures/futures.promise/default.pass.cpp
index 47aec02d36e..95c9657c633 100644
--- a/libcxx/test/thread/futures/futures.promise/default.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/dtor.pass.cpp b/libcxx/test/thread/futures/futures.promise/dtor.pass.cpp
index cd4fafb8f63..78912f12adb 100644
--- a/libcxx/test/thread/futures/futures.promise/dtor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/dtor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/get_future.pass.cpp b/libcxx/test/thread/futures/futures.promise/get_future.pass.cpp
index e7e78c72563..a7d084ee787 100644
--- a/libcxx/test/thread/futures/futures.promise/get_future.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/get_future.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/move_assign.pass.cpp b/libcxx/test/thread/futures/futures.promise/move_assign.pass.cpp
index c378495c675..c3097df7499 100644
--- a/libcxx/test/thread/futures/futures.promise/move_assign.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/move_assign.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/move_ctor.pass.cpp b/libcxx/test/thread/futures/futures.promise/move_ctor.pass.cpp
index 4bd013a9ddf..eeec4fb15b9 100644
--- a/libcxx/test/thread/futures/futures.promise/move_ctor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/move_ctor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_exception.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_exception.pass.cpp
index 13c9aa9c227..51c05eb803c 100644
--- a/libcxx/test/thread/futures/futures.promise/set_exception.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_exception.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp
index 7f9e4183f30..5e57692563d 100644
--- a/libcxx/test/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_lvalue.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_lvalue.pass.cpp
index 4ee5fbbd459..cdc37775012 100644
--- a/libcxx/test/thread/futures/futures.promise/set_lvalue.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_lvalue.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp
index eef353aee6f..18f87c596a0 100644
--- a/libcxx/test/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_rvalue.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_rvalue.pass.cpp
index 3cbacea6a6e..dab4bf7e9c8 100644
--- a/libcxx/test/thread/futures/futures.promise/set_rvalue.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_rvalue.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp
index 1e3108c222e..8f3b76865e2 100644
--- a/libcxx/test/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp
index bf8f21b1d34..ec50cc31029 100644
--- a/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp
index ee6f62f1ceb..8c092084668 100644
--- a/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_value_const.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_value_const.pass.cpp
index 94a9f923346..6673f630757 100644
--- a/libcxx/test/thread/futures/futures.promise/set_value_const.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_value_const.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/set_value_void.pass.cpp b/libcxx/test/thread/futures/futures.promise/set_value_void.pass.cpp
index c3b7e789ed2..5012e0bfe5f 100644
--- a/libcxx/test/thread/futures/futures.promise/set_value_void.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/set_value_void.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/swap.pass.cpp b/libcxx/test/thread/futures/futures.promise/swap.pass.cpp
index 5e292b0689e..1ed3e646813 100644
--- a/libcxx/test/thread/futures/futures.promise/swap.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.promise/uses_allocator.pass.cpp b/libcxx/test/thread/futures/futures.promise/uses_allocator.pass.cpp
index 1f30682aab9..458826e956e 100644
--- a/libcxx/test/thread/futures/futures.promise/uses_allocator.pass.cpp
+++ b/libcxx/test/thread/futures/futures.promise/uses_allocator.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/copy_assign.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/copy_assign.pass.cpp
index e6b86d18204..b23ba196ec3 100644
--- a/libcxx/test/thread/futures/futures.shared_future/copy_assign.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/copy_assign.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/copy_ctor.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/copy_ctor.pass.cpp
index 445c189b13f..425d1f9be96 100644
--- a/libcxx/test/thread/futures/futures.shared_future/copy_ctor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/copy_ctor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/ctor_future.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/ctor_future.pass.cpp
index 207473e04d9..3a78b80f063 100644
--- a/libcxx/test/thread/futures/futures.shared_future/ctor_future.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/ctor_future.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/default.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/default.pass.cpp
index dc056e8ba0b..92927f5f693 100644
--- a/libcxx/test/thread/futures/futures.shared_future/default.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/dtor.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/dtor.pass.cpp
index a06a313b3b3..baa89cb12b1 100644
--- a/libcxx/test/thread/futures/futures.shared_future/dtor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/dtor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/get.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/get.pass.cpp
index 16723ea681b..c5ee234b127 100644
--- a/libcxx/test/thread/futures/futures.shared_future/get.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/get.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/move_assign.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/move_assign.pass.cpp
index 36e0168d075..6b58f41c908 100644
--- a/libcxx/test/thread/futures/futures.shared_future/move_assign.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/move_assign.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/move_ctor.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/move_ctor.pass.cpp
index 35b822182f5..32b8fd77c67 100644
--- a/libcxx/test/thread/futures/futures.shared_future/move_ctor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/move_ctor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/wait.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/wait.pass.cpp
index b14d7031bce..4293fcab356 100644
--- a/libcxx/test/thread/futures/futures.shared_future/wait.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/wait.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/wait_for.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/wait_for.pass.cpp
index ae678ff44f2..e5a4754e38a 100644
--- a/libcxx/test/thread/futures/futures.shared_future/wait_for.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/wait_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.shared_future/wait_until.pass.cpp b/libcxx/test/thread/futures/futures.shared_future/wait_until.pass.cpp
index 1a0c9b3e9c1..258f9bf07b7 100644
--- a/libcxx/test/thread/futures/futures.shared_future/wait_until.pass.cpp
+++ b/libcxx/test/thread/futures/futures.shared_future/wait_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/assign_move.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/assign_move.pass.cpp
index a0f711aaa78..18786f4eb7a 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/assign_move.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/assign_move.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_default.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_default.pass.cpp
index f53b26e2949..76904962a77 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_default.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func.pass.cpp
index 58e9982fcf9..2eee2cbc2d5 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func_alloc.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func_alloc.pass.cpp
index e7070c58313..347c5cd399e 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func_alloc.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_func_alloc.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_move.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_move.pass.cpp
index c668a678ef8..88f07228175 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_move.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/ctor_move.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/dtor.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/dtor.pass.cpp
index 9b769349716..e24232d1b22 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/dtor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/dtor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/get_future.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/get_future.pass.cpp
index d6efbf1305f..13b5db11066 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/get_future.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/get_future.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/make_ready_at_thread_exit.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/make_ready_at_thread_exit.pass.cpp
index accbd75b051..61a6a4f8796 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/make_ready_at_thread_exit.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/make_ready_at_thread_exit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/operator.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/operator.pass.cpp
index b77cf314f2c..2a09353b1e6 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/operator.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/operator.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/reset.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/reset.pass.cpp
index 3ca3d147464..9d38d9b409c 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/reset.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/reset.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.members/swap.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.members/swap.pass.cpp
index 9f549aa3fc1..33763bef0d0 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.members/swap.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.members/swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/swap.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/swap.pass.cpp
index ef99f615354..668732b9b24 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/swap.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/uses_allocator.pass.cpp b/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/uses_allocator.pass.cpp
index 130390faf34..986f71e29a4 100644
--- a/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/uses_allocator.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/futures.task.nonmembers/uses_allocator.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.tas/types.pass.cpp b/libcxx/test/thread/futures/futures.tas/types.pass.cpp
index c66f359a8a4..dd1724ddbda 100644
--- a/libcxx/test/thread/futures/futures.tas/types.pass.cpp
+++ b/libcxx/test/thread/futures/futures.tas/types.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/default.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/default.pass.cpp
index 915f118ff65..84cb84650dc 100644
--- a/libcxx/test/thread/futures/futures.unique_future/default.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/dtor.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/dtor.pass.cpp
index 1bc141bca68..5e9697bb939 100644
--- a/libcxx/test/thread/futures/futures.unique_future/dtor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/dtor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/get.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/get.pass.cpp
index 1b0ee2b6ef4..758e38a7dae 100644
--- a/libcxx/test/thread/futures/futures.unique_future/get.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/get.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/move_assign.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/move_assign.pass.cpp
index 79dcd7d13f2..8d38b81f0cd 100644
--- a/libcxx/test/thread/futures/futures.unique_future/move_assign.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/move_assign.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/move_ctor.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/move_ctor.pass.cpp
index af23e4d9ee9..e12c920886f 100644
--- a/libcxx/test/thread/futures/futures.unique_future/move_ctor.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/move_ctor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/share.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/share.pass.cpp
index a19ce2e3917..794b5ce38fe 100644
--- a/libcxx/test/thread/futures/futures.unique_future/share.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/share.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/wait.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/wait.pass.cpp
index 68c0d14c1ac..e10d37cf806 100644
--- a/libcxx/test/thread/futures/futures.unique_future/wait.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/wait.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/wait_for.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/wait_for.pass.cpp
index 2a81a2c7b24..0a381d9ca2f 100644
--- a/libcxx/test/thread/futures/futures.unique_future/wait_for.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/wait_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/futures.unique_future/wait_until.pass.cpp b/libcxx/test/thread/futures/futures.unique_future/wait_until.pass.cpp
index 8ac0bc82db5..70d7e57ed7e 100644
--- a/libcxx/test/thread/futures/futures.unique_future/wait_until.pass.cpp
+++ b/libcxx/test/thread/futures/futures.unique_future/wait_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/futures/version.pass.cpp b/libcxx/test/thread/futures/version.pass.cpp
index 5ac4e0fd0a4..6730a1477db 100644
--- a/libcxx/test/thread/futures/version.pass.cpp
+++ b/libcxx/test/thread/futures/version.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <future>
diff --git a/libcxx/test/thread/macro.pass.cpp b/libcxx/test/thread/macro.pass.cpp
index 243640d0e37..c1b1377d6cc 100644
--- a/libcxx/test/thread/macro.pass.cpp
+++ b/libcxx/test/thread/macro.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.condition/cv_status.pass.cpp b/libcxx/test/thread/thread.condition/cv_status.pass.cpp
index d5e094766d3..fe5fa05ad24 100644
--- a/libcxx/test/thread/thread.condition/cv_status.pass.cpp
+++ b/libcxx/test/thread/thread.condition/cv_status.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp b/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp
index e4f193a3c5c..2b8772f92ed 100644
--- a/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp
+++ b/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/default.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/default.pass.cpp
index a9124131103..6f43564c3b3 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/default.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/destructor.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/destructor.pass.cpp
index 9828fbb2614..437ed965b19 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/destructor.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/destructor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/native_handle.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/native_handle.pass.cpp
index 52b73c08380..bf28e01a0e8 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/native_handle.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/native_handle.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_all.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_all.pass.cpp
index 0b50e26bb2f..fd80ee99c96 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_all.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_all.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp
index c11258564c9..6236a13df80 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait.pass.cpp
index c4afc530c16..236eecc919a 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
index 038c946709f..ca48eee19d2 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp
index ef7a9b67ed0..0ee40d161b7 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_pred.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_pred.pass.cpp
index 22b82d2c9e7..45e0b812416 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_pred.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_pred.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp
index 476cec50df7..d87a188e93d 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp
index b7a4b3a191c..90ffb1d0b29 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/default.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/default.pass.cpp
index 853fc1ae391..210060a7461 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/default.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/destructor.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/destructor.pass.cpp
index a14c568c50f..6bdca7b010c 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/destructor.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/destructor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_all.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_all.pass.cpp
index 389d4bc5d8a..27ead95682a 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_all.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_all.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp
index 8ad0ca37c9b..98f6c432c97 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.exception.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.exception.pass.cpp
index dd4879ded46..522c61b02d1 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.exception.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.exception.pass.cpp
@@ -1,3 +1,14 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+
#include <thread>
#include <condition_variable>
#include <mutex>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.pass.cpp
index b61116702c5..f5c8926e34b 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.exception.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.exception.pass.cpp
index 7eb4b33558b..1906b589250 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.exception.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.exception.pass.cpp
@@ -1,3 +1,14 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
+
#include <thread>
#include <condition_variable>
#include <mutex>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp
index 89759ac934b..a4b4ed991f2 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp
index bc4b7c342bb..b2403079275 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_pred.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_pred.pass.cpp
index 9b4fab3d5c2..921ad69f145 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_pred.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_pred.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp
index 15bf80953f1..1994ebdfe60 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp
index 1490e1157f8..c0fea0355b9 100644
--- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp
+++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.condition/version.pass.cpp b/libcxx/test/thread/thread.condition/version.pass.cpp
index 517c93b7f48..12a775e8339 100644
--- a/libcxx/test/thread/thread.condition/version.pass.cpp
+++ b/libcxx/test/thread/thread.condition/version.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <condition_variable>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock.algorithm/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock.algorithm/lock.pass.cpp
index 14c79a1098a..f67ca216982 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock.algorithm/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock.algorithm/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock.algorithm/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock.algorithm/try_lock.pass.cpp
index bdb76c67342..f0c54b71883 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock.algorithm/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock.algorithm/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/adopt_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/adopt_lock.pass.cpp
index 6f6888478df..83271009a67 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/adopt_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/adopt_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
index d47222d19f2..a15405fcd98 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/types.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/types.pass.cpp
index 20aa62e43cd..5238ed67064 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/types.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.guard/types.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/default.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/default.pass.cpp
index 271368000c9..2c1c665fded 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/default.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp
index 73936b78ac4..8676f2ca047 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp
index cf638614305..f59d2e82698 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
index 01bfbfd395f..c8a0287314b 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp
index b4f602515a2..9082e57b64a 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp
index 3a8b61ae977..bbc38fcadb1 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp
index ffe329c2b39..9816e57f692 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp
index baf08de559c..5d188ab0673 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp
index 9d06d3f8c74..f2d4e0deb73 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
index ecac47976c4..f1500652bad 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp
index d65fbfafe6a..82b1ff86505 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp
index d076e529630..5867465a662 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp
index 8efffc46081..9d38983be72 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp
index 9e4b3c8b9a1..eb08a45cde6 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/member_swap.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/member_swap.pass.cpp
index 6a7a39e9620..8505763e44b 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/member_swap.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/member_swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/nonmember_swap.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/nonmember_swap.pass.cpp
index 03bf5e89bb7..057dbc4cd3b 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/nonmember_swap.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/nonmember_swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/release.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/release.pass.cpp
index a836b35dfa1..65ddca62472 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/release.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/release.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/mutex.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/mutex.pass.cpp
index 4b4f6c617a1..4eb75d8f050 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/mutex.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/mutex.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/op_bool.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/op_bool.pass.cpp
index 177a69e9d06..d079d2d8b03 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/op_bool.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/op_bool.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/owns_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/owns_lock.pass.cpp
index a10c588b5e0..d64b0aa6a73 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/owns_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/owns_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/types.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/types.pass.cpp
index 353735739b3..c153b455f40 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/types.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.shared/types.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp
index 55038c76a65..a49bc507171 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp
index 2eb1c3a569e..4dff853088a 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp
index f36600c6305..aa640ee6d74 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
index 4b08aca1664..1f7217a8300 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp
index ff8043b530e..9c3a7b6505a 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp
index f475ec1b4ba..bf622311f01 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp
index 8370c563f9f..33e400b0da8 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp
index 8faf88fd444..2ead6709773 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp
index b6c64f50404..cea58c554a9 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp
index c101d89013b..f5408df9819 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp
index 40d9489ee02..bd88577f0a2 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp
index 3e7d13a4c34..558f079463a 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp
index 2b435e06f51..24e4d109a09 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp
index 1318c86d202..bbabfc41df1 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp
index fd3931a29b0..598d53a65c8 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp
index d74247e097e..3fc8c28f507 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp
index 4252de15146..89c28e6be73 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp
index 78b0c6aa7f0..bc1e3e5eb77 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp
index 0d2e3623ab4..7004ac0092e 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp
index 2e2db5da134..f53af35ff28 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/types.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/types.pass.cpp
index aba22a7e29b..f8bcb6d0d22 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/types.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/thread.lock.unique/types.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.lock/types.pass.cpp b/libcxx/test/thread/thread.mutex/thread.lock/types.pass.cpp
index 8a34bcbb3c6..64df0680b0b 100644
--- a/libcxx/test/thread/thread.mutex/thread.lock/types.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.lock/types.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/default.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/default.pass.cpp
index 704d7162eb9..4de42fbd024 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/default.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp
index 8fde8181381..ba2d54d5866 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/native_handle.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/native_handle.pass.cpp
index 59c762a04ce..12c80f02c34 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/native_handle.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/native_handle.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp
index 6ef01602dee..fe8f351d7db 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/default.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/default.pass.cpp
index bc775edfac4..8c5d26675d3 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/default.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp
index cd48151d532..abebe906378 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/native_handle.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/native_handle.pass.cpp
index fb95294663b..10626bc4072 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/native_handle.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/native_handle.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp
index f63e0ef990a..ff546d4ad66 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/default.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/default.pass.cpp
index f45382d5b6f..a90b6c9c829 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/default.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock.pass.cpp
index 153ce62ab65..b4f9ba38ebf 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock_shared.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock_shared.pass.cpp
index 724a7b0a925..ac5e2064776 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock_shared.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock_shared.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock.pass.cpp
index aa6f5fb0316..33b069600e2 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_for.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_for.pass.cpp
index e97b31316ff..98cd8f975b5 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_for.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared.pass.cpp
index a34633e8fba..a006e176857 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_for.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_for.pass.cpp
index 528c69afcef..b2cc15e53e3 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_for.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_until.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_until.pass.cpp
index a6238e354df..d1b11210466 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_until.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until.pass.cpp
index 8670fbfab48..5a8e62408f6 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <shared_mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/default.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/default.pass.cpp
index 5956540e85c..33320a7e260 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/default.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp
index a4b41acc6ca..fe2dd825c20 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp
index d5a06bfcbb0..b32a2664551 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp
index 5e4d5f13a84..46222a70c8d 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp
index f19dec2675a..6c9c442ab12 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/default.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/default.pass.cpp
index a4c5110e48c..56e1874dc12 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/default.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp
index 32bedb3e9ff..91f747bc1ab 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp
index d56e8bc2fd2..63c3cfee38a 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp
index 972fc637f04..3c1d6ddc6f4 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp
index e5e91663722..066eb7b3064 100644
--- a/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
diff --git a/libcxx/test/thread/thread.mutex/thread.once/thread.once.callonce/call_once.pass.cpp b/libcxx/test/thread/thread.mutex/thread.once/thread.once.callonce/call_once.pass.cpp
index b4f76b45c5b..5395c85495f 100644
--- a/libcxx/test/thread/thread.mutex/thread.once/thread.once.callonce/call_once.pass.cpp
+++ b/libcxx/test/thread/thread.mutex/thread.once/thread.once.callonce/call_once.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <mutex>
@@ -133,7 +135,15 @@ void f42()
class MoveOnly
{
+#if !defined(__clang__)
+ // GCC 4.8 complains about the following being private
+public:
+ MoveOnly(const MoveOnly&)
+ {
+ }
+#else
MoveOnly(const MoveOnly&);
+#endif
public:
MoveOnly() {}
MoveOnly(MoveOnly&&) {}
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp
index 9a7f8dcab27..476ca0c4ed2 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp
index 1a5f3208eed..b8c7a742b6b 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp
index e5568bae29b..9b724f74178 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/default.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/default.pass.cpp
index cd9c2c407b5..64d5a935ba5 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/default.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp
index 17268abf1d5..36e0fbd7b59 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
index e068c04b320..20c8da1de92 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/assign.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/assign.pass.cpp
index b8727d0a663..585f7ea98a0 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/assign.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/assign.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/copy.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/copy.pass.cpp
index 6d17dfcb3d2..e8c38016b28 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/copy.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/copy.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/default.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/default.pass.cpp
index b315473b5ff..0037deb1dd6 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/default.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/default.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp
index 2ff273c1389..6dd4c3ec4f5 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/lt.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/lt.pass.cpp
index 099781fb72f..de52b1d00cd 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/lt.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/lt.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp
index 54fc739173d..126965fe3fc 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/thread_id.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/thread_id.pass.cpp
index d407dfc5b3c..bb7f2aa0dc2 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/thread_id.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.id/thread_id.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <functional>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
index dbb98b5ff96..5a312324400 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp
index 6af4f3bf465..a5ea55a5549 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp
index 32faef42fc7..2559303e142 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp
index 9c90eb729ea..351c1cf45b2 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
index 1aae922f048..37c2d9c9bac 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp
index 820091edd0e..e8dede17b5d 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.static/hardware_concurrency.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.static/hardware_concurrency.pass.cpp
index 256edc2716f..4d1ffad4593 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.static/hardware_concurrency.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.static/hardware_concurrency.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/types.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/types.pass.cpp
index e5094f7deb2..a5bf77031cc 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/types.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/types.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.this/get_id.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.this/get_id.pass.cpp
index ef6615b3fe3..3b4b7823a83 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.this/get_id.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.this/get_id.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
index f66b9627985..bffb5f38b3c 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp
index 2f3bb9a0823..9f3941b93ad 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/thread.thread.this/yield.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.this/yield.pass.cpp
index 52f53a6a483..daf5b0cf7ab 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.this/yield.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.this/yield.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/thread/thread.threads/version.pass.cpp b/libcxx/test/thread/thread.threads/version.pass.cpp
index 6d272c79321..d16b0eb0684 100644
--- a/libcxx/test/thread/thread.threads/version.pass.cpp
+++ b/libcxx/test/thread/thread.threads/version.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <thread>
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp
index 0c803246f02..cd79fdb0d04 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp
index 9f93ae8a17a..2fd9d5a8fcb 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp
index 1c274d19703..5c082cc279e 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp
index 77412235b46..f53f44256d5 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp
index 6e6f63571ec..fc4c47a20d3 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp
index f6a20857da7..19482dc0ad5 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp
index 0420734a30f..e3ac84a4fa5 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp
@@ -6,6 +6,8 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: libcpp-has-no-threads
// <memory>
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp
index 49fd1b65641..566e95adec8 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp
index 94d06158956..b423604463f 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp
index 83ee45f3e0a..f65f3ebf8c1 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp
index 2b3bb8bc489..68642002d70 100644
--- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp
+++ b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
//
+// UNSUPPORTED: libcpp-has-no-threads
+//
// This test uses new symbols that were not defined in the libc++ shipped on
// darwin11 and darwin12:
// XFAIL: with_system_lib=x86_64-apple-darwin11
OpenPOWER on IntegriCloud