From: Chris Lattner Date: Mon, 10 Mar 2003 22:39:02 +0000 (+0000) Subject: Fix ConstantUInt::isAllOnesValue X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1680312867fffeb9369800949b809e0b9e29a914;p=oota-llvm.git Fix ConstantUInt::isAllOnesValue git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5734 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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