[llvm] r353276 - [LoopSimplifyCFG] Do not count dead exit blocks twice, make CFG simpler

Max Kazantsev via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 5 23:49:18 PST 2019


Author: mkazantsev
Date: Tue Feb  5 23:49:17 2019
New Revision: 353276

URL: http://llvm.org/viewvc/llvm-project?rev=353276&view=rev
Log:
[LoopSimplifyCFG] Do not count dead exit blocks twice, make CFG simpler

Modified:
    llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
    llvm/trunk/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll

Modified: llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp?rev=353276&r1=353275&r2=353276&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp Tue Feb  5 23:49:17 2019
@@ -229,8 +229,10 @@ private:
     // Now, all exit blocks that are not marked as live are dead.
     SmallVector<BasicBlock *, 8> ExitBlocks;
     L.getExitBlocks(ExitBlocks);
+    SmallPtrSet<BasicBlock *, 8> UniqueDeadExits;
     for (auto *ExitBlock : ExitBlocks)
-      if (!LiveExitBlocks.count(ExitBlock))
+      if (!LiveExitBlocks.count(ExitBlock) &&
+          UniqueDeadExits.insert(ExitBlock).second)
         DeadExitBlocks.push_back(ExitBlock);
 
     // Whether or not the edge From->To will still be present in graph after the

Modified: llvm/trunk/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll?rev=353276&r1=353275&r2=353276&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll (original)
+++ llvm/trunk/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll Tue Feb  5 23:49:17 2019
@@ -288,8 +288,6 @@ define i32 @dead_exit_test_switch_loop(i
 ; CHECK-NEXT:  preheader:
 ; CHECK-NEXT:    switch i32 0, label [[PREHEADER_SPLIT:%.*]] [
 ; CHECK-NEXT:    i32 1, label [[DEAD:%.*]]
-; CHECK-NEXT:    i32 2, label [[DEAD]]
-; CHECK-NEXT:    i32 3, label [[DEAD]]
 ; CHECK-NEXT:    ]
 ; CHECK:       preheader-split:
 ; CHECK-NEXT:    br label [[HEADER:%.*]]




More information about the llvm-commits mailing list