[llvm-commits] [llvm] r94221 - /llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
Chris Lattner
sabre at nondot.org
Fri Jan 22 13:11:06 PST 2010
Author: lattner
Date: Fri Jan 22 15:11:06 2010
New Revision: 94221
URL: http://llvm.org/viewvc/llvm-project?rev=94221&view=rev
Log:
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.
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=94221&r1=94220&r2=94221&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Fri Jan 22 15:11:06 2010
@@ -1847,9 +1847,8 @@
/// 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 @@
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 @@
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;
More information about the llvm-commits
mailing list