[PATCH] D72811: [WIP][OPENMP5.0] allow lvalue for motion clause

Alexey Bataev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 31 14:07:41 PST 2020


ABataev added inline comments.


================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:15554
+        LocatorChecker Checker;
+        if (Checker.Visit(OrigExpr)) {
+          llvm::copy(Checker.getComponents(),
----------------
cchen wrote:
> ABataev wrote:
> > General question about several cases. How we're going to support them?
> > 1. (a ? b : c). 
> > 2. __builtin_choose_expr(a, b, c).
> > 3. a = b.
> > 4. a?:b
> > 5. __builtin_convertvector(x, ty)
> > 6. (int&)a
> > 7. v.xy, where v is an extended vector
> > 8. a.b, where b is a bitfield
> > 9. __builtin_bit_cast(v, ty)
> > 10. const_cast<ty &>(a)
> > 11. dynamic_cast<ty &>(a)
> > 12. reinterpret_cast
> > 13. static_cast
> > 14. typeid() (also is an lvalue).
> > 15. __uuidof(*comPtr)
> > 16. lambda calls
> > 17. User defined literals
> > 
> I think we could first evaluate the lvalue, and then pass the result of `&lvalue` to device? 
What do you mean when you say `evaluate lvalue`? In veneral, it can be evaluated at the runtime. Do you propose to implement dyic translation? It will definetely slow down the execution on the device.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D72811





More information about the cfe-commits mailing list