aaron.ballman added inline comments.

================
Comment at: clang/lib/AST/ExprConstant.cpp:8274-8279
     // Only if a local variable was declared in the function currently being
     // evaluated, do we expect to be able to find its value in the current
     // frame. (Otherwise it was likely declared in an enclosing context and
     // could either have a valid evaluatable value (for e.g. a constexpr
     // variable) or be ill-formed (and trigger an appropriate evaluation
     // diagnostic)).
----------------
jdoerfert wrote:
> aaron.ballman wrote:
> > This comment no longer matches the code. It also suggests that the way to 
> > address your issue is to capture the variable into the current frame -- did 
> > you explore that approach?
> The problem is that OpenMP introduces artificial capture statements. I am not 
> sure if/how those can be "merged" into the parent context and in general that 
> is not allowed (e.g., as we allow clauses on SIMD, like private). I feel the 
> comment needs updating and I'll try that. 
Is there a way to limit the change to only OpenMP captured variables so that 
we're not changing the semantics for all language modes?


================
Comment at: clang/lib/Sema/SemaDeclCXX.cpp:2175-2178
+        SemaRef.Diag(
+            S->getBeginLoc(),
+            diag::err_constexpr_body_invalid_omp_simd_stmt_with_clauses)
+            << isa<CXXConstructorDecl>(Dcl) << Dcl->isConsteval();
----------------
jdoerfert wrote:
> aaron.ballman wrote:
> > C++20 now has constexpr destructors, but there are also other kinds of 
> > special member functions too. It seems like the constraint really is 
> > "constant evaluation of a function with SIMD clauses is invalid" and so we 
> > might want to go with a more generic diagnostic instead of trying to 
> > distinguish between kinds of functions.
> I copied this from below (see comment). I would assume the two have to stay 
> in sync. All the differentiation of constructor does it to specify where it 
> was found, no? So:
> SIMD with clauses is not supported, found in XYZ.
Yeah, they should stay in sync; I don't insist on a change to the diagnostic as 
part of this review unless you feel like it.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135199

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

Reply via email to