================ @@ -827,6 +829,9 @@ bool ByteCodeExprGen<Emitter>::VisitArrayInitLoopExpr( template <class Emitter> bool ByteCodeExprGen<Emitter>::VisitOpaqueValueExpr(const OpaqueValueExpr *E) { + if (OpaqueExprs.contains(E)) + return this->emitGetLocal(*classify(E), OpaqueExprs[E], E); ---------------- isuckatcs wrote:
Good question, I found this in the test files: ``` `-OpaqueValueExpr {{.*}} 'result_t':'awaitable_frame::result_t' lvalue `-MaterializeTemporaryExpr {{.*}} 'result_t':'awaitable_frame::result_t' lvalue `-... ``` ``` struct awaitable_frame { ... struct result_t { ~result_t(); bool await_ready() const noexcept; void await_suspend(std::coroutine_handle<void>) noexcept; void await_resume() const noexcept; }; ... }; ``` Based on this it seems like it can be a composite type, so I'll make sure this case is handled too. https://github.com/llvm/llvm-project/pull/68039 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits