/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 | } |