From 6bf861597c87d708336c6ed36678d91b75d1043c Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Tue, 12 Feb 2019 07:48:07 +0000 Subject: [LoopSimplifyCFG] Pay respect to LCSSA when removing dead blocks Utility function that we use for blocks deletion always unconditionally removes one-input Phis. In LoopSimplifyCFG, it can lead to breach of LCSSA form. This patch alters this function to keep them if needed. Differential Revision: https://reviews.llvm.org/D57231 Reviewed By: fedor.sergeev llvm-svn: 353803 --- llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp') diff --git a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp index 01d770ca515..896f9dd001e 100644 --- a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp +++ b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp @@ -418,7 +418,7 @@ private: LI.removeBlock(BB); } - DetatchDeadBlocks(DeadLoopBlocks, &DTUpdates); + DetatchDeadBlocks(DeadLoopBlocks, &DTUpdates, /*KeepOneInputPHIs*/true); DTU.applyUpdates(DTUpdates); DTUpdates.clear(); for (auto *BB : DeadLoopBlocks) -- cgit v1.2.3