================
@@ -5232,6 +5232,26 @@ void CodeGenFunction::EmitWritebacks(const CallArgList
&args) {
emitWriteback(*this, I);
}
+/// Whether emitting this glvalue neither has side effects nor reads mutable
+/// state, so deferring its byte read to the call boundary is equivalent to
+/// initializing the argument last, a sequencing C++17 [expr.call]/8 allows.
----------------
efriedma-quic wrote:
I think this might be applying the [expr.call] rule too widely. For example:
```
struct A {
int x, y[10];
};
A operator<<(A a, A b);
A f(A a, A b) { [[clang::musttail]] return a << A{a.x = 10}; }
```
The evaluation of the LHS of the shift operator is sequenced before the
evaluation of the RHS.
https://github.com/llvm/llvm-project/pull/199351
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits