diff options
Diffstat (limited to 'contrib/llvm/lib/CodeGen/MIRPrintingPass.cpp')
-rw-r--r-- | contrib/llvm/lib/CodeGen/MIRPrintingPass.cpp | 44 |
1 files changed, 3 insertions, 41 deletions
diff --git a/contrib/llvm/lib/CodeGen/MIRPrintingPass.cpp b/contrib/llvm/lib/CodeGen/MIRPrintingPass.cpp index 5e0f4cd..13d61e6 100644 --- a/contrib/llvm/lib/CodeGen/MIRPrintingPass.cpp +++ b/contrib/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; } |