#include "llvm/Constant.h"
#include "llvm/Type.h"
-#include "llvm/Support/DataTypes.h"
namespace llvm {
/// type.
inline uint64_t getZExtValue() const {
unsigned Size = getType()->getPrimitiveSizeInBits();
- return Val.Unsigned & (~0ULL >> (64-Size));
+ return Val.Unsigned & (~uint64_t(0UL) >> (64-Size));
}
/// getSExtValue - Return the constant sign extended as appropriate for this
virtual bool isNullValue() const { return true; }
virtual void destroyConstant();
- virtual void replaceUsesOfWithOnConstant(Value *From, Value *To,
- bool DisableChecking = false);
/// Methods for support type inquiry through isa, cast, and dyn_cast:
///
public:
/// get() - Static factory methods - Return objects of the specified value
static Constant *get(const ArrayType *T, const std::vector<Constant*> &);
- static Constant *get(const std::string &Initializer);
+
+ /// This method constructs a ConstantArray and initializes it with a text
+ /// string. The default behavior (AddNull==true) causes a null terminator to
+ /// be placed at the end of the array. This effectively increases the length
+ /// of the array by one (you've been warned). However, in some situations
+ /// this is not desired so if AddNull==false then the string is copied without
+ /// null termination.
+ static Constant *get(const std::string &Initializer, bool AddNull = true);
/// getType - Specialize the getType() method to always return an ArrayType,
/// which reduces the amount of casting needed in parts of the compiler.
virtual bool isNullValue() const { return false; }
virtual void destroyConstant();
- virtual void replaceUsesOfWithOnConstant(Value *From, Value *To,
- bool DisableChecking = false);
+ virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
/// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const ConstantArray *) { return true; }
}
virtual void destroyConstant();
- virtual void replaceUsesOfWithOnConstant(Value *From, Value *To,
- bool DisableChecking = false);
+ virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
/// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const ConstantStruct *) { return true; }
virtual bool isNullValue() const { return false; }
virtual void destroyConstant();
- virtual void replaceUsesOfWithOnConstant(Value *From, Value *To,
- bool DisableChecking = false);
+ virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
/// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const ConstantPacked *) { return true; }
Constant *C1, Constant *C2, Constant *C3);
static Constant *getGetElementPtrTy(const Type *Ty, Constant *C,
const std::vector<Value*> &IdxList);
+ static Constant *getExtractElementTy(const Type *Ty, Constant *Val,
+ Constant *Idx);
+ static Constant *getInsertElementTy(const Type *Ty, Constant *Val,
+ Constant *Elt, Constant *Idx);
+ static Constant *getShuffleVectorTy(const Type *Ty, Constant *V1,
+ Constant *V2, Constant *Mask);
public:
// Static methods to construct a ConstantExpr of different kinds. Note that
static Constant *getGetElementPtr(Constant *C,
const std::vector<Value*> &IdxList);
+ static Constant *getExtractElement(Constant *Vec, Constant *Idx);
+ static Constant *getInsertElement(Constant *Vec, Constant *Elt,Constant *Idx);
+ static Constant *getShuffleVector(Constant *V1, Constant *V2, Constant *Mask);
+
/// isNullValue - Return true if this is the value that would be returned by
/// getNullValue.
virtual bool isNullValue() const { return false; }
const char *getOpcodeName() const;
virtual void destroyConstant();
- virtual void replaceUsesOfWithOnConstant(Value *From, Value *To,
- bool DisableChecking = false);
+ virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
/// Override methods to provide more type information...
inline Constant *getOperand(unsigned i) {