summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2009-08-18 19:22:55 +0000
committerDavid Greene <greened@obbligato.org>2009-08-18 19:22:55 +0000
commitfe37ab335be5632eab561d49984c95cb06b946d4 (patch)
treed5752a87c67f6c4fb614ae6e8468044688b55b67
parentfc13d1c4d3807dbe9b1d6e6bee0dbd9b2112be54 (diff)
downloadllvm-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.h13
-rw-r--r--include/llvm/Support/IOManip.h43
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp84
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);
- }
-}