[flang-commits] [flang] [flang][OpenMP] Fix construct privatization in default clause (PR #72510)

via flang-commits flang-commits at lists.llvm.org
Wed Apr 24 03:20:00 PDT 2024


================
@@ -268,21 +268,39 @@ void DataSharingProcessor::insertLastPrivateCompare(mlir::Operation *op) {
   firOpBuilder.restoreInsertionPoint(localInsPt);
 }
 
+void DataSharingProcessor::collectSymbolsInNestedRegions(
+    Fortran::lower::pft::Evaluation &eval,
+    Fortran::semantics::Symbol::Flag flag,
+    llvm::SetVector<const Fortran::semantics::Symbol *>
+        &symbolsInNestedRegions) {
+  for (Fortran::lower::pft::Evaluation &nestedEval :
+       eval.getNestedEvaluations()) {
+    if (nestedEval.hasNestedEvaluations()) {
+      if (nestedEval.isConstruct())
+        // Recursively look for OpenMP constructs within `nestedEval`'s region
----------------
NimishMishra wrote:

Ideally, we want to capture symbols within nested OpenMP constructs in `symbolsInNestedRegions`.

In this case, the current evaluation is a non-OpenMP construct (like `do`). This recursive calls intends to find if there are any OpenMP constructs within this outer non-OpenMP construct.

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


More information about the flang-commits mailing list