X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FValue.h;h=6d4d7cc74ac9bea27ed04d14d7e59f6f12fef077;hb=4b84086e89d86fb16f562166d9fea8df37db6be7;hp=4604dae6ed9e3fc4a762674598aab8e9dc8b223a;hpb=59dc98de2f79c027eb6860443daee260710b1405;p=oota-llvm.git diff --git a/include/llvm/Value.h b/include/llvm/Value.h index 4604dae6ed9..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 { @@ -95,6 +94,10 @@ public: /// their end. This always returns a non-null pointer. const char *getNameStart() const; + /// isName - Return true if this value has the name specified by the provided + /// nul terminated string. + bool isName(const char *N) const; + /// getNameLen - Return the length of the string, correctly handling nul /// characters embedded into them. unsigned getNameLen() const; @@ -158,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. @@ -216,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) { @@ -223,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) {