overaligned.cc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright (C) 2016-2022 Free Software Foundation, Inc.
  2. //
  3. // This file is part of the GNU ISO C++ Library. This library is free
  4. // software; you can redistribute it and/or modify it under the
  5. // terms of the GNU General Public License as published by the
  6. // Free Software Foundation; either version 3, or (at your option)
  7. // any later version.
  8. // This library is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. // GNU General Public License for more details.
  12. // You should have received a copy of the GNU General Public License along
  13. // with this library; see the file COPYING3. If not see
  14. // <http://www.gnu.org/licenses/>.
  15. // { dg-options "-faligned-new" }
  16. // { dg-do run { target c++11 } }
  17. // { dg-require-cstdint "" }
  18. #include <ext/bitmap_allocator.h>
  19. #include <cstddef>
  20. #include <cstdint>
  21. #include <testsuite_hooks.h>
  22. constexpr std::size_t align = alignof(std::max_align_t) * 4;
  23. struct X {
  24. alignas(align) char c;
  25. };
  26. void
  27. test01()
  28. {
  29. __gnu_cxx::bitmap_allocator<X> a;
  30. X* p1 = a.allocate(1);
  31. VERIFY( (reinterpret_cast<std::uintptr_t>(p1) % align) == 0 );
  32. a.deallocate(p1, 1);
  33. X* p2 = a.allocate(20);
  34. VERIFY( (reinterpret_cast<std::uintptr_t>(p2) % align) == 0 );
  35. a.deallocate(p2, 20);
  36. }
  37. int
  38. main()
  39. {
  40. test01();
  41. }