summaryrefslogtreecommitdiff
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-01-22 21:00:45 +0000
committerChris Lattner <sabre@nondot.org>2010-01-22 21:00:45 +0000
commitd8d0aee26a5a759085bfa9114302e507c8685599 (patch)
tree0618d72e27a8954549592c48eb6121daaf957108 /lib/CodeGen
parent8a3ee718cdaa153e29c079548e6755184d5426e4 (diff)
downloadllvm-d8d0aee26a5a759085bfa9114302e507c8685599.tar.gz
llvm-d8d0aee26a5a759085bfa9114302e507c8685599.tar.bz2
llvm-d8d0aee26a5a759085bfa9114302e507c8685599.tar.xz
reenable the label loop comments and switch them to use the formatted
comment emission stuff. I'm going to rewrite this though because the current output doesn't make sense. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94215 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp107
1 files changed, 40 insertions, 67 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 276b334f67..0b8633bf59 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1677,6 +1677,8 @@ void AsmPrinter::EmitBasicBlockStart(const MachineBasicBlock *MBB) const {
if (const BasicBlock *BB = MBB->getBasicBlock())
if (BB->hasName())
OutStreamer.AddComment("%" + BB->getName());
+
+ EmitComments(*MBB);
OutStreamer.AddBlankLine();
}
} else {
@@ -1684,16 +1686,11 @@ void AsmPrinter::EmitBasicBlockStart(const MachineBasicBlock *MBB) const {
if (const BasicBlock *BB = MBB->getBasicBlock())
if (BB->hasName())
OutStreamer.AddComment("%" + BB->getName());
+ EmitComments(*MBB);
}
+
OutStreamer.EmitLabel(GetMBBSymbol(MBB->getNumber()));
}
-
- // Print some comments to accompany the label.
- // FIXME: REENABLE.
- if (0 && VerboseAsm) {
- EmitComments(*MBB);
- O << '\n';
- }
}
/// printPICJumpTableSetLabel - This method prints a set label for the
@@ -1850,78 +1847,54 @@ 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(formatted_raw_ostream &O,
- const MachineLoop *loop,
- const MCAsmInfo *MAI,
- int FunctionNumber) {
+static void PrintChildLoopComment(MCStreamer &O, const MachineLoop *Loop,
+ unsigned FunctionNumber) {
+ raw_ostream &OS = O.GetCommentOS();
// Add child loop information
- for(MachineLoop::iterator cl = loop->begin(),
- clend = loop->end();
- cl != clend;
- ++cl) {
- MachineBasicBlock *Header = (*cl)->getHeader();
+ for (MachineLoop::iterator CL = Loop->begin(), E = Loop->end();CL != E; ++CL){
+ MachineBasicBlock *Header = (*CL)->getHeader();
assert(Header && "No header for loop");
-
- O << '\n';
- O.PadToColumn(MAI->getCommentColumn());
-
- O << MAI->getCommentString();
- O.indent(((*cl)->getLoopDepth()-1)*2)
- << " Child Loop BB" << FunctionNumber << "_"
- << Header->getNumber() << " Depth " << (*cl)->getLoopDepth();
-
- PrintChildLoopComment(O, *cl, MAI, FunctionNumber);
+ OS.indent(((*CL)->getLoopDepth()-1)*2)
+ << "Child Loop BB" << FunctionNumber << "_"
+ << Header->getNumber() << " Depth " << (*CL)->getLoopDepth() << '\n';
+ PrintChildLoopComment(O, *CL, FunctionNumber);
}
}
/// EmitComments - Pretty-print comments for basic blocks
void AsmPrinter::EmitComments(const MachineBasicBlock &MBB) const {
- if (VerboseAsm) {
- // Add loop depth information
- const MachineLoop *loop = LI->getLoopFor(&MBB);
+ assert(VerboseAsm && "Shouldn't be called unless in verbose asm mode");
+
+ // Add loop depth information
+ const MachineLoop *Loop = LI->getLoopFor(&MBB);
+ if (Loop == 0) return;
- if (loop) {
- // Print a newline after bb# annotation.
- O << "\n";
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString() << " Loop Depth " << loop->getLoopDepth()
- << '\n';
+ OutStreamer.AddComment("Loop Depth " + Twine(Loop->getLoopDepth()));
- O.PadToColumn(MAI->getCommentColumn());
+ MachineBasicBlock *Header = Loop->getHeader();
+ assert(Header && "No header for loop");
+
+ if (Header != &MBB) {
+ OutStreamer.AddComment("Loop Header is BB" + Twine(getFunctionNumber()) +
+ "_" + Twine(Loop->getHeader()->getNumber()));
+ } else {
+ OutStreamer.AddComment("Loop Header");
+ PrintChildLoopComment(OutStreamer, Loop, getFunctionNumber());
+ }
- MachineBasicBlock *Header = loop->getHeader();
- assert(Header && "No header for loop");
-
- if (Header == &MBB) {
- O << MAI->getCommentString() << " Loop Header";
- PrintChildLoopComment(O, loop, MAI, getFunctionNumber());
- }
- else {
- O << MAI->getCommentString() << " Loop Header is BB"
- << getFunctionNumber() << "_" << loop->getHeader()->getNumber();
- }
+ if (Loop->empty())
+ OutStreamer.AddComment("Inner Loop");
- if (loop->empty()) {
- O << '\n';
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString() << " Inner Loop";
- }
+ raw_ostream &OS = OutStreamer.GetCommentOS();
- // Add parent loop information
- for (const MachineLoop *CurLoop = loop->getParentLoop();
- CurLoop;
- CurLoop = CurLoop->getParentLoop()) {
- MachineBasicBlock *Header = CurLoop->getHeader();
- assert(Header && "No header for loop");
+ // Add parent loop information.
+ for (const MachineLoop *CurLoop = Loop->getParentLoop(); CurLoop;
+ CurLoop = CurLoop->getParentLoop()) {
+ MachineBasicBlock *Header = CurLoop->getHeader();
+ assert(Header && "No header for loop");
- O << '\n';
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString();
- O.indent((CurLoop->getLoopDepth()-1)*2)
- << " Inside Loop BB" << getFunctionNumber() << "_"
- << Header->getNumber() << " Depth " << CurLoop->getLoopDepth();
- }
- }
+ OS.indent(CurLoop->getLoopDepth()*2)
+ << "Inside Loop BB" << getFunctionNumber() << "_"
+ << Header->getNumber() << " Depth " << CurLoop->getLoopDepth() << '\n';
}
}