[flang-commits] [flang] [flang][OpenMP] incorrect handling for local variable in OpenMP parallel workshare firstprivate(P) (PR #195616)

Tom Eccles via flang-commits flang-commits at lists.llvm.org
Tue May 26 08:59:59 PDT 2026


================
@@ -394,12 +504,46 @@ static void parallelizeRegion(Region &sourceRegion, Region &targetRegion,
           allParallelized = false;
         }
       } else if (auto alloca = dyn_cast<fir::AllocaOp>(&op)) {
-        auto hoisted =
-            cast<fir::AllocaOp>(allocaBuilder.clone(*alloca, singleMapping));
-        rootMapping.map(&*alloca, &*hoisted);
-        rootMapping.map(alloca.getResult(), hoisted.getResult());
-        copyPrivate.push_back(hoisted);
-        allParallelized = false;
+        if (alloca.isDynamic()) {
----------------
tblah wrote:

This will also match `fir.alloca !fir.char<1,?>(%len)`, which doesn't have any such fir.shape.

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


More information about the flang-commits mailing list