summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-01-22 21:11:06 +0000
committerChris Lattner <sabre@nondot.org>2010-01-22 21:11:06 +0000
commite567c8e67fbd79d7fb2096f74c90f3be72dba95b (patch)
treefac370126bcffbb6fda7b375db5aac76159f3f73 /llvm/lib
parentf99eaa948d86d4275f56325d863175de948f5123 (diff)
downloadbcm5719-llvm-e567c8e67fbd79d7fb2096f74c90f3be72dba95b.tar.gz
bcm5719-llvm-e567c8e67fbd79d7fb2096f74c90f3be72dba95b.zip
For blocks that are not loop headers, just print their loop depth and header BB.
For loop headers, print Inner loop along with the other stuff so it doesn't take an extra line. We now get stuff like this: LBB1_4: ## %land.end ## in Loop: Header=BB1_1 Depth=1 notb %al testb $1, %al jne LBB1_8 and: LBB1_6: ## %while.cond7 ## Inner Loop Header: Depth=3 ## Inside Loop BB1_5 Depth 2 ## Inside Loop BB1_1 Depth 1 which still isn't great for loop headers, but is much less verbose. llvm-svn: 94221
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 0b8633bf597..e0186d145f6 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1847,9 +1847,8 @@ void AsmPrinter::EmitComments(const MachineInstr &MI) const {
/// PrintChildLoopComment - Print comments about child loops within
/// the loop for this basic block, with nesting.
-static void PrintChildLoopComment(MCStreamer &O, const MachineLoop *Loop,
+static void PrintChildLoopComment(raw_ostream &OS, const MachineLoop *Loop,
unsigned FunctionNumber) {
- raw_ostream &OS = O.GetCommentOS();
// Add child loop information
for (MachineLoop::iterator CL = Loop->begin(), E = Loop->end();CL != E; ++CL){
MachineBasicBlock *Header = (*CL)->getHeader();
@@ -1857,7 +1856,7 @@ static void PrintChildLoopComment(MCStreamer &O, const MachineLoop *Loop,
OS.indent(((*CL)->getLoopDepth()-1)*2)
<< "Child Loop BB" << FunctionNumber << "_"
<< Header->getNumber() << " Depth " << (*CL)->getLoopDepth() << '\n';
- PrintChildLoopComment(O, *CL, FunctionNumber);
+ PrintChildLoopComment(OS, *CL, FunctionNumber);
}
}
@@ -1869,23 +1868,27 @@ void AsmPrinter::EmitComments(const MachineBasicBlock &MBB) const {
const MachineLoop *Loop = LI->getLoopFor(&MBB);
if (Loop == 0) return;
- OutStreamer.AddComment("Loop Depth " + Twine(Loop->getLoopDepth()));
-
MachineBasicBlock *Header = Loop->getHeader();
assert(Header && "No header for loop");
-
+
+ // If this block is not a loop header, just print out what is the loop header
+ // and return.
if (Header != &MBB) {
- OutStreamer.AddComment("Loop Header is BB" + Twine(getFunctionNumber()) +
- "_" + Twine(Loop->getHeader()->getNumber()));
- } else {
- OutStreamer.AddComment("Loop Header");
- PrintChildLoopComment(OutStreamer, Loop, getFunctionNumber());
+ OutStreamer.AddComment(" in Loop: Header=BB" + Twine(getFunctionNumber())+
+ "_" + Twine(Loop->getHeader()->getNumber())+
+ " Depth="+Twine(Loop->getLoopDepth()));
+ return;
}
+ // Otherwise, it is a loop header. Print out information about child and
+ // parent loops.
+ raw_ostream &OS = OutStreamer.GetCommentOS();
+
if (Loop->empty())
- OutStreamer.AddComment("Inner Loop");
+ OS << "Inner ";
+ OS << "Loop Header: Depth=" + Twine(Loop->getLoopDepth()) << '\n';
- raw_ostream &OS = OutStreamer.GetCommentOS();
+ PrintChildLoopComment(OS, Loop, getFunctionNumber());
// Add parent loop information.
for (const MachineLoop *CurLoop = Loop->getParentLoop(); CurLoop;
OpenPOWER on IntegriCloud