Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: src/IceCfg.h

Issue 1441793002: Subzero: Find rematerializable variables transitively. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Make the analysis loop more readable Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/IceCfg.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | src/IceCfg.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698