[Openmp-commits] [PATCH] D145093: Add map info for dereference pointer.

Jennifer Yu via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Thu Mar 2 11:33:59 PST 2023


jyu2 added inline comments.


================
Comment at: clang/lib/CodeGen/CGOpenMPRuntime.cpp:7487-7497
+      auto TNext = Next;
+      bool IsVarDerefAssoWithArray = false;
+      if (UO && UO->getOpcode() == UO_Deref)
+        for (; TNext != CE; TNext = std::next(TNext))
+          if (isa<OMPArraySectionExpr>(TNext->getAssociatedExpression()) ||
+              isa<MemberExpr>(TNext->getAssociatedExpression()) ||
+              isa<OMPArrayShapingExpr>(TNext->getAssociatedExpression()) ||
----------------
ABataev wrote:
> Why need a loop here? Can you somehow merge analysis for (*p) expression with the pointer subscript analysis?
What about if you have three dereference pointers like (***a)[0:3]  or four pointers...


================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:2206-2207
             return false;
-
-          if (isa<ArraySubscriptExpr>(EI->getAssociatedExpression()) ||
-              isa<OMPArraySectionExpr>(EI->getAssociatedExpression()) ||
-              isa<MemberExpr>(EI->getAssociatedExpression()) ||
-              isa<OMPArrayShapingExpr>(EI->getAssociatedExpression())) {
-            IsVariableAssociatedWithSection = true;
-            // There is nothing more we need to know about this variable.
-            return true;
+          auto Next = EI;
+          for (; Next != EE; Next = std::next(Next)) {
+            if (isa<ArraySubscriptExpr>(Next->getAssociatedExpression()) ||
----------------
ABataev wrote:
> Why do you need a loop here?
What about if you have three dereference pointers like (***a)[0:3]  or four pointers...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145093/new/

https://reviews.llvm.org/D145093



More information about the Openmp-commits mailing list