[PATCH] D71475: [WIP][OPENMP] Try to fix linear clause crash by emitting alloca for step

Johannes Doerfert via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 17 08:53:11 PST 2019


jdoerfert 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) ||
----------------
ABataev wrote:
> 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.
I'll just repeat the under-specified case you seem to have missed while reading my comment:

> What if the expression has a side-effect and the loop has 0 iterations.






Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D71475





More information about the cfe-commits mailing list