diff options
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp | 4 | ||||
-rw-r--r-- | llvm/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp index 3bb25b0f570..dbe68d00c50 100644 --- a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp +++ b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp @@ -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 diff --git a/llvm/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll b/llvm/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll index 353a1c0e818..4e75910b433 100644 --- a/llvm/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll +++ b/llvm/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll @@ -288,8 +288,6 @@ define i32 @dead_exit_test_switch_loop(i32 %end) { ; 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:%.*]] |