diff options
author | Alex Lorenz <arphaman@gmail.com> | 2015-06-15 23:52:35 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2015-06-15 23:52:35 +0000 |
commit | 345c1449c821a815d23f874d7cb9890003ce2cc1 (patch) | |
tree | a51b6fe82163fefb87c63633fd601ad337b7ff68 /llvm/lib/CodeGen/MIRPrintingPass.cpp | |
parent | 4cd526453453e8cf187ff5873566e3f040f7dffa (diff) | |
download | bcm5719-llvm-345c1449c821a815d23f874d7cb9890003ce2cc1.tar.gz bcm5719-llvm-345c1449c821a815d23f874d7cb9890003ce2cc1.zip |
MIR Serialization: move the MIR printer out of the MIR printing pass.
This commit decouples the MIR printer and the MIR printing pass so
that it will be possible to move the MIR printer into a separate
machine IR library later on.
Reviewers: Duncan P. N. Exon Smith
llvm-svn: 239788
Diffstat (limited to 'llvm/lib/CodeGen/MIRPrintingPass.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MIRPrintingPass.cpp | 44 |
1 files changed, 3 insertions, 41 deletions
diff --git a/llvm/lib/CodeGen/MIRPrintingPass.cpp b/llvm/lib/CodeGen/MIRPrintingPass.cpp index 5e0f4cdcbfd..13d61e65d7e 100644 --- a/llvm/lib/CodeGen/MIRPrintingPass.cpp +++ b/llvm/lib/CodeGen/MIRPrintingPass.cpp @@ -12,54 +12,17 @@ // //===----------------------------------------------------------------------===// +#include "MIRPrinter.h" #include "llvm/CodeGen/Passes.h" -#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MIRYamlMapping.h" -#include "llvm/IR/Module.h" #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" -#include "llvm/Support/YAMLTraits.h" using namespace llvm; -namespace llvm { -namespace yaml { - -/// This struct serializes the LLVM IR module. -template <> struct BlockScalarTraits<Module> { - static void output(const Module &Mod, void *Ctxt, raw_ostream &OS) { - Mod.print(OS, nullptr); - } - static StringRef input(StringRef Str, void *Ctxt, Module &Mod) { - llvm_unreachable("LLVM Module is supposed to be parsed separately"); - return ""; - } -}; - -} // end namespace yaml -} // end namespace llvm - namespace { -/// This class prints out the machine functions using the MIR serialization -/// format. -class MIRPrinter { - raw_ostream &OS; - -public: - MIRPrinter(raw_ostream &OS) : OS(OS) {} - - void print(const MachineFunction &MF); -}; - -void MIRPrinter::print(const MachineFunction &MF) { - yaml::MachineFunction YamlMF; - YamlMF.Name = MF.getName(); - yaml::Output Out(OS); - Out << YamlMF; -} - /// This pass prints out the LLVM IR to an output stream using the MIR /// serialization format. struct MIRPrintingPass : public MachineFunctionPass { @@ -80,14 +43,13 @@ struct MIRPrintingPass : public MachineFunctionPass { virtual bool runOnMachineFunction(MachineFunction &MF) override { std::string Str; raw_string_ostream StrOS(Str); - MIRPrinter(StrOS).print(MF); + printMIR(StrOS, MF); MachineFunctions.append(StrOS.str()); return false; } virtual bool doFinalization(Module &M) override { - yaml::Output Out(OS); - Out << M; + printMIR(OS, M); OS << MachineFunctions; return false; } |