diff options
author | LemonBoy <thatlemon@gmail.com> | 2020-04-18 11:31:38 -0700 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2020-04-18 12:49:31 -0700 |
commit | aad3d578da0ddf6d0d3d95e5e09a32e47f6dfeb8 (patch) | |
tree | bf226a10aaa30fe6e0755ed1387540dad50851c4 /llvm/unittests/IR/MetadataTest.cpp | |
parent | ecddafd84a7aa74fb8c4087926db16eb1c459028 (diff) | |
download | llvm-aad3d578da0ddf6d0d3d95e5e09a32e47f6dfeb8.zip llvm-aad3d578da0ddf6d0d3d95e5e09a32e47f6dfeb8.tar.gz llvm-aad3d578da0ddf6d0d3d95e5e09a32e47f6dfeb8.tar.bz2 |
[DebugInfo] Change DIEnumerator payload type from int64_t to APInt
This allows the representation of arbitrarily large enumeration values.
See https://lists.llvm.org/pipermail/llvm-dev/2017-December/119475.html for context.
Reviewed By: andrewrk, aprantl, MaskRay
Differential Revision: https://reviews.llvm.org/D62475
Diffstat (limited to 'llvm/unittests/IR/MetadataTest.cpp')
-rw-r--r-- | llvm/unittests/IR/MetadataTest.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp index e886c77..b60bcac 100644 --- a/llvm/unittests/IR/MetadataTest.cpp +++ b/llvm/unittests/IR/MetadataTest.cpp @@ -1186,7 +1186,7 @@ typedef MetadataTest DIEnumeratorTest; TEST_F(DIEnumeratorTest, get) { auto *N = DIEnumerator::get(Context, 7, false, "name"); EXPECT_EQ(dwarf::DW_TAG_enumerator, N->getTag()); - EXPECT_EQ(7, N->getValue()); + EXPECT_EQ(7, N->getValue().getSExtValue()); EXPECT_FALSE(N->isUnsigned()); EXPECT_EQ("name", N->getName()); EXPECT_EQ(N, DIEnumerator::get(Context, 7, false, "name")); @@ -1199,6 +1199,15 @@ TEST_F(DIEnumeratorTest, get) { EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp))); } +TEST_F(DIEnumeratorTest, getWithLargeValues) { + auto *N = DIEnumerator::get(Context, APInt::getMaxValue(128), false, "val"); + EXPECT_EQ(128U, N->getValue().countPopulation()); + EXPECT_EQ(N, + DIEnumerator::get(Context, APInt::getMaxValue(128), false, "val")); + EXPECT_NE(N, + DIEnumerator::get(Context, APInt::getMinValue(128), false, "val")); +} + typedef MetadataTest DIBasicTypeTest; TEST_F(DIBasicTypeTest, get) { |