tra added a comment.

In D78655#2107190 <https://reviews.llvm.org/D78655#2107190>, @yaxunl wrote:

> It seems we can only promote non-capturing lambdas, no matter whether it has 
> enclosing function or not.


I'd be OK with promoting only non-capturing lambdas until we figure out a 
consistent way to deal with the capturing ones.
Or we can promote captured ones, too and rely on postponed diags to guard 
against producing wrong-side code. We may need to improve that a bit anyways. 
E.g. what should we do if I write something like this:

  __device__ int dv;
  int hv;
  
  __host__ __device__ int hd() {
    return [a = dv, b=hv](){ return a + b;}();
  }

https://godbolt.org/z/op_FE6 -- NVCC complains about not being able to access 
hv in a device function (which makes sense considering that it converts HD -> D 
after source splitting, but clang happily allows capturing both variables (but 
will likely fail during ptxas due to the fact that there will be no hv on 
device side).


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

https://reviews.llvm.org/D78655



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

Reply via email to