Searched refs:coro (Results 1 - 7 of 7) sorted by relevance

/freebsd-13-stable/contrib/llvm-project/llvm/lib/Transforms/Coroutines/
H A DCoroInternal.h29 // CoroEarly pass marks every function that has coro.begin with a string
33 // call to an empty function "coro.devirt.trigger" which is devirtualized by
42 #define CORO_DEVIRT_TRIGGER_FN "coro.devirt.trigger"
44 namespace coro { namespace in namespace:llvm
110 coro::ABI ABI;
141 assert(ABI == coro::ABI::Switch);
146 assert(ABI == coro::ABI::Retcon ||
147 ABI == coro::ABI::RetconOnce);
152 assert(ABI == coro::ABI::Switch);
157 assert(ABI == coro
[all...]
H A DCoroSplit.cpp74 #define DEBUG_TYPE "coro-split"
98 coro::Shape &Shape;
110 CoroCloner(Function &OrigF, const Twine &Suffix, coro::Shape &Shape,
114 assert(Shape.ABI == coro::ABI::Switch);
118 CoroCloner(Function &OrigF, const Twine &Suffix, coro::Shape &Shape,
123 assert(Shape.ABI == coro::ABI::Retcon ||
124 Shape.ABI == coro::ABI::RetconOnce);
163 const coro::Shape &Shape, Value *FramePtr,
165 assert(Shape.ABI == coro::ABI::Retcon ||
166 Shape.ABI == coro
[all...]
H A DCoroutines.cpp94 coro::LowererBase::LowererBase(Module &M)
102 // llvm.coro.subfn.addr. It generates the following sequence:
104 // call i8* @llvm.coro.subfn.addr(i8* %Arg, i8 %index)
107 Value *coro::LowererBase::makeSubFnCall(Value *Arg, int Index,
126 "llvm.coro.alloc",
127 "llvm.coro.begin",
128 "llvm.coro.destroy",
129 "llvm.coro.done",
130 "llvm.coro.end",
131 "llvm.coro
[all...]
H A DCoroFrame.cpp40 // The "coro-suspend-crossing" flag is very noisy. There is another debug type,
41 // "coro-frame", which results in leaner debug spew.
42 #define DEBUG_TYPE "coro-suspend-crossing"
80 // End: a boolean indicating whether block 'i' contains a coro.end intrinsic.
106 SuspendCrossingInfo(Function &F, coro::Shape &Shape);
129 // As a special case, treat uses by an llvm.coro.suspend.retcon
134 assert(UseBB && "should have split coro.suspend into its own block");
147 // As a special case, treat values produced by an llvm.coro.suspend.*
152 assert(DefBB && "should have split coro.suspend into its own block");
181 SuspendCrossingInfo::SuspendCrossingInfo(Function &F, coro
[all...]
H A DCoroCleanup.cpp19 #define DEBUG_TYPE "coro-cleanup"
23 struct Lowerer : coro::LowererBase {
97 return coro::declaresIntrinsics(M, {"llvm.coro.alloc", "llvm.coro.begin",
98 "llvm.coro.subfn.addr", "llvm.coro.free",
99 "llvm.coro.id", "llvm.coro.id.retcon",
100 "llvm.coro
[all...]
H A DCoroEarly.cpp18 #define DEBUG_TYPE "coro-early"
21 // Created on demand if the coro-early pass has work to do.
22 class Lowerer : public coro::LowererBase {
42 // Replace a direct call to coro.resume or coro.destroy with an indirect call to
43 // an address returned by coro.subfn.addr intrinsic. This is done so that
45 // to coro.subfn.addr with an appropriate function address.
54 // the coroutine frame. i8* coro.promise(i8*, i1 from) intrinsic adds an offset
83 // The llvm.coro.done intrinsic is used to check whether a coroutine is
89 static_assert(coro
[all...]
H A DCoroElide.cpp22 #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
[all...]

Completed in 114 milliseconds