OLD | NEW |
1 //===-- ARMTargetMachine.cpp - Define TargetMachine for ARM ---------------===// | 1 //===-- ARMTargetMachine.cpp - Define TargetMachine for ARM ---------------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // | 10 // |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 134 |
135 const ARMSubtarget &getARMSubtarget() const { | 135 const ARMSubtarget &getARMSubtarget() const { |
136 return *getARMTargetMachine().getSubtargetImpl(); | 136 return *getARMTargetMachine().getSubtargetImpl(); |
137 } | 137 } |
138 | 138 |
139 virtual bool addPreISel(); | 139 virtual bool addPreISel(); |
140 virtual bool addInstSelector(); | 140 virtual bool addInstSelector(); |
141 virtual bool addPreRegAlloc(); | 141 virtual bool addPreRegAlloc(); |
142 virtual bool addPreSched2(); | 142 virtual bool addPreSched2(); |
143 virtual bool addPreEmitPass(); | 143 virtual bool addPreEmitPass(); |
| 144 // @LOCALMOD-START |
| 145 virtual void addIRPasses(); |
| 146 // @LOCALMOD-END |
144 }; | 147 }; |
145 } // namespace | 148 } // namespace |
146 | 149 |
147 TargetPassConfig *ARMBaseTargetMachine::createPassConfig(PassManagerBase &PM) { | 150 TargetPassConfig *ARMBaseTargetMachine::createPassConfig(PassManagerBase &PM) { |
148 return new ARMPassConfig(this, PM); | 151 return new ARMPassConfig(this, PM); |
149 } | 152 } |
150 | 153 |
151 bool ARMPassConfig::addPreISel() { | 154 bool ARMPassConfig::addPreISel() { |
152 if (TM->getOptLevel() != CodeGenOpt::None && EnableGlobalMerge) | 155 if (TM->getOptLevel() != CodeGenOpt::None && EnableGlobalMerge) |
153 addPass(createGlobalMergePass(TM->getTargetLowering())); | 156 addPass(createGlobalMergePass(TM->getTargetLowering())); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 // @LOCALMOD-START | 225 // @LOCALMOD-START |
223 // This pass does all the heavy sfi lifting. | 226 // This pass does all the heavy sfi lifting. |
224 if (getARMSubtarget().isTargetNaCl()) { | 227 if (getARMSubtarget().isTargetNaCl()) { |
225 addPass(createARMNaClRewritePass()); | 228 addPass(createARMNaClRewritePass()); |
226 } | 229 } |
227 // @LOCALMOD-END | 230 // @LOCALMOD-END |
228 | 231 |
229 return true; | 232 return true; |
230 } | 233 } |
231 | 234 |
| 235 // @LOCALMOD-START |
| 236 void ARMPassConfig::addIRPasses() { |
| 237 if (getARMSubtarget().isTargetNaCl()) { |
| 238 addPass(createARMNaClDivideCheckPass()); |
| 239 } |
| 240 TargetPassConfig::addIRPasses(); |
| 241 } |
| 242 // @LOCALMOD-END |
| 243 |
232 bool ARMBaseTargetMachine::addCodeEmitter(PassManagerBase &PM, | 244 bool ARMBaseTargetMachine::addCodeEmitter(PassManagerBase &PM, |
233 JITCodeEmitter &JCE) { | 245 JITCodeEmitter &JCE) { |
234 // Machine code emitter pass for ARM. | 246 // Machine code emitter pass for ARM. |
235 PM.add(createARMJITCodeEmitterPass(*this, JCE)); | 247 PM.add(createARMJITCodeEmitterPass(*this, JCE)); |
236 return false; | 248 return false; |
237 } | 249 } |
OLD | NEW |