HomeSort by: relevance | last modified time | path
    Searched refs:coro (Results 1 - 7 of 7) sorted by relevancy

  /src/external/apache2/llvm/dist/llvm/lib/Transforms/Coroutines/
CoroInternal.h 29 // 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
44 #define CORO_DEVIRT_TRIGGER_FN "coro.devirt.trigger"
46 namespace coro { namespace in namespace:llvm
120 coro::ABI ABI;
170 assert(ABI == coro::ABI::Switch);
175 assert(ABI == coro::ABI::Retcon ||
176 ABI == coro::ABI::RetconOnce);
181 assert(ABI == coro::ABI::Async);
186 assert(ABI == coro::ABI::Switch)
    [all...]
CoroSplit.cpp 75 #define DEBUG_TYPE "coro-split"
103 coro::Shape &Shape;
115 CoroCloner(Function &OrigF, const Twine &Suffix, coro::Shape &Shape,
119 assert(Shape.ABI == coro::ABI::Switch);
123 CoroCloner(Function &OrigF, const Twine &Suffix, coro::Shape &Shape,
126 FKind(Shape.ABI == coro::ABI::Async ? Kind::Async : Kind::Continuation),
128 assert(Shape.ABI == coro::ABI::Retcon ||
129 Shape.ABI == coro::ABI::RetconOnce || Shape.ABI == coro::ABI::Async);
168 const coro::Shape &Shape, Value *FramePtr
    [all...]
Coroutines.cpp 94 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.async.context.alloc",
128 "llvm.coro.async.context.dealloc",
129 "llvm.coro.async.size.replace",
130 "llvm.coro.async.store_resume",
131 "llvm.coro.begin"
    [all...]
CoroFrame.cpp 41 // The "coro-suspend-crossing" flag is very noisy. There is another debug type,
42 // "coro-frame", which results in leaner debug spew.
43 #define DEBUG_TYPE "coro-suspend-crossing"
88 // End: a boolean indicating whether block 'i' contains a coro.end intrinsic.
114 SuspendCrossingInfo(Function &F, coro::Shape &Shape);
137 // As a special case, treat uses by an llvm.coro.suspend.retcon or an
138 // llvm.coro.suspend.async as if they were uses in the suspend's single
142 assert(UseBB && "should have split coro.suspend into its own block");
155 // As a special case, treat values produced by an llvm.coro.suspend.*
160 assert(DefBB && "should have split coro.suspend into its own block")
    [all...]
CoroCleanup.cpp 19 #define DEBUG_TYPE "coro-cleanup"
23 struct Lowerer : coro::LowererBase {
115 return coro::declaresIntrinsics(
116 M, {"llvm.coro.alloc", "llvm.coro.begin", "llvm.coro.subfn.addr",
117 "llvm.coro.free", "llvm.coro.id", "llvm.coro.id.retcon",
118 "llvm.coro.id.retcon.once", "llvm.coro.async.size.replace"})
    [all...]
CoroEarly.cpp 18 #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::Shape::SwitchFieldIndex::Resume == 0
    [all...]
CoroElide.cpp 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,
123 // llvm.coro.alloc and llvm.coro.free instructions.
130 // Replacing llvm.coro.alloc with false will suppress dynamic
133 // id = coro.id(...)
134 // mem = coro.alloc(id) ? malloc(coro.size()) : 0
    [all...]

Completed in 74 milliseconds