brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 1fc29f7 Raw
89 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// #include <memory>10 11// void* align(size_t alignment, size_t size, void*& ptr, size_t& space);12 13#include <cassert>14#include <cstddef>15#include <memory>16 17#include "test_macros.h"18 19int main(int, char**)20{21    const unsigned N = 20;22    char buf[N];23    void* r;24    void* p = &buf[0];25    std::size_t s = N;26    r = std::align(4, 10, p, s);27    assert(p == &buf[0]);28    assert(r == p);29    assert(s == N);30 31    p = &buf[1];32    s = N;33    r = std::align(4, 10, p, s);34    assert(p == &buf[4]);35    assert(r == p);36    assert(s == N-3);37 38    p = &buf[2];39    s = N;40    r = std::align(4, 10, p, s);41    assert(p == &buf[4]);42    assert(r == p);43    assert(s == N-2);44 45    p = &buf[3];46    s = N;47    r = std::align(4, 10, p, s);48    assert(p == &buf[4]);49    assert(r == p);50    assert(s == N-1);51 52    p = &buf[4];53    s = N;54    r = std::align(4, 10, p, s);55    assert(p == &buf[4]);56    assert(r == p);57    assert(s == N);58 59    p = &buf[0];60    s = N;61    r = std::align(4, N, p, s);62    assert(p == &buf[0]);63    assert(r == p);64    assert(s == N);65 66    p = &buf[1];67    s = N-1;68    r = std::align(4, N-4, p, s);69    assert(p == &buf[4]);70    assert(r == p);71    assert(s == N-4);72 73    p = &buf[1];74    s = N-1;75    r = std::align(4, N-3, p, s);76    assert(p == &buf[1]);77    assert(r == nullptr);78    assert(s == N-1);79 80    p = &buf[0];81    s = N;82    r = std::align(1, N+1, p, s);83    assert(p == &buf[0]);84    assert(r == nullptr);85    assert(s == N);86 87  return 0;88}89