Searched refs:coro (Results 1 - 7 of 7) sorted by relevance
/freebsd-13-stable/contrib/llvm-project/llvm/lib/Transforms/Coroutines/ |
H A D | 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 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 D | CoroSplit.cpp | 74 #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 D | 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.begin", 128 "llvm.coro.destroy", 129 "llvm.coro.done", 130 "llvm.coro.end", 131 "llvm.coro [all...] |
H A D | CoroFrame.cpp | 40 // 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 D | CoroCleanup.cpp | 19 #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 D | 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 [all...] |
H A D | 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, 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