mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 23:48:49 +00:00
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:
parent
1a580bea99
commit
c2dfb8bb90
@ -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; }
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user