[PATCH] [libc++] Allow libc++ to be built on systems without POSIX threads

Jon Roelofs jonathan at codesourcery.com
Fri Sep 5 11:54:30 PDT 2014


Fix a couple of nits, and add in the XFAILs as UNSUPPORTEDs.

http://reviews.llvm.org/D3969

Files:
  include/__mutex_base
  include/atomic
  include/condition_variable
  include/future
  include/memory
  include/mutex
  include/shared_mutex
  include/thread
  src/algorithm.cpp
  src/condition_variable.cpp
  src/debug.cpp
  src/future.cpp
  src/memory.cpp
  src/mutex.cpp
  src/shared_mutex.cpp
  src/thread.cpp
  test/atomics/atomics.fences/atomic_thread_fence.pass.cpp
  test/atomics/atomics.flag/atomic_flag_clear.pass.cpp
  test/atomics/atomics.flag/atomic_flag_clear_explicit.pass.cpp
  test/atomics/atomics.flag/atomic_flag_test_and_set.pass.cpp
  test/atomics/atomics.flag/atomic_flag_test_and_set_explicit.pass.cpp
  test/atomics/atomics.flag/clear.pass.cpp
  test/atomics/atomics.flag/default.pass.cpp
  test/atomics/atomics.flag/init.pass.cpp
  test/atomics/atomics.flag/test_and_set.pass.cpp
  test/atomics/atomics.lockfree/lockfree.pass.cpp
  test/atomics/atomics.order/kill_dependency.pass.cpp
  test/atomics/atomics.order/memory_order.pass.cpp
  test/atomics/atomics.types.generic/address.pass.cpp
  test/atomics/atomics.types.generic/bool.pass.cpp
  test/atomics/atomics.types.generic/cstdint_typedefs.pass.cpp
  test/atomics/atomics.types.generic/integral.pass.cpp
  test/atomics/atomics.types.generic/integral_typedefs.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp
  test/atomics/atomics.types.operations/atomics.types.operations.req/atomic_var_init.pass.cpp
  test/atomics/version.pass.cpp
  test/thread/futures/futures.async/async.pass.cpp
  test/thread/futures/futures.errors/default_error_condition.pass.cpp
  test/thread/futures/futures.errors/equivalent_error_code_int.pass.cpp
  test/thread/futures/futures.errors/equivalent_int_error_condition.pass.cpp
  test/thread/futures/futures.errors/future_category.pass.cpp
  test/thread/futures/futures.errors/make_error_code.pass.cpp
  test/thread/futures/futures.errors/make_error_condition.pass.cpp
  test/thread/futures/futures.future_error/code.pass.cpp
  test/thread/futures/futures.future_error/types.pass.cpp
  test/thread/futures/futures.future_error/what.pass.cpp
  test/thread/futures/futures.overview/future_errc.pass.cpp
  test/thread/futures/futures.overview/future_status.pass.cpp
  test/thread/futures/futures.overview/is_error_code_enum_future_errc.pass.cpp
  test/thread/futures/futures.overview/launch.pass.cpp
  test/thread/futures/futures.promise/alloc_ctor.pass.cpp
  test/thread/futures/futures.promise/default.pass.cpp
  test/thread/futures/futures.promise/dtor.pass.cpp
  test/thread/futures/futures.promise/get_future.pass.cpp
  test/thread/futures/futures.promise/move_assign.pass.cpp
  test/thread/futures/futures.promise/move_ctor.pass.cpp
  test/thread/futures/futures.promise/set_exception.pass.cpp
  test/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp
  test/thread/futures/futures.promise/set_lvalue.pass.cpp
  test/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp
  test/thread/futures/futures.promise/set_rvalue.pass.cpp
  test/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp
  test/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp
  test/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp
  test/thread/futures/futures.promise/set_value_const.pass.cpp
  test/thread/futures/futures.promise/set_value_void.pass.cpp
  test/thread/futures/futures.promise/swap.pass.cpp
  test/thread/futures/futures.promise/uses_allocator.pass.cpp
  test/thread/futures/futures.shared_future/copy_assign.pass.cpp
  test/thread/futures/futures.shared_future/copy_ctor.pass.cpp
  test/thread/futures/futures.shared_future/ctor_future.pass.cpp
  test/thread/futures/futures.shared_future/default.pass.cpp
  test/thread/futures/futures.shared_future/dtor.pass.cpp
  test/thread/futures/futures.shared_future/get.pass.cpp
  test/thread/futures/futures.shared_future/move_assign.pass.cpp
  test/thread/futures/futures.shared_future/move_ctor.pass.cpp
  test/thread/futures/futures.shared_future/wait.pass.cpp
  test/thread/futures/futures.shared_future/wait_for.pass.cpp
  test/thread/futures/futures.shared_future/wait_until.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/assign_move.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/ctor_default.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/ctor_func.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/ctor_func_alloc.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/ctor_move.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/dtor.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/get_future.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/make_ready_at_thread_exit.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/operator.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/reset.pass.cpp
  test/thread/futures/futures.tas/futures.task.members/swap.pass.cpp
  test/thread/futures/futures.tas/futures.task.nonmembers/swap.pass.cpp
  test/thread/futures/futures.tas/futures.task.nonmembers/uses_allocator.pass.cpp
  test/thread/futures/futures.tas/types.pass.cpp
  test/thread/futures/futures.unique_future/default.pass.cpp
  test/thread/futures/futures.unique_future/dtor.pass.cpp
  test/thread/futures/futures.unique_future/get.pass.cpp
  test/thread/futures/futures.unique_future/move_assign.pass.cpp
  test/thread/futures/futures.unique_future/move_ctor.pass.cpp
  test/thread/futures/futures.unique_future/share.pass.cpp
  test/thread/futures/futures.unique_future/wait.pass.cpp
  test/thread/futures/futures.unique_future/wait_for.pass.cpp
  test/thread/futures/futures.unique_future/wait_until.pass.cpp
  test/thread/futures/version.pass.cpp
  test/thread/macro.pass.cpp
  test/thread/thread.condition/cv_status.pass.cpp
  test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/default.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/destructor.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/native_handle.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/notify_all.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/wait.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/wait_pred.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp
  test/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/default.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/destructor.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/notify_all.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait.exception.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait_for.exception.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait_pred.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp
  test/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp
  test/thread/thread.condition/version.pass.cpp
  test/thread/thread.mutex/thread.lock.algorithm/lock.pass.cpp
  test/thread/thread.mutex/thread.lock.algorithm/try_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.guard/adopt_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.guard/types.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/default.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/member_swap.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/nonmember_swap.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/release.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/mutex.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/op_bool.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/owns_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.shared/types.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp
  test/thread/thread.mutex/thread.lock/thread.lock.unique/types.pass.cpp
  test/thread/thread.mutex/thread.lock/types.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/default.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/native_handle.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/default.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/native_handle.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/default.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock_shared.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_for.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_for.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_until.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/default.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/default.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp
  test/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp
  test/thread/thread.mutex/thread.once/thread.once.callonce/call_once.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.constr/default.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.id/assign.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.id/copy.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.id/default.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.id/lt.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.id/thread_id.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp
  test/thread/thread.threads/thread.thread.class/thread.thread.static/hardware_concurrency.pass.cpp
  test/thread/thread.threads/thread.thread.class/types.pass.cpp
  test/thread/thread.threads/thread.thread.this/get_id.pass.cpp
  test/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
  (14 more files...)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3969.13336.patch
Type: text/x-patch
Size: 152431 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140905/f5d9db08/attachment.bin>


More information about the cfe-commits mailing list