ABataev added inline comments.

================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:1128
+           (A == OMPC_firstprivate && (Data.Attributes == OMPC_lastprivate ||
+                                       Data.Attributes == OMPC_linear)) ||
            (A == OMPC_lastprivate && Data.Attributes == OMPC_firstprivate) ||
----------------
jdoerfert wrote:
> ABataev wrote:
> > cchen wrote:
> > > ABataev wrote:
> > > > What is this change for?
> > > Since now the variable in step expression has been set as implicit 
> > > firstprivate.
> > No need to do this, the whole expression must be evaluated before entering 
> > the parallel region.
> The standard is not clear on this, e.g., what if the expression has a 
> side-effect and the loop has 0 iterations. However, evaluating it once in the 
> beginning seems fine to me, assuming we do not evaluate it later again.
The standard says: `The linear-step expression must be invariant during the 
execution of the region that corresponds to the construct.` So, it is ok to 
evaluate it at the entrance to the region. The only thing that (maybe) required 
is to check that the expression is really invariant in the analysis phase.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D71475



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

Reply via email to