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 | 
