[PATCH] D32433: Compute safety information in a much finer granularity.
    Sanjoy Das via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Apr 24 10:52:46 PDT 2017
    
    
  
sanjoy added inline comments.
================
Comment at: llvm/trunk/lib/Transforms/Scalar/LICM.cpp:482
+  // Iterate over loop instructions and compute early exit points.
+  for (Loop::block_iterator BB = CurLoop->block_begin(),
                             BBE = CurLoop->block_end();
----------------
This can be a range for over `blocks()`.
================
Comment at: llvm/trunk/lib/Transforms/Scalar/LICM.cpp:485
+       BB != BBE; ++BB) {
+    for (BasicBlock::iterator I = (*BB)->begin(), E = (*BB)->end(); I != E;
+         ++I) {
----------------
This can be a range for also.
================
Comment at: llvm/trunk/lib/Transforms/Scalar/LICM.cpp:487
+         ++I) {
+      if (isGuaranteedToTransferExecutionToSuccessor(&*I))
+        continue;
----------------
This is subjective, but in this kind of situation, I tend to avoid early exits since you just have one line after the early exit.
================
Comment at: llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp:1049
+  // which does not execute this instruction and its not guaranteed to execute.
+  for (Instruction *ExitInst : SafetyInfo->EarlyExits)
+    if (!DT->dominates(&Inst, ExitInst))
----------------
Note: you could use `all_of` here, but this is fine too.
Repository:
  rL LLVM
https://reviews.llvm.org/D32433
    
    
More information about the llvm-commits
mailing list