X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FValue.h;h=6d4d7cc74ac9bea27ed04d14d7e59f6f12fef077;hb=4b84086e89d86fb16f562166d9fea8df37db6be7;hp=c1c728270e4c53de1d12590ee95ee1298ba8eff1;hpb=12e6d200597bb5d61ed56ccf9d70a52614956a70;p=oota-llvm.git diff --git a/include/llvm/Value.h b/include/llvm/Value.h index c1c728270e4..6d4d7cc74ac 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -8,7 +8,6 @@ //===----------------------------------------------------------------------===// // // This file declares the Value class. -// This file also defines the Use<> template for users of value. // //===----------------------------------------------------------------------===// @@ -18,7 +17,7 @@ #include "llvm/AbstractTypeUser.h" #include "llvm/Use.h" #include "llvm/Support/Casting.h" -#include "llvm/Support/Streams.h" +#include #include namespace llvm { @@ -162,6 +161,8 @@ public: /// bool hasNUsesOrMore(unsigned N) const; + bool isUsedInBasicBlock(BasicBlock *BB) const; + /// getNumUses - This method computes the number of uses of this Value. This /// is a linear time operation. Use hasOneUse, hasNUses, or hasMoreThanNUses /// to check for specific values. @@ -220,6 +221,14 @@ public: /// getRawType - This should only be used to implement the vmcore library. /// const Type *getRawType() const { return Ty.getRawType(); } + + /// stripPointerCasts - This method strips off any unneeded pointer + /// casts from the specified value, returning the original uncasted value. + /// Note that the returned value is guaranteed to have pointer type. + Value *stripPointerCasts(); + const Value *stripPointerCasts() const { + return const_cast(this)->stripPointerCasts(); + } }; inline std::ostream &operator<<(std::ostream &OS, const Value &V) { @@ -227,10 +236,9 @@ inline std::ostream &operator<<(std::ostream &OS, const Value &V) { return OS; } -void Use::init(Value *v, User *user) { - Val = v; - U = user; - if (Val) Val->addUse(*this); +void Use::init(Value *V, User *) { + Val = V; + if (V) V->addUse(*this); } void Use::set(Value *V) {