[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