From a485984c0c88bbcc490000660a1f30bed13be144 Mon Sep 17 00:00:00 2001 From: Manuel Jacob Date: Thu, 2 Jun 2016 22:14:26 +0000 Subject: [PM] Schedule InstSimplify after late LICM run, to clean up LCSSA nodes. Summary: The module pass pipeline includes a late LICM run after loop unrolling. LCSSA is implicitly run as a pass dependency of LICM. However no cleanup pass was run after this, so the LCSSA nodes ended in the optimized output. Reviewers: hfinkel, mehdi_amini Subscribers: majnemer, bruno, mzolotukhin, mehdi_amini, llvm-commits Differential Revision: http://reviews.llvm.org/D20606 llvm-svn: 271602 --- llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'llvm/lib/Transforms') diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 96282171c9f..6397915da1c 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -542,6 +542,9 @@ void PassManagerBuilder::populateModulePassManager( // outer loop. LICM pass can help to promote the runtime check out if the // checked value is loop invariant. MPM.add(createLICMPass()); + + // Get rid of LCSSA nodes. + MPM.add(createInstructionSimplifierPass()); } // After vectorization and unrolling, assume intrinsics may tell us more -- cgit v1.2.3