[PATCH] D108493: [HIP] Warn capture this pointer in device lambda

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 8 09:30:28 PDT 2021


tra added inline comments.


================
Comment at: clang/lib/Sema/SemaCUDA.cpp:881-882
+  } else if (Capture.isThisCapture() && !LangOpts.HIP) {
+    // Capture of this pointer is allowed for HIP since this pointer may be
+    // pointing to managed memory which is accessible on both device and
+    // host sides.
----------------
yaxunl wrote:
> tra wrote:
> > I assume there's no easy way to tell if it's a managed pointer or not.
> > Capturing a non-managed pointer would still be bad.
> > Should we make it a warning instead?
> > 
> > 
> warning makes sense. will do.
> 
> Also this should apply to CUDA too. Although clang does not support `__managed__` keyword for CUDA, `this` pointer may be allocated in managed memory through host API's.
> Also this should apply to CUDA too. 

I'm not sure I understand what you mean.

Do you suggest that the warning should be issued for both HIP and CUDA? If so, the diag already applies to CUDA.

Or that we should allow capturing wrong-side `this` w/o diagnostics for both CUDA and HIP?

I'm fine with the former. But I do not think we should silently allow capturing wrong-side `this` for CUDA, because it will be an error most of the time.


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

https://reviews.llvm.org/D108493



More information about the cfe-commits mailing list