Revert "[libc++] Build the dylib with C++17 to allow aligned new/delete"

This reverts commit 1ac403bd14, which
broke some non-libc++ build bots because they use an ancient CMake.
This commit is contained in:
Louis Dionne
2020-03-24 22:53:47 -04:00
parent 2488ea428d
commit 64a9c944fc
2 changed files with 12 additions and 6 deletions

View File

@@ -520,10 +520,10 @@ remove_flags(-Wno-pedantic -pedantic-errors -pedantic)
# Required flags ==============================================================
function(cxx_add_basic_build_flags target)
# Require C++17 for all targets. C++17 is needed to use aligned allocation
# in the dylib.
# Require C++14 for all targets. C++14 is needed to ensure constant
# initialization for certain globals (ex global memory resources).
set_target_properties(${target} PROPERTIES
CXX_STANDARD 17
CXX_STANDARD 14
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO)

View File

@@ -26,15 +26,21 @@ public:
} __tickets[64];
};
ptrdiff_t& __expected;
unique_ptr<__state_t[]> __state;
ptrdiff_t& __expected;
unique_ptr<char[]> __state_allocation;
__state_t* __state;
_LIBCPP_HIDDEN
__barrier_algorithm_base(ptrdiff_t& __expected)
: __expected(__expected)
{
size_t const __count = (__expected + 1) >> 1;
__state = unique_ptr<__state_t[]>(new __state_t[__count]);
size_t const __size = sizeof(__state_t) * __count;
size_t __allocation_size = __size + alignof(__state_t);
__state_allocation = unique_ptr<char[]>(new char[__allocation_size]);
void* __allocation = __state_allocation.get();
void* const __state_ = align(alignof(__state_t), __size, __allocation, __allocation_size);
__state = new (__state_) __barrier_algorithm_base::__state_t[__count];
}
_LIBCPP_HIDDEN
bool __arrive(__barrier_phase_t __old_phase)