[llvm-branch-commits] [llvm] [CodeGen][LSR][NPM] Make LoopStrengthReduce pass preserve LCSSA (PR #176692)

Vikram Hegde via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jan 23 03:32:05 PST 2026


https://github.com/vikramRH updated https://github.com/llvm/llvm-project/pull/176692

>From 1b3fa6f4653fc2d470ab7ea3e2a726eb9457ed28 Mon Sep 17 00:00:00 2001
From: vikhegde <vikram.hegde at amd.com>
Date: Fri, 16 Jan 2026 14:53:54 +0530
Subject: [PATCH] [CodeGen][LSR][NPM] Make LoopStrengthReduce pass preserve
 LCSSA

---
 llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index e9d78baece25b..0791689660b00 100644
--- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -7136,6 +7136,10 @@ PreservedAnalyses LoopStrengthReducePass::run(Loop &L, LoopAnalysisManager &AM,
                           AR.DT, AR.LI, AR.TTI, AR.AC, AR.TLI, AR.MSSA))
     return PreservedAnalyses::all();
 
+  // TODO: Remove this once the LSR handles LCSSA preservation completely.
+  if (auto *OuterLoop = L.getOutermostLoop())
+    formLCSSARecursively(*OuterLoop, AR.DT, &AR.LI, &AR.SE);
+
   auto PA = getLoopPassPreservedAnalyses();
   if (AR.MSSA)
     PA.preserve<MemorySSAAnalysis>();



More information about the llvm-branch-commits mailing list