mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-29 10:32:47 +00:00
Give clients of MachineFunctionPrinter the ability to specify a banner and
choose an ostream. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11016 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
10d208d7b1
commit
09caa3751f
@ -15,6 +15,8 @@
|
||||
#ifndef LLVM_CODEGEN_PASSES_H
|
||||
#define LLVM_CODEGEN_PASSES_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class FunctionPass;
|
||||
@ -23,8 +25,9 @@ namespace llvm {
|
||||
|
||||
/// MachineFunctionPrinter pass - This pass prints out the machine function to
|
||||
/// standard error, as a debugging tool.
|
||||
FunctionPass *createMachineFunctionPrinterPass();
|
||||
|
||||
FunctionPass *createMachineFunctionPrinterPass(std::ostream *OS = &std::cerr,
|
||||
const std::string &Banner ="");
|
||||
|
||||
/// PHIElimination pass - This pass eliminates machine instruction PHI nodes
|
||||
/// by inserting copy instructions. This destroys SSA information, but is the
|
||||
/// desired input for some register allocators. This pass is "required" by
|
||||
|
@ -34,6 +34,12 @@ static AnnotationID MF_AID(
|
||||
|
||||
namespace {
|
||||
struct Printer : public MachineFunctionPass {
|
||||
std::ostream *OS;
|
||||
const std::string &Banner;
|
||||
|
||||
Printer (std::ostream *_OS, const std::string &_Banner) :
|
||||
OS (_OS), Banner (_Banner) { }
|
||||
|
||||
const char *getPassName() const { return "MachineFunction Printer"; }
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
@ -41,14 +47,19 @@ namespace {
|
||||
}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) {
|
||||
MF.dump();
|
||||
(*OS) << Banner;
|
||||
MF.print (*OS);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createMachineFunctionPrinterPass() {
|
||||
return new Printer();
|
||||
/// Returns a newly-created MachineFunction Printer pass. The default output
|
||||
/// stream is std::cerr; the default banner is empty.
|
||||
///
|
||||
FunctionPass *llvm::createMachineFunctionPrinterPass(std::ostream *OS,
|
||||
const std::string &Banner) {
|
||||
return new Printer(OS, Banner);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
Loading…
Reference in New Issue
Block a user