[PATCH] D22998: [coroutines] Part 4a: Coroutine Devirtualization: Lower coro.resume and coro.destroy.

Gor Nishanov via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 31 05:21:26 PDT 2016


GorNishanov created this revision.
GorNishanov added a reviewer: majnemer.
GorNishanov added a subscriber: llvm-commits.
GorNishanov set the repository for this revision to rL LLVM.
Herald added a subscriber: mehdi_amini.

This is the forth patch in the coroutine series. CoroEaly pass now lowers coro.resume 
and coro.destroy intrinsics by replacing them with an indirect call to an address
returned by coro.subfn.addr intrinsic. This is done so that CGPassManager recognizes
devirtualization when CoroElide replaces a call to coro.subfn.addr with an appropriate 
function address.

Documentation and overview is here: http://llvm.org/docs/Coroutines.html.

Upstreaming sequence (rough plan)
 1.Add documentation. (https://reviews.llvm.org/D22603)
 2.Add coroutine intrinsics. (https://reviews.llvm.org/D22659)
 3.Add empty coroutine passes. (https://reviews.llvm.org/D22847)
 4.Add coroutine devirtualization + tests.
    a) Lower coro.resume and coro.destroy <= we are here
    b) Handle invoke resumers
    c) Do devirtualization
 5.Add CGSCC restart trigger + tests.
 6.Add coroutine heap elision + tests.
 7.Add the rest of the logic (split into more patches)

Repository:
  rL LLVM

https://reviews.llvm.org/D22998

Files:
  lib/Transforms/Coroutines/CoroEarly.cpp
  lib/Transforms/Coroutines/CoroInstr.h
  lib/Transforms/Coroutines/CoroInternal.h
  lib/Transforms/Coroutines/Coroutines.cpp
  test/Transforms/Coroutines/coro-early.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D22998.66241.patch
Type: text/x-patch
Size: 8984 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160731/40d3127d/attachment.bin>


More information about the llvm-commits mailing list