aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Constants.h23
-rw-r--r--lib/VMCore/Constants.cpp11
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) {