From 1680312867fffeb9369800949b809e0b9e29a914 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 10 Mar 2003 22:39:02 +0000 Subject: [PATCH] Fix ConstantUInt::isAllOnesValue git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5734 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Constants.h | 4 +++- lib/VMCore/Constants.cpp | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index 6c1b8eb1e61..f7690439b3d 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 6a91757641a..84f2566e468 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