// Implement == and != directly...
//===----------------------------------------------------------------------===//
-inline ConstantBool *operator==(const Constant &V1,
- const Constant &V2) {
+inline ConstantBool *operator==(const Constant &V1, const Constant &V2) {
assert(V1.getType() == V2.getType() && "Constant types must be identical!");
return ConstantBool::get(&V1 == &V2);
}
-inline ConstantBool *operator!=(const Constant &V1,
- const Constant &V2) {
+inline ConstantBool *operator!=(const Constant &V1, const Constant &V2) {
return ConstantBool::get(&V1 != &V2);
}
virtual ConstantUInt *castToULong (const Constant *V) const = 0;
virtual ConstantFP *castToFloat (const Constant *V) const = 0;
virtual ConstantFP *castToDouble(const Constant *V) const = 0;
- virtual ConstantPointer *castToPointer(const Constant *V,
- const PointerType *Ty) const = 0;
+ virtual Constant *castToPointer(const Constant *V,
+ const PointerType *Ty) const = 0;
inline Constant *castTo(const Constant *V, const Type *Ty) const {
switch (Ty->getPrimitiveID()) {
static inline ConstRules *get(const Constant &V) {
return (ConstRules*)V.getType()->getOrCreateAnnotation(AID);
}
-private :
+private:
static Annotation *find(AnnotationID AID, const Annotable *Ty, void *);
ConstRules(const ConstRules &); // Do not implement
const Constant *V2);
Constant *ConstantFoldShiftInstruction(unsigned Opcode, const Constant *V1,
const Constant *V2);
-
+Constant *ConstantFoldGetElementPtr(const Constant *C,
+ const std::vector<Constant*> &IdxList);
#endif
// Implement == and != directly...
//===----------------------------------------------------------------------===//
-inline ConstantBool *operator==(const Constant &V1,
- const Constant &V2) {
+inline ConstantBool *operator==(const Constant &V1, const Constant &V2) {
assert(V1.getType() == V2.getType() && "Constant types must be identical!");
return ConstantBool::get(&V1 == &V2);
}
-inline ConstantBool *operator!=(const Constant &V1,
- const Constant &V2) {
+inline ConstantBool *operator!=(const Constant &V1, const Constant &V2) {
return ConstantBool::get(&V1 != &V2);
}
virtual ConstantUInt *castToULong (const Constant *V) const = 0;
virtual ConstantFP *castToFloat (const Constant *V) const = 0;
virtual ConstantFP *castToDouble(const Constant *V) const = 0;
- virtual ConstantPointer *castToPointer(const Constant *V,
- const PointerType *Ty) const = 0;
+ virtual Constant *castToPointer(const Constant *V,
+ const PointerType *Ty) const = 0;
inline Constant *castTo(const Constant *V, const Type *Ty) const {
switch (Ty->getPrimitiveID()) {
static inline ConstRules *get(const Constant &V) {
return (ConstRules*)V.getType()->getOrCreateAnnotation(AID);
}
-private :
+private:
static Annotation *find(AnnotationID AID, const Annotable *Ty, void *);
ConstRules(const ConstRules &); // Do not implement
const Constant *V2);
Constant *ConstantFoldShiftInstruction(unsigned Opcode, const Constant *V1,
const Constant *V2);
-
+Constant *ConstantFoldGetElementPtr(const Constant *C,
+ const std::vector<Constant*> &IdxList);
#endif
// Implement == and != directly...
//===----------------------------------------------------------------------===//
-inline ConstantBool *operator==(const Constant &V1,
- const Constant &V2) {
+inline ConstantBool *operator==(const Constant &V1, const Constant &V2) {
assert(V1.getType() == V2.getType() && "Constant types must be identical!");
return ConstantBool::get(&V1 == &V2);
}
-inline ConstantBool *operator!=(const Constant &V1,
- const Constant &V2) {
+inline ConstantBool *operator!=(const Constant &V1, const Constant &V2) {
return ConstantBool::get(&V1 != &V2);
}
virtual ConstantUInt *castToULong (const Constant *V) const = 0;
virtual ConstantFP *castToFloat (const Constant *V) const = 0;
virtual ConstantFP *castToDouble(const Constant *V) const = 0;
- virtual ConstantPointer *castToPointer(const Constant *V,
- const PointerType *Ty) const = 0;
+ virtual Constant *castToPointer(const Constant *V,
+ const PointerType *Ty) const = 0;
inline Constant *castTo(const Constant *V, const Type *Ty) const {
switch (Ty->getPrimitiveID()) {
static inline ConstRules *get(const Constant &V) {
return (ConstRules*)V.getType()->getOrCreateAnnotation(AID);
}
-private :
+private:
static Annotation *find(AnnotationID AID, const Annotable *Ty, void *);
ConstRules(const ConstRules &); // Do not implement
const Constant *V2);
Constant *ConstantFoldShiftInstruction(unsigned Opcode, const Constant *V1,
const Constant *V2);
-
+Constant *ConstantFoldGetElementPtr(const Constant *C,
+ const std::vector<Constant*> &IdxList);
#endif