diff options
author | Chris Lattner <sabre@nondot.org> | 2003-03-10 22:39:02 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-03-10 22:39:02 +0000 |
commit | 1680312867fffeb9369800949b809e0b9e29a914 (patch) | |
tree | 4ea45dc3249ed32df0a09525c22d50844f6b145f | |
parent | 4f98c56936affc6d8c821696e66ed8670e143bb2 (diff) |
Fix ConstantUInt::isAllOnesValue
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5734 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Constants.h | 4 | ||||
-rw-r--r-- | lib/VMCore/Constants.cpp | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index 6c1b8eb1e6..f7690439b3 100644 --- a/include/llvm/Constants.h +++ b/include/llvm/Constants.h @@ -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; } diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index 6a91757641..84f2566e46 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -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 |