1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00

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.

llvm-svn: 94215
This commit is contained in:
Chris Lattner 2010-01-22 21:00:45 +00:00
parent 5d1a686840
commit c234f18c07

View File

@ -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';
}
}