diff options
| author | Fedor Sergeev <fedor.sergeev@oracle.com> | 2017-11-22 20:59:53 +0000 |
|---|---|---|
| committer | Fedor Sergeev <fedor.sergeev@oracle.com> | 2017-11-22 20:59:53 +0000 |
| commit | 61975b49fe9c999f5f6632817667217306116af4 (patch) | |
| tree | 74523cc9688ca441a91874fe04746ffec2409e3a /llvm/lib/Analysis | |
| parent | 942fa1631f7f3aea7de4e4aec22219f9b7faeeff (diff) | |
| download | bcm5719-llvm-61975b49fe9c999f5f6632817667217306116af4.tar.gz bcm5719-llvm-61975b49fe9c999f5f6632817667217306116af4.zip | |
IR printing improvement for loop passes
Summary:
Loop-pass printing is somewhat deficient since it does not provide the
context around the loop (e.g. preheader). This context information becomes
pretty essential when analyzing transformations that move stuff out of the loop.
Extending printLoop to cover preheader and exit blocks (if any).
Reviewers: sanjoy, silvas, weimingz
Reviewed By: sanjoy
Subscribers: apilipenko, skatkov, llvm-commits
Differential Revision: https://reviews.llvm.org/D40246
llvm-svn: 318878
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/LoopInfo.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/LoopInfo.cpp b/llvm/lib/Analysis/LoopInfo.cpp index c6019f267a3..9a223df9394 100644 --- a/llvm/lib/Analysis/LoopInfo.cpp +++ b/llvm/lib/Analysis/LoopInfo.cpp @@ -732,11 +732,30 @@ PreservedAnalyses LoopPrinterPass::run(Function &F, void llvm::printLoop(Loop &L, raw_ostream &OS, const std::string &Banner) { OS << Banner; + + auto *PreHeader = L.getLoopPreheader(); + if (PreHeader) { + OS << "\n; Preheader:"; + PreHeader->print(OS); + OS << "\n; Loop:"; + } + for (auto *Block : L.blocks()) if (Block) Block->print(OS); else OS << "Printing <null> block"; + + SmallVector<BasicBlock *, 8> ExitBlocks; + L.getExitBlocks(ExitBlocks); + if (!ExitBlocks.empty()) { + OS << "\n; Exit blocks"; + for (auto *Block : ExitBlocks) + if (Block) + Block->print(OS); + else + OS << "Printing <null> block"; + } } //===----------------------------------------------------------------------===// |

