mizvekov added a comment.

In D105756#2988022 <https://reviews.llvm.org/D105756#2988022>, @NoQ wrote:

> I don't think this is intended. @mizvekov, do you think you can add more hard 
> checks to make sure it's constrained to C++? (Or maybe there's another, more 
> precise solution?)

Hello! Thanks for reporting this.

The double implicit lvalue-to-rvalue cast is an unfortunate consequence of some 
technical debt around the different ways we handle the implicit return type on 
blocks.
But I don't think it's incorrect as in it actually producing program with 
different semantics.
Does it actually affect you in your use cases besides the AST? Is this 
important to you for external semantic analysis reasons or something?

Removing the xvalue cast on non CplusPlus is simple, the bigger issue here is 
why we are doing this, specially as it will affect what test cases we create 
for this change.
If this is an issue, is it serious enough to consider getting the fix into 
13.0.0 at this stage?

The nrvo is a separate thing, and again I thin it's harmless, or at least a 
little beneficial. With it, you are avoiding an extra copy when returning these 
values, and it comes straight from the frontend, independent of any 
optimization passes later.
Why is this undesirable?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D105756

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

Reply via email to