+ const Type *getRawType() const { return VTy.getRawType(); }
+
+ /// stripPointerCasts - This method strips off any unneeded pointer
+ /// casts from the specified value, returning the original uncasted value.
+ /// Note that the returned value has pointer type if the specified value does.
+ Value *stripPointerCasts();
+ const Value *stripPointerCasts() const {
+ return const_cast<Value*>(this)->stripPointerCasts();
+ }
+
+ /// getUnderlyingObject - This method strips off any GEP address adjustments
+ /// and pointer casts from the specified value, returning the original object
+ /// being addressed. Note that the returned value has pointer type if the
+ /// specified value does.
+ Value *getUnderlyingObject();
+ const Value *getUnderlyingObject() const {
+ return const_cast<Value*>(this)->getUnderlyingObject();
+ }
+
+ /// DoPHITranslation - If this value is a PHI node with CurBB as its parent,
+ /// return the value in the PHI node corresponding to PredBB. If not, return
+ /// ourself. This is useful if you want to know the value something has in a
+ /// predecessor block.
+ Value *DoPHITranslation(const BasicBlock *CurBB, const BasicBlock *PredBB);
+
+ const Value *DoPHITranslation(const BasicBlock *CurBB,
+ const BasicBlock *PredBB) const{
+ return const_cast<Value*>(this)->DoPHITranslation(CurBB, PredBB);
+ }