Remove assertion that disallows getting a zero-extended value from a
zero-width APInt. This check is too restrictive and makes it difficult
to use APInt to model zero-width things, e.g., zero-width wires in the
CIRCT project.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
Reviewed By: lattner, darthscsi, nikic
Differential Revision: https://reviews.llvm.org/D114768
/// uint64_t. The bitwidth must be <= 64 or the value must fit within a
/// uint64_t. Otherwise an assertion will result.
uint64_t getZExtValue() const {
- if (isSingleWord()) {
- assert(BitWidth && "zero width values not allowed");
+ if (isSingleWord())
return U.VAL;
- }
assert(getActiveBits() <= 64 && "Too many bits for uint64_t");
return U.pVal[0];
}
EXPECT_EQ(0U, APInt(4, 3).trunc(0).getBitWidth());
EXPECT_TRUE(ZW.isAllOnes());
+ // Zero extension.
+ EXPECT_EQ(0U, ZW.getZExtValue());
+
SmallString<42> STR;
ZW.toStringUnsigned(STR);
EXPECT_EQ("0", STR);