52 const Use *Use::getImpliedUser()
const {
53 const Use *Current =
this;
56 unsigned Tag = (Current++)->Prev.getInt();
66 unsigned Tag = Current->Prev.getInt();
71 Offset = (Offset << 1) + Tag;
74 return Current + Offset;
94 static const PrevPtrTag tags[20] = { fullStopTag, oneDigitTag, stopTag,
95 oneDigitTag, oneDigitTag, stopTag,
96 zeroDigitTag, oneDigitTag, oneDigitTag,
97 stopTag, zeroDigitTag, oneDigitTag,
98 zeroDigitTag, oneDigitTag, stopTag,
99 oneDigitTag, oneDigitTag, oneDigitTag,
102 new(Stop)
Use(tags[Done++]);
105 ptrdiff_t Count = Done;
106 while (Start != Stop) {
109 new(Stop)
Use(stopTag);
113 new(Stop)
Use(PrevPtrTag(Count & 1));
127 while (Start != Stop)
130 ::operator
delete(Start);
138 const Use *End = getImpliedUser();
142 :
reinterpret_cast<User*
>(
const_cast<Use*
>(End));
static Use * initTags(Use *Start, Use *Stop)
PointerTy getPointer() const
LLVM Value Representation.
static void zap(Use *Start, const Use *Stop, bool del=false)