[flang-commits] [flang] [mlir] Reland "[flang][OpenMP] Fix lowering of LINEAR iteration variables (#183794)" (PR #188851)

via flang-commits flang-commits at lists.llvm.org
Fri Mar 27 09:29:48 PDT 2026


================
@@ -277,17 +277,41 @@ class LinearClauseProcessor {
     }
   }
 
-  // Rewrite all uses of the original variable in `BBName`
-  //  with the linear variable in-place
-  void rewriteInPlace(llvm::IRBuilderBase &builder, const std::string &BBName,
+  // Rewrite all uses of the original variable, in the basic blocks whose names
+  // start with `prefix`, with the linear variable in-place.
+  void rewriteInPlace(llvm::IRBuilderBase &builder, llvm::BasicBlock *startBB,
+                      llvm::BasicBlock *endBB, llvm::StringRef prefix,
                       size_t varIndex) {
-    llvm::SmallVector<llvm::User *> users;
-    for (llvm::User *user : linearOrigVal[varIndex]->users())
-      users.push_back(user);
-    for (auto *user : users) {
+    llvm::SmallVector<llvm::BasicBlock *, 32> worklist;
+    llvm::SmallPtrSet<llvm::BasicBlock *, 32> visited;
+    llvm::SmallPtrSet<llvm::BasicBlock *, 32> matchingBBs;
+
+    assert(startBB && endBB && "Invalid startBB/endBB");
----------------
NimishMishra wrote:

Thanks for this logic

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


More information about the flang-commits mailing list