[PATCH] D90783: llvm.coro.id.async lowering: Parameterize how-to restore the current's continutation context and restart the pipeline after splitting

Arnold Schwaighofer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 4 12:05:11 PST 2020


aschwaighofer created this revision.
aschwaighofer added a reviewer: rjmccall.
Herald added subscribers: llvm-commits, lxfind, modocache, hiraditya.
Herald added a project: LLVM.
aschwaighofer requested review of this revision.
Herald added a subscriber: jdoerfert.

The `llvm.coro.suspend.async` intrinsic takes a function pointer as its
argument that describes how-to restore the current continuation's
context from the context argument of the continuation function. Before
we assumed that the current context can be restored by loading from the
context arguments first pointer field (`first_arg->caller_context`).

This allows for defining suspension points that reuse the current
context for example.

Also:

llvm.coro.id.async lowering: Add llvm.coro.preprare.async intrinsic

Blocks inlining until after the async coroutine was split.

rdar://70097093


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D90783

Files:
  llvm/docs/Coroutines.rst
  llvm/include/llvm/IR/Intrinsics.td
  llvm/lib/Transforms/Coroutines/CoroElide.cpp
  llvm/lib/Transforms/Coroutines/CoroInstr.h
  llvm/lib/Transforms/Coroutines/CoroInternal.h
  llvm/lib/Transforms/Coroutines/CoroSplit.cpp
  llvm/lib/Transforms/Coroutines/Coroutines.cpp
  llvm/test/Transforms/Coroutines/coro-async.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90783.302929.patch
Type: text/x-patch
Size: 25690 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201104/4aa50be4/attachment.bin>


More information about the llvm-commits mailing list