123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- //===----------------------------------------------------------------------===//
- //
- // 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
- //
- //===----------------------------------------------------------------------===//
- // #include <memory>
- // void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
- #include <memory>
- #include <cassert>
- #include "test_macros.h"
- int main(int, char**)
- {
- const unsigned N = 20;
- char buf[N];
- void* r;
- void* p = &buf[0];
- std::size_t s = N;
- r = std::align(4, 10, p, s);
- assert(p == &buf[0]);
- assert(r == p);
- assert(s == N);
- p = &buf[1];
- s = N;
- r = std::align(4, 10, p, s);
- assert(p == &buf[4]);
- assert(r == p);
- assert(s == N-3);
- p = &buf[2];
- s = N;
- r = std::align(4, 10, p, s);
- assert(p == &buf[4]);
- assert(r == p);
- assert(s == N-2);
- p = &buf[3];
- s = N;
- r = std::align(4, 10, p, s);
- assert(p == &buf[4]);
- assert(r == p);
- assert(s == N-1);
- p = &buf[4];
- s = N;
- r = std::align(4, 10, p, s);
- assert(p == &buf[4]);
- assert(r == p);
- assert(s == N);
- p = &buf[0];
- s = N;
- r = std::align(4, N, p, s);
- assert(p == &buf[0]);
- assert(r == p);
- assert(s == N);
- p = &buf[1];
- s = N-1;
- r = std::align(4, N-4, p, s);
- assert(p == &buf[4]);
- assert(r == p);
- assert(s == N-4);
- p = &buf[1];
- s = N-1;
- r = std::align(4, N-3, p, s);
- assert(p == &buf[1]);
- assert(r == nullptr);
- assert(s == N-1);
- p = &buf[0];
- s = N;
- r = std::align(1, N+1, p, s);
- assert(p == &buf[0]);
- assert(r == nullptr);
- assert(s == N);
- return 0;
- }
|