diff options
Diffstat (limited to 'llvm/unittests')
-rw-r--r-- | llvm/unittests/ADT/BitTest.cpp | 16 | ||||
-rw-r--r-- | llvm/unittests/ADT/STLForwardCompatTest.cpp | 22 |
2 files changed, 38 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/BitTest.cpp b/llvm/unittests/ADT/BitTest.cpp index eaed4e1..5b3df91 100644 --- a/llvm/unittests/ADT/BitTest.cpp +++ b/llvm/unittests/ADT/BitTest.cpp @@ -270,6 +270,22 @@ TEST(BitTest, BitWidthConstexpr) { llvm::bit_width_constexpr(std::numeric_limits<uint64_t>::max()) == 64); } +TEST(BitTest, BitCeilConstexpr) { + static_assert(llvm::bit_ceil_constexpr(0u) == 1); + static_assert(llvm::bit_ceil_constexpr(1u) == 1); + static_assert(llvm::bit_ceil_constexpr(2u) == 2); + static_assert(llvm::bit_ceil_constexpr(3u) == 4); + static_assert(llvm::bit_ceil_constexpr(4u) == 4); + static_assert(llvm::bit_ceil_constexpr(5u) == 8); + static_assert(llvm::bit_ceil_constexpr(6u) == 8); + static_assert(llvm::bit_ceil_constexpr(7u) == 8); + static_assert(llvm::bit_ceil_constexpr(8u) == 8); + + static_assert(llvm::bit_ceil_constexpr(255u) == 256); + static_assert(llvm::bit_ceil_constexpr(256u) == 256); + static_assert(llvm::bit_ceil_constexpr(257u) == 512); +} + TEST(BitTest, CountlZero) { uint8_t Z8 = 0; uint16_t Z16 = 0; diff --git a/llvm/unittests/ADT/STLForwardCompatTest.cpp b/llvm/unittests/ADT/STLForwardCompatTest.cpp index 4a8f53c..2a97e8d 100644 --- a/llvm/unittests/ADT/STLForwardCompatTest.cpp +++ b/llvm/unittests/ADT/STLForwardCompatTest.cpp @@ -184,4 +184,26 @@ TEST(TransformTest, ToUnderlying) { static_assert(llvm::to_underlying(E3::B3) == 0); } +TEST(STLForwardCompatTest, IdentityCxx20) { + llvm::identity_cxx20 identity; + + // Test with an lvalue. + int X = 42; + int &Y = identity(X); + EXPECT_EQ(&X, &Y); + + // Test with a const lvalue. + const int CX = 10; + const int &CY = identity(CX); + EXPECT_EQ(&CX, &CY); + + // Test with an rvalue. + EXPECT_EQ(identity(123), 123); + + // Test perfect forwarding. + static_assert(std::is_same_v<int &, decltype(identity(X))>); + static_assert(std::is_same_v<const int &, decltype(identity(CX))>); + static_assert(std::is_same_v<int &&, decltype(identity(int(5)))>); +} + } // namespace |