Fix ConstantUInt::isAllOnesValue

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5734 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-03-10 22:39:02 +00:00
parent 4f98c56936
commit 1680312867
2 changed files with 10 additions and 1 deletions

View File

@ -134,7 +134,6 @@ public:
/// isNullValue - Return true if this is the value that would be returned by
/// getNullValue.
virtual bool isNullValue() const { return Val.Unsigned == 0; }
virtual bool isAllOnesValue() const { return Val.Signed == -1; }
virtual bool isMaxValue() const = 0;
virtual bool isMinValue() const = 0;
@ -165,6 +164,8 @@ public:
/// getValue - return the underlying value of this constant.
inline int64_t getValue() const { return Val.Signed; }
virtual bool isAllOnesValue() const { return getValue() == -1; }
/// isMaxValue - Return true if this is the largest value that may be
/// represented by this type.
///
@ -214,6 +215,7 @@ public:
/// isMaxValue - Return true if this is the largest value that may be
/// represented by this type.
///
virtual bool isAllOnesValue() const;
virtual bool isMaxValue() const { return isAllOnesValue(); }
virtual bool isMinValue() const { return getValue() == 0; }

View File

@ -173,6 +173,13 @@ ConstantIntegral *ConstantIntegral::getAllOnesValue(const Type *Ty) {
}
}
bool ConstantUInt::isAllOnesValue() const {
unsigned TypeBits = getType()->getPrimitiveSize()*8;
uint64_t Val = ~0ULL; // All ones
Val >>= 64-TypeBits; // Shift out inappropriate bits
return getValue() == Val;
}
//===----------------------------------------------------------------------===//
// ConstantXXX Classes