remove std::ostream versions of printing stuff for MBB and MF,

upgrading a few things to use raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79811 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-08-23 03:13:20 +00:00
parent 51a1132403
commit cf143a4d91
9 changed files with 35 additions and 53 deletions

View File

@ -310,7 +310,6 @@ public:
// Debugging methods. // Debugging methods.
void dump() const; void dump() const;
void print(std::ostream &OS) const;
void print(raw_ostream &OS) const; void print(raw_ostream &OS) const;
/// getNumber - MachineBasicBlocks are uniquely numbered at the function /// getNumber - MachineBasicBlocks are uniquely numbered at the function
@ -339,7 +338,6 @@ private: // Methods used to maintain doubly linked list of blocks...
void removePredecessor(MachineBasicBlock *pred); void removePredecessor(MachineBasicBlock *pred);
}; };
std::ostream& operator<<(std::ostream &OS, const MachineBasicBlock &MBB);
raw_ostream& operator<<(raw_ostream &OS, const MachineBasicBlock &MBB); raw_ostream& operator<<(raw_ostream &OS, const MachineBasicBlock &MBB);
//===--------------------------------------------------------------------===// //===--------------------------------------------------------------------===//

View File

@ -207,7 +207,6 @@ public:
/// print - Print out the MachineFunction in a format suitable for debugging /// print - Print out the MachineFunction in a format suitable for debugging
/// to the specified stream. /// to the specified stream.
/// ///
void print(std::ostream &OS) const;
void print(raw_ostream &OS) const; void print(raw_ostream &OS) const;
/// viewCFG - This function is meant for use from the debugger. You can just /// viewCFG - This function is meant for use from the debugger. You can just

View File

