[PATCH] D103395: PR45879: Keep evaluated expression in LValue object

Serge Pavlov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 12 05:41:59 PST 2021

sepavloff added a comment.

In D103395#3105677 <https://reviews.llvm.org/D103395#3105677>, @tambre wrote:

> In D103395#3105668 <https://reviews.llvm.org/D103395#3105668>, @sepavloff wrote:
>> Strange, I see that it cannot be compiled neither by gcc nor by clang: https://godbolt.org/z/1dY9Gs6zM. Do I miss something?
> Sorry, should've been more specific. Try in C++20 mode: https://godbolt.org/z/4v8b3nsET
> I think the difference might be due to P1331R2 <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1331r2.pdf>, but I'm not sure.

Thank you for this helpful test. I used a bit more accurate use of LHS expression and the issue seems resolved.

The new variant uses slightly more careful LHS expression tracking. Previously the expression was assigned only once. Now if the expression for LValue can be determined, it is updated. Only if the LValue starts to track non-expression entities, LHS expression is frozen to the last seen value. It does not affect the evaluation of active union member though.

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list