jyu2 added inline comments.

================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:5825
+          for (Expr *E : RC->varlists())
+            if (!dyn_cast<DeclRefExpr>(E))
+              ImplicitExprs.emplace_back(E);
----------------
ABataev wrote:
> jyu2 wrote:
> > ABataev wrote:
> > > `isa`. Also, what if this is a `MemberExpr`?
> > Yes isa.   Changed.  Thanks.
> > 
> > For reduction MemeberExpr is not allowed, it is only allowed variable name, 
> > array element or array section.
> I would also do this check if it is a not template parsing/analysis mode + 
> also would do this for `E->IgnoreParensImpCasts()`
The code already under non DependentContext().  I add IgnoreParenImpCasts().  
Thanks.

 if (AStmt && !CurContext->isDependentContext() && Kind != OMPD_atomic &&
      Kind != OMPD_critical && Kind != OMPD_section && Kind != OMPD_master &&
      Kind != OMPD_masked && !isOpenMPLoopTransformationDirective(Kind))


================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:19481-19482
     if (VD && DSAS->isThreadPrivate(VD)) {
+      if (NoDiagnose)
+        continue;
       DSAStackTy::DSAVarData DVar = DSAS->getTopDSA(VD, /*FromParent=*/false);
----------------
ABataev wrote:
> jyu2 wrote:
> > ABataev wrote:
> > > Hmm, should not we still diagnose this case?
> > The rule is skip the error as well as skip adding implicit map clause.  So 
> > that we don't get regression for old code.
> I think we already have the check for it for the reduction clause, so I think 
> we can skip this check here.
In general yes.  But not for some special case, please look 
clang/test/OpenMP/reduction_implicit_map.cpp, in the first test,  if I remove 
this change the error will be emit.  In CUDA device code, the local variable is 
 implicitly threat as thridprivate.


#if defined(CUDA)
// expected-no-diagnostics

int foo(int n) {
  double *e;
  //no error and no implicit map generated for e[:1]
  #pragma omp target parallel reduction(+: e[:1])
    *e=10;
  ;
  return 0;
}


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D108132

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

Reply via email to