OLD | NEW |
1 //===- subzero/src/IceCfg.h - Control flow graph ----------------*- C++ -*-===// | 1 //===- subzero/src/IceCfg.h - Control flow graph ----------------*- C++ -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
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 /// \file | 10 /// \file |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 /// CfgNode::OutEdges[]. | 184 /// CfgNode::OutEdges[]. |
185 void computeInOutEdges(); | 185 void computeInOutEdges(); |
186 void renumberInstructions(); | 186 void renumberInstructions(); |
187 void placePhiLoads(); | 187 void placePhiLoads(); |
188 void placePhiStores(); | 188 void placePhiStores(); |
189 void deletePhis(); | 189 void deletePhis(); |
190 void advancedPhiLowering(); | 190 void advancedPhiLowering(); |
191 void reorderNodes(); | 191 void reorderNodes(); |
192 void shuffleNodes(); | 192 void shuffleNodes(); |
193 | 193 |
194 enum AllocaBaseVariableType { | |
195 BVT_StackPointer, | |
196 BVT_FramePointer, | |
197 BVT_UserPointer | |
198 }; | |
199 void sortAndCombineAllocas(CfgVector<Inst *> &Allocas, | |
200 uint32_t CombinedAlignment, InstList &Insts, | |
201 AllocaBaseVariableType BaseVariableType); | |
202 /// Scan allocas to determine whether we need to use a frame pointer. | 194 /// Scan allocas to determine whether we need to use a frame pointer. |
203 /// If SortAndCombine == true, merge all the fixed-size allocas in the | 195 /// If SortAndCombine == true, merge all the fixed-size allocas in the |
204 /// entry block and emit stack or frame pointer-relative addressing. | 196 /// entry block and emit stack or frame pointer-relative addressing. |
205 void processAllocas(bool SortAndCombine); | 197 void processAllocas(bool SortAndCombine); |
206 void doAddressOpt(); | 198 void doAddressOpt(); |
207 void doArgLowering(); | 199 void doArgLowering(); |
208 void doNopInsertion(); | 200 void doNopInsertion(); |
209 void genCode(); | 201 void genCode(); |
210 void genFrame(); | 202 void genFrame(); |
211 void computeLoopNestDepth(); | 203 void computeLoopNestDepth(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 /// one of them. It returns a list with all the globals that the profiling | 252 /// one of them. It returns a list with all the globals that the profiling |
261 /// code needs to be defined. | 253 /// code needs to be defined. |
262 void profileBlocks(); | 254 void profileBlocks(); |
263 | 255 |
264 /// Delete registered jump table placeholder instructions. This should only be | 256 /// Delete registered jump table placeholder instructions. This should only be |
265 /// called once all repointing has taken place. | 257 /// called once all repointing has taken place. |
266 void deleteJumpTableInsts(); | 258 void deleteJumpTableInsts(); |
267 /// Iterate through the registered jump tables and emit them. | 259 /// Iterate through the registered jump tables and emit them. |
268 void emitJumpTables(); | 260 void emitJumpTables(); |
269 | 261 |
| 262 enum AllocaBaseVariableType { |
| 263 BVT_StackPointer, |
| 264 BVT_FramePointer, |
| 265 BVT_UserPointer |
| 266 }; |
| 267 void sortAndCombineAllocas(CfgVector<Inst *> &Allocas, |
| 268 uint32_t CombinedAlignment, InstList &Insts, |
| 269 AllocaBaseVariableType BaseVariableType); |
| 270 void findRematerializable(); |
| 271 |
270 GlobalContext *Ctx; | 272 GlobalContext *Ctx; |
271 uint32_t SequenceNumber; /// output order for emission | 273 uint32_t SequenceNumber; /// output order for emission |
272 uint32_t ConstantBlindingCookie = 0; /// cookie for constant blinding | 274 uint32_t ConstantBlindingCookie = 0; /// cookie for constant blinding |
273 VerboseMask VMask; | 275 VerboseMask VMask; |
274 IceString FunctionName = ""; | 276 IceString FunctionName = ""; |
275 Type ReturnType = IceType_void; | 277 Type ReturnType = IceType_void; |
276 bool IsInternalLinkage = false; | 278 bool IsInternalLinkage = false; |
277 bool HasError = false; | 279 bool HasError = false; |
278 bool FocusedTiming = false; | 280 bool FocusedTiming = false; |
279 IceString ErrorMessage = ""; | 281 IceString ErrorMessage = ""; |
(...skipping 26 matching lines...) Expand all Loading... |
306 | 308 |
307 public: | 309 public: |
308 static void TlsInit() { ICE_TLS_INIT_FIELD(CurrentCfg); } | 310 static void TlsInit() { ICE_TLS_INIT_FIELD(CurrentCfg); } |
309 }; | 311 }; |
310 | 312 |
311 template <> Variable *Cfg::makeVariable<Variable>(Type Ty); | 313 template <> Variable *Cfg::makeVariable<Variable>(Type Ty); |
312 | 314 |
313 } // end of namespace Ice | 315 } // end of namespace Ice |
314 | 316 |
315 #endif // SUBZERO_SRC_ICECFG_H | 317 #endif // SUBZERO_SRC_ICECFG_H |
OLD | NEW |