//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03 // Aligned allocations are not supported on macOS < 10.13 // Note: use 'unsupported' instead of 'xfail' to ensure // we won't pass prior to c++17. // UNSUPPORTED: with_system_cxx_lib=macosx10.12 // UNSUPPORTED: with_system_cxx_lib=macosx10.11 // UNSUPPORTED: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.9 // // template // pair // get_temporary_buffer(ptrdiff_t n); // // template // void // return_temporary_buffer(T* p); #include #include #include "test_macros.h" struct alignas(32) A { int field; }; int main(int, char**) { std::pair ip = std::get_temporary_buffer(5); assert(!(ip.first == nullptr) ^ (ip.second == 0)); assert(reinterpret_cast(ip.first) % alignof(A) == 0); std::return_temporary_buffer(ip.first); return 0; }