Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/lib/CodeGen/MIRPrintingPass.cpp
Line
Count
Source (jump to first uncovered line)
1
//===- MIRPrintingPass.cpp - Pass that prints out using the MIR format ----===//
2
//
3
//                     The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
// This file implements a pass that prints out the LLVM module using the MIR
11
// serialization format.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#include "llvm/CodeGen/MIRPrinter.h"
16
17
#include "llvm/CodeGen/MIRYamlMapping.h"
18
#include "llvm/CodeGen/MachineFunctionPass.h"
19
#include "llvm/CodeGen/Passes.h"
20
#include "llvm/Support/Debug.h"
21
#include "llvm/Support/raw_ostream.h"
22
23
using namespace llvm;
24
25
namespace {
26
27
/// This pass prints out the LLVM IR to an output stream using the MIR
28
/// serialization format.
29
struct MIRPrintingPass : public MachineFunctionPass {
30
  static char ID;
31
  raw_ostream &OS;
32
  std::string MachineFunctions;
33
34
0
  MIRPrintingPass() : MachineFunctionPass(ID), OS(dbgs()) {}
35
748
  MIRPrintingPass(raw_ostream &OS) : MachineFunctionPass(ID), OS(OS) {}
36
37
2
  StringRef getPassName() const override { return "MIR Printing Pass"; }
38
39
748
  void getAnalysisUsage(AnalysisUsage &AU) const override {
40
748
    AU.setPreservesAll();
41
748
    MachineFunctionPass::getAnalysisUsage(AU);
42
748
  }
43
44
2.51k
  bool runOnMachineFunction(MachineFunction &MF) override {
45
2.51k
    std::string Str;
46
2.51k
    raw_string_ostream StrOS(Str);
47
2.51k
    printMIR(StrOS, MF);
48
2.51k
    MachineFunctions.append(StrOS.str());
49
2.51k
    return false;
50
2.51k
  }
51
52
609
  bool doFinalization(Module &M) override {
53
609
    printMIR(OS, M);
54
609
    OS << MachineFunctions;
55
609
    return false;
56
609
  }
57
};
58
59
char MIRPrintingPass::ID = 0;
60
61
} // end anonymous namespace
62
63
char &llvm::MIRPrintingPassID = MIRPrintingPass::ID;
64
INITIALIZE_PASS(MIRPrintingPass, "mir-printer", "MIR Printer", false, false)
65
66
namespace llvm {
67
68
748
MachineFunctionPass *createPrintMIRPass(raw_ostream &OS) {
69
748
  return new MIRPrintingPass(OS);
70
748
}
71
72
} // end namespace llvm