Make ConstantBool act like a 1 bit ConstantInt, in order to simplify client

code.  Patch contributed by Vladimir Prus.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14280 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-06-21 12:12:12 +00:00
parent 1a580bea99
commit c2dfb8bb90
2 changed files with 18 additions and 16 deletions

View File

@ -37,9 +37,18 @@ struct ConvertConstantType;
///
class ConstantIntegral : public Constant {
protected:
ConstantIntegral(const Type *Ty) : Constant(Ty) {}
union {
int64_t Signed;
uint64_t Unsigned;
} Val;
ConstantIntegral(const Type *Ty, uint64_t V);
public:
/// getRawValue - return the underlying value of this constant as a 64-bit
/// unsigned integer value.
///
inline uint64_t getRawValue() const { return Val.Unsigned; }
/// isNullValue - Return true if this is the value that would be returned by
/// getNullValue.
///
@ -79,7 +88,6 @@ public:
/// ConstantBool - Boolean Values
///
class ConstantBool : public ConstantIntegral {
bool Val;
ConstantBool(bool V);
public:
static ConstantBool *True, *False; // The True & False values
@ -93,7 +101,7 @@ public:
/// getValue - return the boolean value of this constant.
///
inline bool getValue() const { return Val; }
inline bool getValue() const { return static_cast<bool>(getRawValue()); }
/// isNullValue - Return true if this is the value that would be returned by
/// getNullValue.
@ -120,10 +128,6 @@ public:
///
class ConstantInt : public ConstantIntegral {
protected:
union {
int64_t Signed;
uint64_t Unsigned;
} Val;
ConstantInt(const ConstantInt &); // DO NOT IMPLEMENT
ConstantInt(const Type *Ty, uint64_t V);
public:
@ -143,11 +147,6 @@ public:
///
static ConstantInt *get(const Type *Ty, unsigned char V);
/// getRawValue - return the underlying value of this constant as a 64-bit
/// unsigned integer value.
///
inline uint64_t getRawValue() const { return Val.Unsigned; }
/// isNullValue - Return true if this is the value that would be returned by
/// getNullValue.
virtual bool isNullValue() const { return Val.Unsigned == 0; }

View File

@ -212,12 +212,15 @@ bool ConstantUInt::isAllOnesValue() const {
//===----------------------------------------------------------------------===//
// Normal Constructors
ConstantBool::ConstantBool(bool V) : ConstantIntegral(Type::BoolTy) {
Val = V;
ConstantIntegral::ConstantIntegral(const Type *Ty, uint64_t V)
: Constant(Ty) {
Val.Unsigned = V;
}
ConstantInt::ConstantInt(const Type *Ty, uint64_t V) : ConstantIntegral(Ty) {
Val.Unsigned = V;
ConstantBool::ConstantBool(bool V) : ConstantIntegral(Type::BoolTy, V) {
}
ConstantInt::ConstantInt(const Type *Ty, uint64_t V) : ConstantIntegral(Ty, V) {
}
ConstantSInt::ConstantSInt(const Type *Ty, int64_t V) : ConstantInt(Ty, V) {