[clang][pr55896]:co_yield/co_await thread-safety
co_await and co_yield are represented by (classes derived from) CoroutineSuspendExpr. That has a number of child nodes, not all of which are used for code-generation. In particular the operand is represented multiple times, and, like the problem with co_return (55406) it must only be emitted in the CFG exactly once. The operand also appears inside OpaqueValueExprs, but that's ok. This adds a visitor for SuspendExprs to emit the required children in the correct order. Note that this CFG is pre-coro xform. We don't have initial or final suspend points. Reviewed By: bruno Differential Revision: https://reviews.llvm.org/D127236
Loading
Please sign in to comment