aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-03-10 22:39:02 +0000
committerChris Lattner <sabre@nondot.org>2003-03-10 22:39:02 +0000
commit1680312867fffeb9369800949b809e0b9e29a914 (patch)
tree4ea45dc3249ed32df0a09525c22d50844f6b145f
parent4f98c56936affc6d8c821696e66ed8670e143bb2 (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.h4
-rw-r--r--lib/VMCore/Constants.cpp7
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