[flang-commits] [flang] [flang][OpenMP] Don't pritvatize pre-determined symbols declare by nested `BLOCK`s (PR #152652)

Sergio Afonso via flang-commits flang-commits at lists.llvm.org
Fri Aug 8 04:50:38 PDT 2025


================
@@ -58,13 +58,21 @@ class DataSharingProcessor {
     }
 
     void Post(const parser::Name &name) {
-      auto *current = !constructs.empty() ? constructs.back() : nullptr;
+      const void *current = !constructs.empty() ? constructs.back() : nullptr;
       symDefMap.try_emplace(name.symbol, current);
     }
 
-    llvm::SmallVector<const parser::OpenMPConstruct *> constructs;
-    llvm::DenseMap<semantics::Symbol *, const parser::OpenMPConstruct *>
-        symDefMap;
+    bool Pre(const parser::DeclarationConstruct &decl) {
+      constructs.push_back(&decl);
+      return true;
+    }
+
+    void Post(const parser::DeclarationConstruct &decl) {
+      constructs.pop_back();
+    }
+
+    llvm::SmallVector<const void *> constructs;
+    llvm::DenseMap<semantics::Symbol *, const void *> symDefMap;
----------------
skatrak wrote:

Would you be able to use an `std::variant<const parser::OpenMPConstruct *, const parser::DeclarationConstruct *>` instead? Mainly because I think having opaque pointers is not great for maintainability.

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


More information about the flang-commits mailing list