[PATCH] D26794: [OpenCL] Blocks are allowed to capture arrays in OpenCL 2.0 and higher.

Anastasia Stulova via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 6 10:42:50 PDT 2017


Anastasia added a comment.

In https://reviews.llvm.org/D26794#598784, @Anastasia wrote:

> I have created a bug to Khronos regarding this, but unfortunately I don't see it being progressed yet.
>  https://cvs.khronos.org/bugzilla/show_bug.cgi?id=15659
>
> The problem here is that I am not sure we should deviate from the ObjC implementation because OpenCL blocks are largely taken from Clang ObjC implementation. My issue is in particular that it's not clear what the capture of array would mean and spec should either state it precisely or disallow using this feature at all to avoid costly operations. In ObjC community itself there were multiple interpretation of this in the past: http://lists.llvm.org/pipermail/cfe-dev/2016-March/047849.html
>
> I am not sure we should go ahead with any implementation without further clarifications. I will ping the Khronos bug to see if the documentation can be improved.
>
> I think this issue has been seen in the OpenCL conformance tests, but was fixed later on?


Sure. Do you have an access to revision with an update? I will ask to publish it online too.



================
Comment at: lib/Sema/SemaExpr.cpp:13481
+  // Only if it's not OpenCL 2.0.
+  if (!(S.getLangOpts().OpenCL && S.getLangOpts().OpenCLVersion >= 200)) {
+    if (CaptureType->isArrayType()) {
----------------
Can we do this consistently for all OpenCL (Not just v2.0)!


https://reviews.llvm.org/D26794





More information about the cfe-commits mailing list