jyu2 added inline comments.

================
Comment at: clang/lib/CodeGen/CGOpenMPRuntime.cpp:7489-7493
+      if (UO && UO->getOpcode() == UO_Deref)
+        if (isa<OMPArraySectionExpr>(Last->getAssociatedExpression()) ||
+            isa<OMPArrayShapingExpr>(Last->getAssociatedExpression()) ||
+            isa<ArraySubscriptExpr>(Last->getAssociatedExpression()))
+          IsVarDerefAssoWithArray = true;
----------------
ABataev wrote:
> jyu2 wrote:
> > ABataev wrote:
> > > jyu2 wrote:
> > > > ABataev wrote:
> > > > > What if we have something like:
> > > > > ```
> > > > > typedef int (T)[3];
> > > > > 
> > > > > T** p;
> > > > > map(**p)
> > > > > ```
> > > > > ? Shall it work? I.e. mapping of the whole array by dereferening the 
> > > > > pointer to the array.
> > > > No, it is not work currently.  What about *(*(p+a)+b)...
> > > My question - shall it work? Mapping  (**a)[:3] should result in the same 
> > > in the same code for **a if a is
> > > ```
> > > typedef int(T)[3];
> > > T** a;
> > > ```
> > Oh, that should work.  I add additional test for that.
> > 
> > ```
> > typedef int(T)[3];
> > void bar()
> > {
> > 
> > T** a;
> > int b[2][3];
> > int (*p)[3] = b;
> > a =  &p;
> > printf("%p %p p %p\n", &a, b, *p);
> > for (int i = 0; i< 3; i++) {
> >   (**a)[1] = i;
> > }
> > #pragma omp target map((**a)[:3])
> > {
> >  (**a)[1]=5;
> >   // CHECK: 5
> >   printf("a = %d\n", (**a)[1]);
> > }
> > }
> > ```
> > 
> No, I meant different thing:
> ```
> T **a;
> .. map (**a)
> ```
Yes, that is not working currently.  That is something need to be fixed include 
*(*(a+i)+j) .... 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D145093

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to