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

Alexey Bataev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 27 14:16:17 PST 2020


ABataev added a comment.

In D72811#1843066 <https://reviews.llvm.org/D72811#1843066>, @cchen wrote:

> In D72811#1839561 <https://reviews.llvm.org/D72811#1839561>, @ABataev wrote:
>
> > In D72811#1839538 <https://reviews.llvm.org/D72811#1839538>, @cchen wrote:
> >
> > > In D72811#1837392 <https://reviews.llvm.org/D72811#1837392>, @jdoerfert wrote:
> > >
> > > > Thanks for working on this! While you are at it, `*this` is probably one of the most important ones to test and support.
> > >
> > >
> > > Can anyone tell me how to get `ValueDecl` from `CXXThisExpr`? I cannot find any method return decl in https://clang.llvm.org/doxygen/classclang_1_1CXXThisExpr.html#details.
> > >  Thanks!
> >
> >
> > CXXThisExpr is an expression without associated declaration.
>
>
> Then which kind of thing should I sent to `CurComponents` if we do not have associated declaration for CXXThisExpr? We can't just send nullptr, right?


Check how compiler handles mapping of `this[0:1]`, which is the same as `*this`.



================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:16007
+    if (!RE->IgnoreParenImpCasts()->isLValue() &&
+        (MLValue != clang::Expr::isModifiableLvalueResult::MLV_LValueCast)) {
       SemaRef.Diag(ELoc,
----------------
cchen wrote:
> ABataev wrote:
> > Why `MLV_LValueCast` must be allowed here?
> I'm doing this since `isLValue` return false for either C style casting CXX style casting and `MLV_LValueCast` can categorize these two  as `MLV_LValueCast`.
Are they the lvalues according to the standard? If not, no need for this analysis.


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