diff options
author | David Greene <greened@obbligato.org> | 2009-08-18 19:22:55 +0000 |
---|---|---|
committer | David Greene <greened@obbligato.org> | 2009-08-18 19:22:55 +0000 |
commit | fe37ab335be5632eab561d49984c95cb06b946d4 (patch) | |
tree | d5752a87c67f6c4fb614ae6e8468044688b55b67 | |
parent | fc13d1c4d3807dbe9b1d6e6bee0dbd9b2112be54 (diff) | |
download | llvm-fe37ab335be5632eab561d49984c95cb06b946d4.tar.gz llvm-fe37ab335be5632eab561d49984c95cb06b946d4.tar.bz2 llvm-fe37ab335be5632eab561d49984c95cb06b946d4.tar.xz |
Make various changes suggested by Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79358 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/AsmPrinter.h | 13 | ||||
-rw-r--r-- | include/llvm/Support/IOManip.h | 43 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 84 |
3 files changed, 56 insertions, 84 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h index 33d8a02862..6024f48f9a 100644 --- a/include/llvm/CodeGen/AsmPrinter.h +++ b/include/llvm/CodeGen/AsmPrinter.h @@ -17,6 +17,7 @@ #define LLVM_CODEGEN_ASMPRINTER_H #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/Support/DebugLoc.h" #include "llvm/Target/TargetMachine.h" #include "llvm/ADT/DenseMap.h" @@ -24,15 +25,22 @@ namespace llvm { class GCStrategy; class Constant; class ConstantArray; + class ConstantFP; class ConstantInt; class ConstantStruct; class ConstantVector; class GCMetadataPrinter; + class GlobalValue; class GlobalVariable; + class MachineBasicBlock; + class MachineFunction; + class MachineInstr; class MachineLoopInfo; class MachineLoop; + class MachineConstantPool; class MachineConstantPoolEntry; class MachineConstantPoolValue; + class MachineJumpTableInfo; class MachineModuleInfo; class MCInst; class MCContext; @@ -67,11 +75,6 @@ namespace llvm { /// MachineLoopInfo *LI; - /// PrintChildLoopComment - Print comments about child loops - /// within the loop for this basic block, with nesting. - /// - void PrintChildLoopComment(const MachineLoop *loop) const; - protected: /// MMI - If available, this is a pointer to the current MachineModuleInfo. MachineModuleInfo *MMI; diff --git a/include/llvm/Support/IOManip.h b/include/llvm/Support/IOManip.h deleted file mode 100644 index fa9228f576..0000000000 --- a/include/llvm/Support/IOManip.h +++ /dev/null @@ -1,43 +0,0 @@ -//===----------------- IOManip.h - iostream manipulators ---------*- C++ -*===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// Manipulators to do special-purpose formatting. -// -//===----------------------------------------------------------------------===// - -namespace llvm { - /// Indent - Insert spaces into the character output stream. The - /// "level" is multiplied by the "scale" to calculate the number of - /// spaces to insert. "level" can represent something like loop - /// nesting level, for example. - /// - class Indent { - public: - explicit Indent(int lvl, int amt = 2) - : level(lvl), scale(amt) {} - - template<typename OStream> - OStream &operator()(OStream &out) const { - for(int i = 0; i < level*scale; ++i) { - out << " "; - } - return out; - } - - private: - int level; - int scale; - }; - - template<typename OStream> - OStream &operator<<(OStream &out, const Indent &indent) - { - return(indent(out)); - } -} diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index e6ee960dc4..6de6f2b47f 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -18,6 +18,7 @@ #include "llvm/Module.h" #include "llvm/CodeGen/GCMetadataPrinter.h" #include "llvm/CodeGen/MachineConstantPool.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineJumpTableInfo.h" #include "llvm/CodeGen/MachineLoopInfo.h" #include "llvm/CodeGen/MachineModuleInfo.h" @@ -30,7 +31,6 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/FormattedStream.h" -#include "llvm/Support/IOManip.h" #include "llvm/Support/Mangler.h" #include "llvm/Target/TargetAsmInfo.h" #include "llvm/Target/TargetData.h" @@ -48,10 +48,6 @@ static cl::opt<cl::boolOrDefault> AsmVerbose("asm-verbose", cl::desc("Add comments to directives."), cl::init(cl::BOU_UNSET)); -static cl::opt<cl::boolOrDefault> -AsmExuberant("asm-exuberant", cl::desc("Add many comments."), - cl::init(cl::BOU_FALSE)); - char AsmPrinter::ID = 0; AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm, const TargetAsmInfo *T, bool VDef) @@ -69,11 +65,6 @@ AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm, case cl::BOU_TRUE: VerboseAsm = true; break; case cl::BOU_FALSE: VerboseAsm = false; break; } - switch (AsmExuberant) { - case cl::BOU_UNSET: ExuberantAsm = false; break; - case cl::BOU_TRUE: ExuberantAsm = true; break; - case cl::BOU_FALSE: ExuberantAsm = false; break; - } } AsmPrinter::~AsmPrinter() { @@ -106,7 +97,7 @@ void AsmPrinter::getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); MachineFunctionPass::getAnalysisUsage(AU); AU.addRequired<GCModuleInfo>(); - if (ExuberantAsm) + if (VerboseAsm) AU.addRequired<MachineLoopInfo>(); } @@ -238,7 +229,7 @@ void AsmPrinter::SetupMachineFunction(MachineFunction &MF) { CurrentFnName = Mang->getMangledName(MF.getFunction()); IncrementFunctionNumber(); - if (ExuberantAsm) { + if (VerboseAsm) { LI = &getAnalysis<MachineLoopInfo>(); } } @@ -1802,10 +1793,50 @@ void AsmPrinter::EmitComments(const MCInst &MI) const } } +/// Indent - Insert spaces into the character output stream. The +/// "level" is multiplied by the "scale" to calculate the number of +/// spaces to insert. "level" can represent something like loop +/// nesting level, for example. +/// +static formatted_raw_ostream & +Indent(formatted_raw_ostream &out, int level, int scale = 2) { + for(int i = 0; i < level*scale; ++i) { + out << " "; + } + return out; +} + +/// 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 TargetAsmInfo *TAI, + int FunctionNumber) { + // Add child loop information + for(MachineLoop::iterator cl = loop->begin(), + clend = loop->end(); + cl != clend; + ++cl) { + MachineBasicBlock *Header = (*cl)->getHeader(); + assert(Header && "No header for loop"); + + O << '\n'; + O.PadToColumn(TAI->getCommentColumn()); + + O << TAI->getCommentString(); + Indent(O, (*cl)->getLoopDepth()-1) + << " Child Loop BB" << FunctionNumber << "_" + << Header->getNumber() << " Depth " << (*cl)->getLoopDepth(); + + PrintChildLoopComment(O, *cl, TAI, FunctionNumber); + } +} + /// EmitComments - Pretty-print comments for basic blocks void AsmPrinter::EmitComments(const MachineBasicBlock &MBB) const { - if (ExuberantAsm) { + if (VerboseAsm) { // Add loop depth information const MachineLoop *loop = LI->getLoopFor(&MBB); @@ -1823,7 +1854,7 @@ void AsmPrinter::EmitComments(const MachineBasicBlock &MBB) const if (Header == &MBB) { O << TAI->getCommentString() << " Loop Header"; - PrintChildLoopComment(loop); + PrintChildLoopComment(O, loop, TAI, getFunctionNumber()); } else { O << TAI->getCommentString() << " Loop Header is BB" @@ -1845,30 +1876,11 @@ void AsmPrinter::EmitComments(const MachineBasicBlock &MBB) const O << '\n'; O.PadToColumn(TAI->getCommentColumn()); - O << TAI->getCommentString() << Indent(CurLoop->getLoopDepth()-1) - << " Inside Loop BB" << getFunctionNumber() << "_" + O << TAI->getCommentString(); + Indent(O, CurLoop->getLoopDepth()-1) + << " Inside Loop BB" << getFunctionNumber() << "_" << Header->getNumber() << " Depth " << CurLoop->getLoopDepth(); } } } } - -void AsmPrinter::PrintChildLoopComment(const MachineLoop *loop) const { - // Add child loop information - for(MachineLoop::iterator cl = loop->begin(), - clend = loop->end(); - cl != clend; - ++cl) { - MachineBasicBlock *Header = (*cl)->getHeader(); - assert(Header && "No header for loop"); - - O << '\n'; - O.PadToColumn(TAI->getCommentColumn()); - - O << TAI->getCommentString() << Indent((*cl)->getLoopDepth()-1) - << " Child Loop BB" << getFunctionNumber() << "_" - << Header->getNumber() << " Depth " << (*cl)->getLoopDepth(); - - PrintChildLoopComment(*cl); - } -} |