You've already forked linux-packaging-mono
Imported Upstream version 6.0.0.172
Former-commit-id: f3cc9b82f3e5bd8f0fd3ebc098f789556b44e9cd
This commit is contained in:
parent
8016999e4d
commit
64ac736ec5
69
external/llvm/lib/CodeGen/MachineFunctionPrinterPass.cpp
vendored
Normal file
69
external/llvm/lib/CodeGen/MachineFunctionPrinterPass.cpp
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
//===-- MachineFunctionPrinterPass.cpp ------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// MachineFunctionPrinterPass implementation.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
#include "llvm/CodeGen/Passes.h"
|
||||
#include "llvm/CodeGen/SlotIndexes.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
/// MachineFunctionPrinterPass - This is a pass to dump the IR of a
|
||||
/// MachineFunction.
|
||||
///
|
||||
struct MachineFunctionPrinterPass : public MachineFunctionPass {
|
||||
static char ID;
|
||||
|
||||
raw_ostream &OS;
|
||||
const std::string Banner;
|
||||
|
||||
MachineFunctionPrinterPass() : MachineFunctionPass(ID), OS(dbgs()) { }
|
||||
MachineFunctionPrinterPass(raw_ostream &os, const std::string &banner)
|
||||
: MachineFunctionPass(ID), OS(os), Banner(banner) {}
|
||||
|
||||
StringRef getPassName() const override { return "MachineFunction Printer"; }
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.setPreservesAll();
|
||||
MachineFunctionPass::getAnalysisUsage(AU);
|
||||
}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override {
|
||||
if (!llvm::isFunctionInPrintList(MF.getName()))
|
||||
return false;
|
||||
OS << "# " << Banner << ":\n";
|
||||
MF.print(OS, getAnalysisIfAvailable<SlotIndexes>());
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
char MachineFunctionPrinterPass::ID = 0;
|
||||
}
|
||||
|
||||
char &llvm::MachineFunctionPrinterPassID = MachineFunctionPrinterPass::ID;
|
||||
INITIALIZE_PASS(MachineFunctionPrinterPass, "machineinstr-printer",
|
||||
"Machine Function Printer", false, false)
|
||||
|
||||
namespace llvm {
|
||||
/// Returns a newly-created MachineFunction Printer pass. The
|
||||
/// default banner is empty.
|
||||
///
|
||||
MachineFunctionPass *createMachineFunctionPrinterPass(raw_ostream &OS,
|
||||
const std::string &Banner){
|
||||
return new MachineFunctionPrinterPass(OS, Banner);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user