diff options
Diffstat (limited to 'llvm/unittests/ADT/APIntTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/APIntTest.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/APIntTest.cpp b/llvm/unittests/ADT/APIntTest.cpp index 3055581..09c9c8d 100644 --- a/llvm/unittests/ADT/APIntTest.cpp +++ b/llvm/unittests/ADT/APIntTest.cpp @@ -3134,4 +3134,25 @@ TEST(APIntTest, DenseMap) { Map.find(ZeroWidthInt); } +TEST(APIntTest, TryExt) { + APInt small(32, 42); + APInt large(128, {0xffff, 0xffff}); + ASSERT_TRUE(small.tryZExtValue().has_value()); + ASSERT_TRUE(small.trySExtValue().has_value()); + ASSERT_FALSE(large.tryZExtValue().has_value()); + ASSERT_FALSE(large.trySExtValue().has_value()); + ASSERT_EQ(small.trySExtValue().value_or(41), 42); + ASSERT_EQ(large.trySExtValue().value_or(41), 41); + + APInt negOne32(32, 0); + negOne32.setAllBits(); + ASSERT_EQ(negOne32.trySExtValue().value_or(42), -1); + APInt negOne64(64, 0); + negOne64.setAllBits(); + ASSERT_EQ(negOne64.trySExtValue().value_or(42), -1); + APInt negOne128(128, 0); + negOne128.setAllBits(); + ASSERT_EQ(negOne128.trySExtValue().value_or(42), 42); +} + } // end anonymous namespace |