[PATCH] D94973: [clang][OpenMP] Use OpenMPIRBuilder for workshare loops.

Michael Kruse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 3 11:19:14 PST 2021


Meinersbur added inline comments.


================
Comment at: clang/lib/AST/Stmt.cpp:1275
-                                                ->isScalarType())) &&
-        "captures by copy are expected to have a scalar type!");
     break;
----------------
jdoerfert wrote:
> Why does this have to go? Is that avoidable?
This is used to capture the loop counter (e.g. `__begin` for a CXXForRangeStmt) in front of the loop before it is modified. This can be an iterator whose copy constructor needs to be called and this assertion did restrict it to scalar types. It is used for the LoopVarFunc closure which is of the form `[__begin,&](LogicalIterationNumberTy indvar) { return *(__begin + indvar); }`
The alternative would be to introduce more implicit children of an OMPCanonicalLoop that declares a variable and assigns the initial loop counter value. I find the byval-capture much more elegant.

The code implementing the byval-capture is shared with the implementation of lambdas, so the only reason seems to be that there was no use case when introduced in D14940.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D94973



More information about the llvm-commits mailing list