xref: /openbsd-src/gnu/llvm/compiler-rt/lib/gwp_asan/tests/alignment.cpp (revision 1a8dbaac879b9f3335ad7fb25429ce63ac1d6bac)
1 //===-- alignment.cpp -------------------------------------------*- C++ -*-===//
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 "gwp_asan/tests/harness.h"
10 
11 TEST_F(DefaultGuardedPoolAllocator, BasicAllocation) {
12   std::vector<std::pair<int, int>> AllocSizeToAlignment = {
13       {1, 1},   {2, 2},   {3, 4},       {4, 4},       {5, 8},   {7, 8},
14       {8, 8},   {9, 16},  {15, 16},     {16, 16},     {17, 16}, {31, 16},
15       {32, 16}, {33, 16}, {4095, 4096}, {4096, 4096},
16   };
17 
18   for (const auto &KV : AllocSizeToAlignment) {
19     void *Ptr = GPA.allocate(KV.first);
20     EXPECT_NE(nullptr, Ptr);
21 
22     // Check the alignment of the pointer is as expected.
23     EXPECT_EQ(0u, reinterpret_cast<uintptr_t>(Ptr) % KV.second);
24 
25     GPA.deallocate(Ptr);
26   }
27 }
28