[llvm] r314937 - [MachineBlockPlacement] Make sure PreferredLoopExit is cleared everytime new loop is processed
    Xin Tong via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Oct  4 14:39:25 PDT 2017
    
    
  
Author: trentxintong
Date: Wed Oct  4 14:39:25 2017
New Revision: 314937
URL: http://llvm.org/viewvc/llvm-project?rev=314937&view=rev
Log:
[MachineBlockPlacement] Make sure PreferredLoopExit is cleared everytime new loop is processed
Summary: Rotate on exit that actually exits the current loop.
Reviewers: davidxl, danielcdh, iteratee, chandlerc
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D38563
Modified:
    llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp
Modified: llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp?rev=314937&r1=314936&r2=314937&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp (original)
+++ llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp Wed Oct  4 14:39:25 2017
@@ -2233,9 +2233,19 @@ void MachineBlockPlacement::buildLoopCha
   // If we selected just the header for the loop top, look for a potentially
   // profitable exit block in the event that rotating the loop can eliminate
   // branches by placing an exit edge at the bottom.
+  //
+  // Loops are processed innermost to uttermost, make sure we clear
+  // PreferredLoopExit before processing a new loop.
+  PreferredLoopExit = nullptr;
   if (!RotateLoopWithProfile && LoopTop == L.getHeader())
     PreferredLoopExit = findBestLoopExit(L, LoopBlockSet);
 
+  // Make sure PreferredLoopExit actually exits the current loop.
+  if (PreferredLoopExit) {
+    assert(L.isLoopExiting(PreferredLoopExit) &&
+           "not an exiting block of current loop");
+  }
+
   BlockChain &LoopChain = *BlockToChain[LoopTop];
 
   // FIXME: This is a really lame way of walking the chains in the loop: we
    
    
More information about the llvm-commits
mailing list