[llvm] [AMDGPU] Use reverse iteration in CodeGenPrepare (PR #145484)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 29 01:27:57 PDT 2025


================
@@ -281,28 +284,18 @@ bool AMDGPUCodeGenPrepareImpl::run() {
   BreakPhiNodesCache.clear();
   bool MadeChange = false;
 
-  Function::iterator NextBB;
-  for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; FI = NextBB) {
-    BasicBlock *BB = &*FI;
-    NextBB = std::next(FI);
-
-    BasicBlock::iterator Next;
-    for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E;
-         I = Next) {
-      Next = std::next(I);
-
-      MadeChange |= visit(*I);
-
-      if (Next != E) { // Control flow changed
-        BasicBlock *NextInstBB = Next->getParent();
-        if (NextInstBB != BB) {
-          BB = NextInstBB;
-          E = BB->end();
-          FE = F.end();
-        }
-      }
+  for (BasicBlock &BB : reverse(F)) {
+    for (Instruction &I : make_early_inc_range(reverse(BB))) {
----------------
jayfoad wrote:

Do you still need `make_early_inc_range`?

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


More information about the llvm-commits mailing list