• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Transforms/Coroutines/

Lines Matching refs:coro

22 #define DEBUG_TYPE "coro-elide"
25 // Created on demand if the coro-elide pass has work to do.
26 struct Lowerer : coro::LowererBase {
47 // Go through the list of coro.subfn.addr intrinsics and replace them with the
55 // being replaced. Note: All coro.subfn.addr intrinsics return the same type,
124 // llvm.coro.alloc and llvm.coro.free instructions.
131 // Replacing llvm.coro.alloc with false will suppress dynamic
134 // id = coro.id(...)
135 // mem = coro.alloc(id) ? malloc(coro.size()) : 0;
136 // coro.begin(id, mem)
176 // Consider basicblock of coro.destroy as visited one, so that we
177 // skip the path pass through coro.destroy.
193 // Although the default dest of coro.suspend switches is suspend pointer
205 // We have exhausted all possible paths and are certain that coro.begin can
216 // Check that for every coro.begin there is at least one coro.destroy directly
217 // referencing the SSA value of that coro.begin along each
219 // If the value escaped, then coro.destroy would have been referencing a
224 // Consider the final coro.suspend as the real terminator when the current
233 // Filter out the coro.destroy that lie along exceptional paths.
245 // Whether there is any paths from coro.begin to Terminators which not pass
246 // through any of the coro.destroys.
252 // If size of the set is the same as total number of coro.begin, that means we
253 // found a coro.free or coro.destroy referencing each coro.begin, so we can
269 // %0 = call i8 @llvm.coro.suspend(...)
290 // Collect all coro.begin and coro.allocs associated with this coro.id.
300 // Collect all coro.subfn.addrs associated with coro.begin.
301 // Note, we only devirtualize the calls if their coro.subfn.addr refers to
302 // coro.begin directly. If we run into cases where this check is too
315 llvm_unreachable("unexpected coro.subfn.addr constant");
319 // PostSplit coro.id refers to an array of subfunctions in its Info
322 assert(Resumers && "PostSplit coro.id Info argument must refer to an array"
342 coro::replaceCoroFree(CoroId, /*Elide=*/true);
348 // See if there are any coro.subfn.addr instructions referring to coro.devirt
362 assert(DevirtFn && "coro.devirt.fn not found");
369 return coro::declaresIntrinsics(M, {"llvm.coro.id"});
380 // If we did not find any coro.id, there is nothing to do.
420 // If we did not find any coro.id, there is nothing to do.
442 CoroElideLegacy, "coro-elide",
447 CoroElideLegacy, "coro-elide",