[SimplifyCFG] SimplifyEqualityComparisonWithOnlyPredecessor(): really don't delete...
authorRoman Lebedev <lebedev.ri@gmail.com>
Tue, 5 Jan 2021 19:02:53 +0000 (22:02 +0300)
committerRoman Lebedev <lebedev.ri@gmail.com>
Tue, 5 Jan 2021 22:52:39 +0000 (01:52 +0300)
llvm/lib/Transforms/Utils/SimplifyCFG.cpp
llvm/test/Transforms/SimplifyCFG/SimplifyEqualityComparisonWithOnlyPredecessor-domtree-preservation-edgecase.ll

index a433d04f2422eb0fe174435bafd66dd377c80a9b..3fbc22a85be4551226d734a227759ea02867d9bc 100644 (file)
@@ -994,7 +994,8 @@ bool SimplifyCFGOpt::SimplifyEqualityComparisonWithOnlyPredecessor(
   BasicBlock *CheckEdge = TheRealDest;
   for (BasicBlock *Succ : successors(TIBB))
     if (Succ != CheckEdge) {
-      RemovedSuccs.insert(Succ);
+      if (Succ != TheRealDest)
+        RemovedSuccs.insert(Succ);
       Succ->removePredecessor(TIBB);
     } else
       CheckEdge = nullptr;
index d6b9ea7f52c7cafa56fd22e7e56d526dc4580e35..617cd062652eb21c73ba9d38cb580f29e760cd32 100644 (file)
@@ -1,5 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=0 < %s | FileCheck %s
+; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s
 
 declare void @zzz()