Legacy coroutines removed, no C API anymore for JIT?


The Mesa llvmpipe CPU graphics drivers, used the LLVM coroutines to implement GPU barriers, I’ve noticed in llvm15 these have gone away as a C API. Do I now have to use C++ and rewrite a lot of code to use coroutines for JIT now?


The new pass manager has a C API. See llvm/include/llvm-c/Transforms/PassBuilder.h.

LLVMRunPasses(..., "default<O0>", ..., ...) should run all of the coroutine lowering passes. If you’re already going to run optimizations, then any of the default optimization pipelines (e.g. default<O2>) will also run the coroutine lowering passes.