diff options
-rw-r--r-- | include/llvm/Analysis/IVUsers.h | 5 | ||||
-rw-r--r-- | lib/Analysis/IVUsers.cpp | 23 |
2 files changed, 28 insertions, 0 deletions
diff --git a/include/llvm/Analysis/IVUsers.h b/include/llvm/Analysis/IVUsers.h index 50f7d45e19..b69bda8b77 100644 --- a/include/llvm/Analysis/IVUsers.h +++ b/include/llvm/Analysis/IVUsers.h @@ -165,6 +165,11 @@ public: void removeUser(IVStrideUse *User) { Users.erase(User); } + + void print(raw_ostream &OS) const; + + /// dump - This method is used for debugging. + void dump() const; }; class IVUsers : public LoopPass { diff --git a/lib/Analysis/IVUsers.cpp b/lib/Analysis/IVUsers.cpp index 38611ccb62..9c472ae73b 100644 --- a/lib/Analysis/IVUsers.cpp +++ b/lib/Analysis/IVUsers.cpp @@ -386,3 +386,26 @@ void IVStrideUse::deleted() { Parent->Users.erase(this); // this now dangles! } + +void IVUsersOfOneStride::print(raw_ostream &OS) const { + OS << "IV Users of one stride:\n"; + + if (Stride) + OS << " Stride: " << *Stride << '\n'; + + OS << " Users:\n"; + + unsigned Count = 1; + + for (ilist<IVStrideUse>::const_iterator + I = Users.begin(), E = Users.end(); I != E; ++I) { + const IVStrideUse &SU = *I; + OS << " " << Count++ << '\n'; + OS << " Offset: " << *SU.getOffset() << '\n'; + OS << " Instr: " << *SU << '\n'; + } +} + +void IVUsersOfOneStride::dump() const { + print(dbgs()); +} |