| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Coroutines/ |
| H A D | CoroSplit.cpp | 87 coro::Shape &Shape) { in lowerAwaitSuspend() 131 coro::LowererBase LB(*Wrapper->getParent()); in lowerAwaitSuspend() 152 static void lowerAwaitSuspends(Function &F, coro::Shape &Shape) { in lowerAwaitSuspends() 159 const coro::Shape &Shape, Value *FramePtr, in maybeFreeRetconStorage() 161 assert(Shape.ABI == coro::ABI::Retcon || Shape.ABI == coro::ABI::RetconOnce); in maybeFreeRetconStorage() 215 const coro::Shape &Shape, Value *FramePtr, in replaceFallthroughCoroEnd() 223 case coro::ABI::Switch: in replaceFallthroughCoroEnd() 234 case coro::ABI::Async: { in replaceFallthroughCoroEnd() 243 case coro::ABI::RetconOnce: { in replaceFallthroughCoroEnd() 280 case coro::ABI::Retcon: { in replaceFallthroughCoroEnd() [all …]
|
| H A D | Coroutines.cpp | 40 coro::LowererBase::LowererBase(Module &M) in LowererBase() 52 CallInst *coro::LowererBase::makeSubFnCall(Value *Arg, int Index, in makeSubFnCall() 98 bool coro::isSuspendBlock(BasicBlock *BB) { in isSuspendBlock() 102 bool coro::declaresAnyIntrinsic(const Module &M) { in declaresAnyIntrinsic() 107 bool coro::declaresIntrinsics(const Module &M, ArrayRef<Intrinsic::ID> List) { in declaresIntrinsics() 122 void coro::replaceCoroFree(CoroIdInst *CoroId, bool Elide) { in replaceCoroFree() 142 void coro::suppressCoroAllocs(CoroIdInst *CoroId) { in suppressCoroAllocs() 151 coro::suppressCoroAllocs(CoroId->getContext(), CoroAllocs); in suppressCoroAllocs() 160 void coro::suppressCoroAllocs(LLVMContext &Context, in suppressCoroAllocs() 181 void coro::Shape::analyze(Function &F, in analyze() [all …]
|
| H A D | CoroFrame.cpp | 53 coro::SpillInfo &Spills; 56 SmallVectorImpl<coro::AllocaInfo> &Allocas; 58 FrameDataInfo(coro::SpillInfo &Spills, in FrameDataInfo() 59 SmallVectorImpl<coro::AllocaInfo> &Allocas) in FrameDataInfo() 139 static void dumpSpills(StringRef Title, const coro::SpillInfo &Spills) { in dumpSpills() 149 static void dumpAllocas(const SmallVectorImpl<coro::AllocaInfo> &Allocas) { in dumpAllocas() 236 coro::Shape &Shape, bool OptimizeFrame); 338 coro::Shape &Shape, in addFieldForAllocas() 398 auto GetAllocaSize = [&](const coro::AllocaInfo &A) { in addFieldForAllocas() 688 static void buildFrameDebugInfo(Function &F, coro::Shape &Shape, in buildFrameDebugInfo() [all …]
|
| H A D | CoroCloner.h | 24 namespace coro { 47 coro::Shape &Shape; 61 BaseCloner(Function &OrigF, const Twine &Suffix, coro::Shape &Shape, in BaseCloner() 76 BaseCloner(Function &OrigF, const Twine &Suffix, coro::Shape &Shape, in BaseCloner() 85 coro::Shape &Shape, Function *NewF, in createClone() 131 SwitchCloner(Function &OrigF, const Twine &Suffix, coro::Shape &Shape, in SwitchCloner() 140 coro::Shape &Shape, CloneKind FKind, in createClone()
|
| H A D | SpillUtils.cpp | 21 namespace coro { namespace 44 if (coro::isSuspendBlock(From)) in isSuspendReachableFrom() 74 lowerNonLocalAlloca(CoroAllocaAllocInst *AI, const coro::Shape &Shape, in lowerNonLocalAlloca() 153 const coro::Shape &CoroShape, in AllocaUseVisitor() 312 const coro::Shape &CoroShape; 416 static void collectFrameAlloca(AllocaInst *AI, const coro::Shape &Shape, in collectFrameAlloca() 437 (Shape.ABI != coro::ABI::Async && Shape.ABI != coro::ABI::Retcon && in collectFrameAlloca() 438 Shape.ABI != coro::ABI::RetconOnce); in collectFrameAlloca() 464 const coro::Shape &Shape) { in collectSpillsAndAllocasFromInsts() 539 coro::SpillInfo &Spills, in sinkSpillUsesAfterCoroBegin() [all …]
|
| H A D | MaterializationUtils.cpp | 24 using namespace coro; 236 bool llvm::coro::defaultMaterializable(Instruction &V) { in defaultMaterializable() 241 bool llvm::coro::isTriviallyMaterializable(Instruction &V) { in isTriviallyMaterializable() 257 void coro::doRematerializations( in doRematerializations() 263 coro::SpillInfo Spills; in doRematerializations()
|
| H A D | CoroInternal.h | 23 namespace coro { 62 void normalizeCoroutine(Function &F, coro::Shape &Shape,
|
| H A D | CoroCleanup.cpp | 24 struct Lowerer : coro::LowererBase { 112 return coro::declaresIntrinsics( in declaresCoroCleanupIntrinsics()
|
| H A D | CoroEarly.cpp | 24 class Lowerer : public coro::LowererBase { 90 static_assert(coro::Shape::SwitchFieldIndex::Resume == 0, in lowerCoroDone() 283 return coro::declaresIntrinsics( in declaresCoroEarlyIntrinsics()
|
| H A D | CoroConditionalWrapper.cpp | 20 if (!coro::declaresAnyIntrinsic(M)) in run()
|
| H A D | CoroElide.cpp | 413 coro::replaceCoroFree(CoroId, /*Elide=*/true); in attemptElide() 453 if (!coro::declaresIntrinsics(M, Intrinsic::coro_id)) in run()
|
| /freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Coroutines/ |
| H A D | CoroShape.h | 24 namespace coro { 112 coro::ABI ABI; 159 assert(ABI == coro::ABI::Switch); in getSwitchCoroId() 164 assert(ABI == coro::ABI::Retcon || ABI == coro::ABI::RetconOnce); in getRetconCoroId() 169 assert(ABI == coro::ABI::Async); in getAsyncCoroId() 174 assert(ABI == coro::ABI::Switch); in getSwitchIndexField() 179 assert(ABI == coro::ABI::Switch); in getIndexType() 188 assert(ABI == coro::ABI::Switch); in getSwitchResumePointerType() 195 case coro::ABI::Switch: in getResumeFunctionType() 199 case coro::ABI::Retcon: in getResumeFunctionType() [all …]
|
| H A D | ABI.h | 28 namespace coro { 43 BaseABI(Function &F, coro::Shape &S, in BaseABI() 55 virtual void splitCoroutine(Function &F, coro::Shape &Shape, 60 coro::Shape &Shape; 69 SwitchABI(Function &F, coro::Shape &S, in SwitchABI() 75 void splitCoroutine(Function &F, coro::Shape &Shape, 82 AsyncABI(Function &F, coro::Shape &S, in AsyncABI() 88 void splitCoroutine(Function &F, coro::Shape &Shape, 95 AnyRetconABI(Function &F, coro::Shape &S, in AnyRetconABI() 101 void splitCoroutine(Function &F, coro::Shape &Shape,
|
| H A D | SpillUtils.h | 18 namespace coro { 40 const coro::Shape &Shape); 48 coro::SpillInfo &Spills, 49 SmallVectorImpl<coro::AllocaInfo> &Allocas); 52 BasicBlock::iterator getSpillInsertionPt(const coro::Shape &, Value *Def,
|
| H A D | CoroSplit.h | 26 namespace coro { 33 std::function<std::unique_ptr<coro::BaseABI>(Function &, coro::Shape &)>;
|
| H A D | MaterializationUtils.h | 17 namespace coro {
|
| /freebsd/contrib/llvm-project/llvm/include/llvm/IR/ |
| H A D | FixedMetadataKinds.def | 53 LLVM_FIXED_MD_KIND(MD_coro_outside_frame, "coro.outside.frame", 39)
|
| /freebsd/contrib/llvm-project/llvm/lib/Passes/ |
| H A D | PassRegistry.def | 61 MODULE_PASS("coro-cleanup", CoroCleanupPass()) 62 MODULE_PASS("coro-early", CoroEarlyPass()) 313 CGSCC_PASS("coro-annotation-elide", CoroAnnotationElidePass()) 320 "coro-split", "CoroSplitPass", 413 FUNCTION_PASS("coro-elide", CoroElidePass())
|
| /freebsd/contrib/llvm-project/clang/include/clang/Basic/ |
| H A D | DiagnosticGroups.td | 69 DiagGroup<"coro-non-aligned-allocation-function">; 71 DiagGroup<"coro-type-aware-allocation-function">;
|
| H A D | AttrDocs.td | 9095 task<int> coro(const int& a) { co_return a + 1; } 9097 … // `coro` captures reference to a temporary. `foo` would now contain a dangling reference to `a`. 9098 auto foo = coro(1); 9099 // `coro` captures reference to local variable `a` which is destroyed after the return. 9100 return coro(a); 9116 Task<int> coro(const int& a) { co_return a + 1; } 9118 return a > b ? coro(a) : coro(b); 9121 …auto foo = coro(1); // warning: capturing reference to a temporary which would die after the expre… 9126 co_return co_await coro(1); // fine. 9129 return coro(a); // warning: returning address of stack variable `a`. [all …]
|
| /freebsd/contrib/llvm-project/clang/include/clang/Driver/ |
| H A D | Options.td | 1650 defm coro_aligned_allocation : BoolFOption<"coro-aligned-allocation",
|