mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Add some switches helpful for debugging:
-print-before=<Pass Name> Dump IR before running pass <Pass Name>. -print-before-all Dump IR before running each pass. -print-after-all Dump IR after running each pass. These are helpful when tracking down a miscompilation. It is easy to get IR dumps and do diffs on them, etc. To make this work well, add a new getPrinterPass API to Pass so that each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass suitable for dumping out the kind of object the Pass works on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100143 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -39,40 +39,6 @@
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
struct Printer : public MachineFunctionPass {
|
||||
static char ID;
|
||||
|
||||
raw_ostream &OS;
|
||||
const std::string Banner;
|
||||
|
||||
Printer(raw_ostream &os, const std::string &banner)
|
||||
: MachineFunctionPass(&ID), OS(os), Banner(banner) {}
|
||||
|
||||
const char *getPassName() const { return "MachineFunction Printer"; }
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.setPreservesAll();
|
||||
MachineFunctionPass::getAnalysisUsage(AU);
|
||||
}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) {
|
||||
OS << "# " << Banner << ":\n";
|
||||
MF.print(OS);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
char Printer::ID = 0;
|
||||
}
|
||||
|
||||
/// Returns a newly-created MachineFunction Printer pass. The default banner is
|
||||
/// empty.
|
||||
///
|
||||
FunctionPass *llvm::createMachineFunctionPrinterPass(raw_ostream &OS,
|
||||
const std::string &Banner){
|
||||
return new Printer(OS, Banner);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// MachineFunction implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
Reference in New Issue
Block a user