• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // #include <memory>
10 
11 // void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
12 
13 #include <memory>
14 #include <cassert>
15 
16 #include "test_macros.h"
17 
main(int,char **)18 int main(int, char**)
19 {
20     const unsigned N = 20;
21     char buf[N];
22     void* r;
23     void* p = &buf[0];
24     std::size_t s = N;
25     r = std::align(4, 10, p, s);
26     assert(p == &buf[0]);
27     assert(r == p);
28     assert(s == N);
29 
30     p = &buf[1];
31     s = N;
32     r = std::align(4, 10, p, s);
33     assert(p == &buf[4]);
34     assert(r == p);
35     assert(s == N-3);
36 
37     p = &buf[2];
38     s = N;
39     r = std::align(4, 10, p, s);
40     assert(p == &buf[4]);
41     assert(r == p);
42     assert(s == N-2);
43 
44     p = &buf[3];
45     s = N;
46     r = std::align(4, 10, p, s);
47     assert(p == &buf[4]);
48     assert(r == p);
49     assert(s == N-1);
50 
51     p = &buf[4];
52     s = N;
53     r = std::align(4, 10, p, s);
54     assert(p == &buf[4]);
55     assert(r == p);
56     assert(s == N);
57 
58     p = &buf[0];
59     s = N;
60     r = std::align(4, N, p, s);
61     assert(p == &buf[0]);
62     assert(r == p);
63     assert(s == N);
64 
65     p = &buf[1];
66     s = N-1;
67     r = std::align(4, N-4, p, s);
68     assert(p == &buf[4]);
69     assert(r == p);
70     assert(s == N-4);
71 
72     p = &buf[1];
73     s = N-1;
74     r = std::align(4, N-3, p, s);
75     assert(p == &buf[1]);
76     assert(r == nullptr);
77     assert(s == N-1);
78 
79     p = &buf[0];
80     s = N;
81     r = std::align(1, N+1, p, s);
82     assert(p == &buf[0]);
83     assert(r == nullptr);
84     assert(s == N);
85 
86   return 0;
87 }
88