diff options
-rw-r--r-- | include/llvm/Constants.h | 23 | ||||
-rw-r--r-- | lib/VMCore/Constants.cpp | 11 |
2 files changed, 18 insertions, 16 deletions
diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index 9016f1a611..fbb7a42f5d 100644 --- a/include/llvm/Constants.h +++ b/include/llvm/Constants.h @@ -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; } diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index e18f9b2e54..9957327bfc 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -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; +} + +ConstantBool::ConstantBool(bool V) : ConstantIntegral(Type::BoolTy, V) { } -ConstantInt::ConstantInt(const Type *Ty, uint64_t V) : ConstantIntegral(Ty) { - Val.Unsigned = V; +ConstantInt::ConstantInt(const Type *Ty, uint64_t V) : ConstantIntegral(Ty, V) { } ConstantSInt::ConstantSInt(const Type *Ty, int64_t V) : ConstantInt(Ty, V) { |