[llvm] [CodeExtractor] Optimize PHI incoming value removal using reverse iteration (NFC) (PR #171956)

via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 14 19:18:50 PST 2025


https://github.com/int-zjt updated https://github.com/llvm/llvm-project/pull/171956

>From 50d833af1f4d4b75d3da9cd8b9a089532a9f9b49 Mon Sep 17 00:00:00 2001
From: int-zjt <zhangjiatong.0 at bytedance.com>
Date: Wed, 10 Dec 2025 17:05:31 +0800
Subject: [PATCH 1/2] [CodeExtractor] Optimize PHI incoming value removal using
 reverse iteration

---
 llvm/lib/Transforms/Utils/CodeExtractor.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
index 0ca1fa2425a53..caf3309cb4c92 100644
--- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp
+++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
@@ -749,7 +749,7 @@ void CodeExtractor::severSplitPHINodesOfEntry(BasicBlock *&Header) {
 
       // Loop over all of the incoming value in PN, moving them to NewPN if they
       // are from the extracted region.
-      for (unsigned i = 0; i != PN->getNumIncomingValues(); ++i) {
+      for (int i = PN->getNumIncomingValues() - 1; i >= 0; --i) {
         if (Blocks.count(PN->getIncomingBlock(i))) {
           NewPN->addIncoming(PN->getIncomingValue(i), PN->getIncomingBlock(i));
           PN->removeIncomingValue(i);

>From 2b1ae1e07fd4c0a39503e5847f0d3cbdd048fc54 Mon Sep 17 00:00:00 2001
From: int-zjt <zhangjiatong.0 at bytedance.com>
Date: Mon, 15 Dec 2025 11:18:26 +0800
Subject: [PATCH 2/2] Fix wrong index

---
 llvm/lib/Transforms/Utils/CodeExtractor.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
index caf3309cb4c92..885c419474cb6 100644
--- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp
+++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
@@ -749,11 +749,10 @@ void CodeExtractor::severSplitPHINodesOfEntry(BasicBlock *&Header) {
 
       // Loop over all of the incoming value in PN, moving them to NewPN if they
       // are from the extracted region.
-      for (int i = PN->getNumIncomingValues() - 1; i >= 0; --i) {
+      for (int64_t i = PN->getNumIncomingValues() - 1; i >= 0; --i) {
         if (Blocks.count(PN->getIncomingBlock(i))) {
           NewPN->addIncoming(PN->getIncomingValue(i), PN->getIncomingBlock(i));
           PN->removeIncomingValue(i);
-          --i;
         }
       }
     }



More information about the llvm-commits mailing list