This is an archive of the discontinued LLVM Phabricator instance.

[coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes

Authored by GorNishanov on Jul 27 2016, 12:37 AM.



This is the third patch in the coroutine series. It adds boilerplate code for all coroutine passes that do absolutely nothing and adds a small test to verify that passes execute in expected order or not at all if not enabled.

Documentation and overview is here:

Upstreaming sequence (rough plan)
1.Add documentation. (
2.Add coroutine intrinsics. (
3.Add empty coroutine passes. <= we are here
4.Add coroutine devirtualization + tests.
5.Add CGSCC restart trigger + tests.
6.Add coroutine heap elision + tests.
7.Add the rest of the logic (split into more patches)

Diff Detail

Event Timeline

GorNishanov retitled this revision from to [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes.
GorNishanov updated this object.
GorNishanov added reviewers: majnemer, hfinkel.
GorNishanov added a subscriber: llvm-commits.
chandlerc edited edge metadata.Jul 27 2016, 6:03 PM

(tiny comment below just about factoring of patches)


FWIW, I think this is independent of the coroutines stuff, and I'd suggest splitting it out and sending it separately.

(And FWIW, I'm very much in favor of the general idea.)

GorNishanov edited edge metadata.

"Adding EP_CGSCCOptimizerLate extension point" extracted into its own patch:

majnemer accepted this revision.Jul 28 2016, 1:16 PM
majnemer edited edge metadata.


This revision is now accepted and ready to land.Jul 28 2016, 1:16 PM
This revision was automatically updated to reflect the committed changes.