[llvm-commits] [llvm] r50471 - in /llvm/branches/ggreif/use-diet/include/llvm: Use.h User.h
Gabor Greif
ggreif at gmail.com
Tue Apr 29 23:15:13 PDT 2008
Author: ggreif
Date: Wed Apr 30 01:15:13 2008
New Revision: 50471
URL: http://llvm.org/viewvc/llvm-project?rev=50471&view=rev
Log:
make some methods protected
Modified:
llvm/branches/ggreif/use-diet/include/llvm/Use.h
llvm/branches/ggreif/use-diet/include/llvm/User.h
Modified: llvm/branches/ggreif/use-diet/include/llvm/Use.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/ggreif/use-diet/include/llvm/Use.h?rev=50471&r1=50470&r2=50471&view=diff
==============================================================================
--- llvm/branches/ggreif/use-diet/include/llvm/Use.h (original)
+++ llvm/branches/ggreif/use-diet/include/llvm/Use.h Wed Apr 30 01:15:13 2008
@@ -96,6 +96,14 @@
operator Value*() const { return Val; }
Value *get() const { return Val; }
User *getUser() const;
+ inline User *getUserFast() const {
+ unsigned t = extractTag<PrevPtrTag, fullStopTag>(Prev);
+ if (t == fullStopTag) {
+ if (extractTag<Tag, tagOne>(this[1].Val))
+ return reinterpret_cast<User*>(stripTag<tagOne>(this[1].Val));
+ else return (User*)(this + 1);
+ } else return getUser(); // fallback
+ }
const Use* getImpliedUser() const;
static Use *initTags(Use *Start, Use *Stop, ptrdiff_t Done = 0);
static void zap(Use *Start, const Use *Stop, bool del = false);
@@ -191,8 +199,8 @@
// Retrieve a reference to the current SCC
UserTy *operator*() const {
- assert(U && "Cannot increment end iterator!");
- return U->getUser();
+ assert(U && "Cannot dereference end iterator!");
+ return U->getUserFast();
}
UserTy *operator->() const { return operator*(); }
Modified: llvm/branches/ggreif/use-diet/include/llvm/User.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/ggreif/use-diet/include/llvm/User.h?rev=50471&r1=50470&r2=50471&view=diff
==============================================================================
--- llvm/branches/ggreif/use-diet/include/llvm/User.h (original)
+++ llvm/branches/ggreif/use-diet/include/llvm/User.h Wed Apr 30 01:15:13 2008
@@ -239,6 +239,14 @@
}
User(const Type *Ty, unsigned vty, Use *OpList, unsigned NumOps)
: Value(Ty, vty), OperandList(OpList), NumOperands(NumOps) {}
+ Use *allocHungoffUses(unsigned) const;
+ void dropHungoffUses(Use *U) {
+ if (OperandList == U) {
+ OperandList = 0;
+ NumOperands = 0;
+ }
+ Use::zap(U, U->getImpliedUser(), true);
+ }
public:
~User() {
Use::zap(OperandList, OperandList + NumOperands);
@@ -250,22 +258,12 @@
? Storage
: Usr);
}
-public:
template <unsigned Idx> Use &Op() {
return OperandTraits<User>::op_begin(this)[Idx];
}
template <unsigned Idx> const Use &Op() const {
return OperandTraits<User>::op_begin(const_cast<User*>(this))[Idx];
}
- Use *allocHungoffUses(unsigned) const;
- void dropHungoffUses(Use *U) {
- if (OperandList == U) {
- OperandList = 0;
- NumOperands = 0;
- }
- Use::zap(U, U->getImpliedUser(), true);
- }
-
Value *getOperand(unsigned i) const {
assert(i < NumOperands && "getOperand() out of range!");
return OperandList[i];
More information about the llvm-commits
mailing list