@ -15,7 +15,6 @@
#ifndef LLVM_CODEGEN_PASSES_H #ifndef LLVM_CODEGEN_PASSES_H
#define LLVM_CODEGEN_PASSES_H #define LLVM_CODEGEN_PASSES_H
#include <iosfwd>
#include <string> #include <string>
namespace llvm { namespace llvm {
@ -25,6 +24,7 @@ namespace llvm {
class TargetMachine; class TargetMachine;
class TargetLowering; class TargetLowering;
class RegisterCoalescer; class RegisterCoalescer;
class raw_ostream;
/// createUnreachableBlockEliminationPass - The LLVM code generator does not /// createUnreachableBlockEliminationPass - The LLVM code generator does not
/// work well with unreachable basic blocks (what live ranges make sense for a /// work well with unreachable basic blocks (what live ranges make sense for a
@ -36,7 +36,7 @@ namespace llvm {
/// MachineFunctionPrinter pass - This pass prints out the machine function to /// MachineFunctionPrinter pass - This pass prints out the machine function to
/// the given stream, as a debugging tool. /// the given stream, as a debugging tool.
FunctionPass *createMachineFunctionPrinterPass(std::ostream *OS, FunctionPass *createMachineFunctionPrinterPass(raw_ostream &OS,
const std::string &Banner =""); const std::string &Banner ="");
/// MachineLoopInfo pass - This pass is a loop analysis pass. /// MachineLoopInfo pass - This pass is a loop analysis pass.
@ -166,7 +166,7 @@ namespace llvm {
/// Creates a pass to print GC metadata. /// Creates a pass to print GC metadata.
/// ///
FunctionPass *createGCInfoPrinter(std::ostream &OS); FunctionPass *createGCInfoPrinter(raw_ostream &OS);
/// createMachineLICMPass - This pass performs LICM on machine instructions. /// createMachineLICMPass - This pass performs LICM on machine instructions.
/// ///

View File

@ -19,17 +19,19 @@
#include "llvm/Function.h" #include "llvm/Function.h"
#include "llvm/Support/Compiler.h" #include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
using namespace llvm; using namespace llvm;
namespace { namespace {
class VISIBILITY_HIDDEN Printer : public FunctionPass { class VISIBILITY_HIDDEN Printer : public FunctionPass {
static char ID; static char ID;
std::ostream &OS; raw_ostream &OS;
public: public:
explicit Printer(std::ostream &OS = *cerr); Printer() : FunctionPass(&ID), OS(errs()) {}
explicit Printer(raw_ostream &OS) : FunctionPass(&ID), OS(OS) {}
const char *getPassName() const; const char *getPassName() const;
void getAnalysisUsage(AnalysisUsage &AU) const; void getAnalysisUsage(AnalysisUsage &AU) const;
@ -122,12 +124,10 @@ void GCModuleInfo::clear() {
char Printer::ID = 0; char Printer::ID = 0;
FunctionPass *llvm::createGCInfoPrinter(std::ostream &OS) { FunctionPass *llvm::createGCInfoPrinter(raw_ostream &OS) {
return new Printer(OS); return new Printer(OS);
} }
Printer::Printer(std::ostream &OS)
: FunctionPass(&ID), OS(OS) {}
const char *Printer::getPassName() const { const char *Printer::getPassName() const {
return "Print Garbage Collector Information"; return "Print Garbage Collector Information";

View File

@ -78,10 +78,10 @@ LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
PM.add(createDebugLabelFoldingPass()); PM.add(createDebugLabelFoldingPass());
if (PrintMachineCode) if (PrintMachineCode)
PM.add(createMachineFunctionPrinterPass(cerr)); PM.add(createMachineFunctionPrinterPass(errs()));
if (addPreEmitPass(PM, OptLevel) && PrintMachineCode) if (addPreEmitPass(PM, OptLevel) && PrintMachineCode)
PM.add(createMachineFunctionPrinterPass(cerr)); PM.add(createMachineFunctionPrinterPass(errs()));
if (OptLevel != CodeGenOpt::None) if (OptLevel != CodeGenOpt::None)
PM.add(createCodePlacementOptPass()); PM.add(createCodePlacementOptPass());
@ -178,7 +178,7 @@ bool LLVMTargetMachine::addPassesToEmitMachineCode(PassManagerBase &PM,
return true; return true;
if (addPreEmitPass(PM, OptLevel) && PrintMachineCode) if (addPreEmitPass(PM, OptLevel) && PrintMachineCode)
PM.add(createMachineFunctionPrinterPass(cerr)); PM.add(createMachineFunctionPrinterPass(errs()));
addCodeEmitter(PM, OptLevel, MCE); addCodeEmitter(PM, OptLevel, MCE);
if (PrintEmittedAsm) if (PrintEmittedAsm)
@ -203,7 +203,7 @@ bool LLVMTargetMachine::addPassesToEmitMachineCode(PassManagerBase &PM,
return true; return true;
if (addPreEmitPass(PM, OptLevel) && PrintMachineCode) if (addPreEmitPass(PM, OptLevel) && PrintMachineCode)
PM.add(createMachineFunctionPrinterPass(cerr)); PM.add(createMachineFunctionPrinterPass(errs()));
addCodeEmitter(PM, OptLevel, JCE); addCodeEmitter(PM, OptLevel, JCE);
if (PrintEmittedAsm) if (PrintEmittedAsm)
@ -217,7 +217,7 @@ bool LLVMTargetMachine::addPassesToEmitMachineCode(PassManagerBase &PM,
static void printAndVerify(PassManagerBase &PM, static void printAndVerify(PassManagerBase &PM,
bool allowDoubleDefs = false) { bool allowDoubleDefs = false) {
if (PrintMachineCode) if (PrintMachineCode)
PM.add(createMachineFunctionPrinterPass(cerr)); PM.add(createMachineFunctionPrinterPass(errs()));
if (VerifyMachineCode) if (VerifyMachineCode)
PM.add(createMachineVerifierPass(allowDoubleDefs)); PM.add(createMachineVerifierPass(allowDoubleDefs));
@ -334,7 +334,7 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM,
printAndVerify(PM); printAndVerify(PM);
if (PrintGCInfo) if (PrintGCInfo)
PM.add(createGCInfoPrinter(*cerr)); PM.add(createGCInfoPrinter(errs()));
return false; return false;
} }

View File

@ -32,10 +32,6 @@ MachineBasicBlock::~MachineBasicBlock() {
LeakDetector::removeGarbageObject(this); LeakDetector::removeGarbageObject(this);
} }
std::ostream &llvm::operator<<(std::ostream &OS, const MachineBasicBlock &MBB) {
MBB.print(OS);
return OS;
}
raw_ostream &llvm::operator<<(raw_ostream &OS, const MachineBasicBlock &MBB) { raw_ostream &llvm::operator<<(raw_ostream &OS, const MachineBasicBlock &MBB) {
MBB.print(OS); MBB.print(OS);
return OS; return OS;
@ -159,7 +155,7 @@ bool MachineBasicBlock::isOnlyReachableByFallthrough() const {
} }
void MachineBasicBlock::dump() const { void MachineBasicBlock::dump() const {
print(*cerr.stream()); print(errs());
} }
static inline void OutputReg(raw_ostream &os, unsigned RegNo, static inline void OutputReg(raw_ostream &os, unsigned RegNo,
@ -173,11 +169,6 @@ static inline void OutputReg(raw_ostream &os, unsigned RegNo,
os << " %reg" << RegNo; os << " %reg" << RegNo;
} }
void MachineBasicBlock::print(std::ostream &OS) const {
raw_os_ostream RawOS(OS);
print(RawOS);
}
void MachineBasicBlock::print(raw_ostream &OS) const { void MachineBasicBlock::print(raw_ostream &OS) const {
const MachineFunction *MF = getParent(); const MachineFunction *MF = getParent();
if (!MF) { if (!MF) {

View File

@ -33,18 +33,16 @@
#include "llvm/Support/Compiler.h" #include "llvm/Support/Compiler.h"
#include "llvm/Support/GraphWriter.h" #include "llvm/Support/GraphWriter.h"
#include "llvm/Support/raw_ostream.h" #include "llvm/Support/raw_ostream.h"
#include <fstream>
#include <sstream>
using namespace llvm; using namespace llvm;
namespace { namespace {
struct VISIBILITY_HIDDEN Printer : public MachineFunctionPass { struct VISIBILITY_HIDDEN Printer : public MachineFunctionPass {
static char ID; static char ID;
std::ostream *OS; raw_ostream &OS;
const std::string Banner; const std::string Banner;
Printer(std::ostream *os, const std::string &banner) Printer(raw_ostream &os, const std::string &banner)
: MachineFunctionPass(&ID), OS(os), Banner(banner) {} : MachineFunctionPass(&ID), OS(os), Banner(banner) {}
const char *getPassName() const { return "MachineFunction Printer"; } const char *getPassName() const { return "MachineFunction Printer"; }
@ -55,8 +53,8 @@ namespace {
} }
bool runOnMachineFunction(MachineFunction &MF) { bool runOnMachineFunction(MachineFunction &MF) {
(*OS) << Banner; OS << Banner;
MF.print (*OS); MF.print(OS);
return false; return false;
} }
}; };
@ -66,7 +64,7 @@ namespace {
/// Returns a newly-created MachineFunction Printer pass. The default banner is /// Returns a newly-created MachineFunction Printer pass. The default banner is
/// empty. /// empty.
/// ///
FunctionPass *llvm::createMachineFunctionPrinterPass(std::ostream *OS, FunctionPass *llvm::createMachineFunctionPrinterPass(raw_ostream &OS,
const std::string &Banner){ const std::string &Banner){
return new Printer(OS, Banner); return new Printer(OS, Banner);
} }
@ -220,11 +218,6 @@ void MachineFunction::dump() const {
print(errs()); print(errs());
} }
void MachineFunction::print(std::ostream &OS) const {
raw_os_ostream RawOS(OS);
print(RawOS);
}
void MachineFunction::print(raw_ostream &OS) const { void MachineFunction::print(raw_ostream &OS) const {
OS << "# Machine code for " << Fn->getName() << "():\n"; OS << "# Machine code for " << Fn->getName() << "():\n";
@ -284,15 +277,16 @@ namespace llvm {
!Node->getBasicBlock()->getName().empty()) !Node->getBasicBlock()->getName().empty())
return Node->getBasicBlock()->getNameStr() + ":"; return Node->getBasicBlock()->getNameStr() + ":";
std::ostringstream Out; std::string OutStr;
if (ShortNames) { {
Out << Node->getNumber() << ':'; raw_string_ostream OSS(OutStr);
return Out.str();
if (ShortNames)
OSS << Node->getNumber() << ':';
else
Node->print(OSS);
} }
Node->print(Out);
std::string OutStr = Out.str();
if (OutStr[0] == '\n') OutStr.erase(OutStr.begin()); if (OutStr[0] == '\n') OutStr.erase(OutStr.begin());
// Process string output to make it nicer... // Process string output to make it nicer...

View File

@ -239,15 +239,15 @@ bool MachineSinking::SinkInstruction(MachineInstr *MI, bool &SawStore) {
if (MI->getParent() == SuccToSinkTo) if (MI->getParent() == SuccToSinkTo)
return false; return false;
DEBUG(cerr << "Sink instr " << *MI); DEBUG(errs() << "Sink instr " << *MI);
DEBUG(cerr << "to block " << *SuccToSinkTo); DEBUG(errs() << "to block " << *SuccToSinkTo);
// If the block has multiple predecessors, this would introduce computation on // If the block has multiple predecessors, this would introduce computation on
// a path that it doesn't already exist. We could split the critical edge, // a path that it doesn't already exist. We could split the critical edge,
// but for now we just punt. // but for now we just punt.
// FIXME: Split critical edges if not backedges. // FIXME: Split critical edges if not backedges.
if (SuccToSinkTo->pred_size() > 1) { if (SuccToSinkTo->pred_size() > 1) {
DEBUG(cerr << " *** PUNTING: Critical edge found\n"); DEBUG(errs() << " *** PUNTING: Critical edge found\n");
return false; return false;
} }

View File

@ -23,9 +23,6 @@
// the verifier errors. // the verifier errors.
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SetOperations.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Function.h" #include "llvm/Function.h"
#include "llvm/CodeGen/LiveVariables.h" #include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineFunctionPass.h"
@ -35,6 +32,9 @@
#include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetRegisterInfo.h" #include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetInstrInfo.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SetOperations.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Compiler.h" #include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h" #include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/ErrorHandling.h"