[clang] [llvm] [coroutine] Implement llvm.coro.await.suspend intrinsic (PR #79712)

Chuanqi Xu via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 17 19:53:15 PST 2024


================
@@ -5097,6 +5099,22 @@ class CoroutineSuspendExpr : public Expr {
     return static_cast<Expr *>(SubExprs[SubExpr::Operand]);
   }
 
+  SuspendReturnType getSuspendReturnType() const {
+    auto *SuspendExpr = getSuspendExpr();
+    assert(SuspendExpr);
+
+    auto SuspendType = SuspendExpr->getType();
+
+    if (SuspendType->isVoidType())
+      return SuspendReturnType::SuspendVoid;
+    if (SuspendType->isBooleanType())
+      return SuspendReturnType::SuspendBool;
+    if (SuspendType->isVoidPointerType())
+      return SuspendReturnType::SuspendHandle;
+
+    llvm_unreachable("Unexpected await_suspend expression return type");
----------------
ChuanqiXu9 wrote:

```suggestion
    return SuspendReturnType::SuspendHandle;
```

the `void pointer type` part looks odd.

https://github.com/llvm/llvm-project/pull/79712


More information about the llvm-commits mailing list