This change adds async_funcs_only option to AsyncToAsyncRuntimePass. The goal is to convert async functions to regular functions in early stages of compilation pipeline.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Instead of adding an option to a pass, can you add a populate... function (similar to https://github.com/llvm/llvm-project/blob/2e999b7dd1934a44d38c3a753460f1e5a217e9a5/mlir/include/mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h#L22-L25) that will add all patterns to the rewriter.
Users that need to lower just the async.func can write a custom pass with their own ConversionTarget that will only mark async.func as illegal. That's a more idiomatic MLIR way to parametrize passes.
Also having populateSCFToControlFlowConversionPatterns here is a mistake. If some users require mixing lowering of async and lowering to CFG, again they should use populate... and a custom pass. Let's try to remove it from this pass (in future PRs), I don't think that any tests in MLIR itself depend on this behavior.