[llvm-branch-commits] [llvm] [GVN] Support critical-edge splitting in loop-load PRE (PR #206694)

Madhur Amilkanthwar via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Jul 22 22:58:53 PDT 2026


================
@@ -2018,9 +2018,38 @@ bool GVNPass::performLoopLoadPRE(LoadInst *Load,
   if (LoadPtr->canBeFreed())
     return false;
 
-  // TODO: Support critical edge splitting if blocker has more than 1 successor.
+  // The reload is inserted at the end of the chosen in-loop block so its value
+  // reaches the header along the path back to the latch. If that block has
+  // multiple successors, inserting there would also run the load on paths that
+  // leave the loop. Split the critical edge to the unique in-loop successor so
+  // the reload only runs on the path that feeds the header.
+  BasicBlock *InsertBlock = LoopBlock;
----------------
madhur13490 wrote:

Done.

https://github.com/llvm/llvm-project/pull/206694


More information about the llvm-branch-commits mailing list