[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