Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp
Line
Count
Source
1
//===----------------------------------------------------------------------===//
2
// Instruction Selector Subtarget Control
3
//===----------------------------------------------------------------------===//
4
5
//===----------------------------------------------------------------------===//
6
// This file defines a pass used to change the subtarget for the
7
// Mips Instruction selector.
8
//
9
//===----------------------------------------------------------------------===//
10
11
#include "Mips.h"
12
#include "MipsTargetMachine.h"
13
#include "llvm/CodeGen/TargetPassConfig.h"
14
#include "llvm/CodeGen/StackProtector.h"
15
#include "llvm/Support/Debug.h"
16
#include "llvm/Support/raw_ostream.h"
17
18
using namespace llvm;
19
20
#define DEBUG_TYPE "mips-isel"
21
22
namespace {
23
  class MipsModuleDAGToDAGISel : public MachineFunctionPass {
24
  public:
25
    static char ID;
26
27
2.03k
    MipsModuleDAGToDAGISel() : MachineFunctionPass(ID) {}
28
29
    // Pass Name
30
12.8k
    StringRef getPassName() const override {
31
12.8k
      return "MIPS DAG->DAG Pattern Instruction Selection";
32
12.8k
    }
33
34
1.97k
    void getAnalysisUsage(AnalysisUsage &AU) const override {
35
1.97k
      AU.addRequired<TargetPassConfig>();
36
1.97k
      AU.addPreserved<StackProtector>();
37
1.97k
      MachineFunctionPass::getAnalysisUsage(AU);
38
1.97k
    }
39
40
    bool runOnMachineFunction(MachineFunction &MF) override;
41
  };
42
43
  char MipsModuleDAGToDAGISel::ID = 0;
44
}
45
46
12.8k
bool MipsModuleDAGToDAGISel::runOnMachineFunction(MachineFunction &MF) {
47
12.8k
  LLVM_DEBUG(errs() << "In MipsModuleDAGToDAGISel::runMachineFunction\n");
48
12.8k
  auto &TPC = getAnalysis<TargetPassConfig>();
49
12.8k
  auto &TM = TPC.getTM<MipsTargetMachine>();
50
12.8k
  TM.resetSubtarget(&MF);
51
12.8k
  return false;
52
12.8k
}
53
54
2.03k
llvm::FunctionPass *llvm::createMipsModuleISelDagPass() {
55
2.03k
  return new MipsModuleDAGToDAGISel();
56
2.03k
}