LLVM 20.0.0git
|
Classes | |
struct | LowererBase |
struct | Shape |
Enumerations | |
enum class | ABI { Switch , Retcon , RetconOnce , Async } |
Functions | |
bool | declaresAnyIntrinsic (const Module &M) |
bool | declaresIntrinsics (const Module &M, const std::initializer_list< StringRef >) |
void | replaceCoroFree (CoroIdInst *CoroId, bool Elide) |
void | salvageDebugInfo (SmallDenseMap< Argument *, AllocaInst *, 4 > &ArgToAllocaMap, DbgVariableIntrinsic &DVI, bool IsEntryPoint) |
Attempts to rewrite the location operand of debug intrinsics in terms of the coroutine frame pointer, folding pointer offsets into the DIExpression of the intrinsic. | |
void | salvageDebugInfo (SmallDenseMap< Argument *, AllocaInst *, 4 > &ArgToAllocaMap, DbgVariableRecord &DVR, bool UseEntryValue) |
bool | defaultMaterializable (Instruction &V) |
Default materializable callback. | |
void | buildCoroutineFrame (Function &F, Shape &Shape, TargetTransformInfo &TTI, const std::function< bool(Instruction &)> &MaterializableCallback) |
CallInst * | createMustTailCall (DebugLoc Loc, Function *MustTailCallFn, TargetTransformInfo &TTI, ArrayRef< Value * > Arguments, IRBuilder<> &) |
|
strong |
Definition at line 53 of file CoroInternal.h.
void llvm::coro::buildCoroutineFrame | ( | Function & | F, |
Shape & | Shape, | ||
TargetTransformInfo & | TTI, | ||
const std::function< bool(Instruction &)> & | MaterializableCallback | ||
) |
Definition at line 3078 of file CoroFrame.cpp.
References A, llvm::coro::Shape::ABI, Arguments, buildFrameDebugInfo(), buildFrameType(), cleanupSinglePredPHIs(), llvm::CoroIdInst::clearPromise(), collectFrameAlloca(), llvm::coro::Shape::CoroBegin, llvm::coro::Shape::CoroEnds, llvm::coro::Shape::CoroSuspends, createMustTailCall(), doRematerializations(), llvm::ArrayRef< T >::drop_front(), dumpAllocas(), dumpSpills(), eliminateSwiftError(), F, llvm::findDbgValues(), llvm::coro::Shape::FramePtr, llvm::coro::Shape::FrameTy, llvm::coro::Shape::getSwitchCoroId(), I, insertSpills(), instructions, isCoroutineStructureIntrinsic(), isLocalAlloca(), LLVM_DEBUG, lowerLocalAllocas(), lowerNonLocalAlloca(), llvm::coro::Shape::SwitchLoweringStorage::PromiseAlloca, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::report_fatal_error(), rewritePHIs(), sinkLifetimeStartMarkers(), sinkSpillUsesAfterCoroBegin(), splitAround(), and llvm::coro::Shape::SwitchLowering.
CallInst * llvm::coro::createMustTailCall | ( | DebugLoc | Loc, |
Function * | MustTailCallFn, | ||
TargetTransformInfo & | TTI, | ||
ArrayRef< Value * > | Arguments, | ||
IRBuilder<> & | Builder | ||
) |
Definition at line 1656 of file CoroSplit.cpp.
References Arguments, coerceArguments(), llvm::IRBuilderBase::CreateCall(), llvm::Function::getCallingConv(), llvm::Function::getFunctionType(), llvm::TargetTransformInfo::supportsTailCallFor(), and llvm::CallInst::TCK_MustTail.
Referenced by buildCoroutineFrame(), and splitAsyncCoroutine().
Definition at line 103 of file Coroutines.cpp.
References assert(), CoroIntrinsics, isCoroutineIntrinsicName(), and Name.
Referenced by llvm::CoroConditionalWrapper::run().
bool llvm::coro::declaresIntrinsics | ( | const Module & | M, |
const std::initializer_list< StringRef > | List | ||
) |
Definition at line 115 of file Coroutines.cpp.
References assert(), isCoroutineIntrinsicName(), llvm::List, and Name.
Referenced by declaresCoroCleanupIntrinsics(), declaresCoroEarlyIntrinsics(), and llvm::CoroElidePass::run().
bool llvm::coro::defaultMaterializable | ( | Instruction & | V | ) |
Default materializable callback.
Definition at line 2278 of file CoroFrame.cpp.
void llvm::coro::replaceCoroFree | ( | CoroIdInst * | CoroId, |
bool | Elide | ||
) |
Definition at line 128 of file Coroutines.cpp.
References llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallVectorTemplateCommon< T, typename >::front(), llvm::ConstantPointerNull::get(), llvm::PointerType::get(), llvm::Value::getContext(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::Value::users().
Referenced by handleNoSuspendCoroutine().
void llvm::coro::salvageDebugInfo | ( | SmallDenseMap< Argument *, AllocaInst *, 4 > & | ArgToAllocaMap, |
DbgVariableIntrinsic & | DVI, | ||
bool | IsEntryPoint | ||
) |
Attempts to rewrite the location operand of debug intrinsics in terms of the coroutine frame pointer, folding pointer offsets into the DIExpression of the intrinsic.
If the frame pointer is an Argument, store it into an alloca to enhance the debugability.
Definition at line 2930 of file CoroFrame.cpp.
References F, llvm::Instruction::getDebugLoc(), llvm::DbgVariableIntrinsic::getExpression(), llvm::Instruction::getFunction(), llvm::DbgVariableIntrinsic::getVariableLocationOp(), I, llvm::Instruction::moveBefore(), llvm::DbgVariableIntrinsic::replaceVariableLocationOp(), salvageDebugInfoImpl(), llvm::Instruction::setDebugLoc(), and llvm::DbgVariableIntrinsic::setExpression().
Referenced by insertSpills(), and splitCoroutine().
void llvm::coro::salvageDebugInfo | ( | SmallDenseMap< Argument *, AllocaInst *, 4 > & | ArgToAllocaMap, |
DbgVariableRecord & | DVR, | ||
bool | UseEntryValue | ||
) |
Definition at line 2972 of file CoroFrame.cpp.
References F, llvm::DbgRecord::getDebugLoc(), llvm::DbgVariableRecord::getExpression(), llvm::DbgRecord::getFunction(), llvm::DbgVariableRecord::getType(), llvm::DbgVariableRecord::getVariableLocationOp(), I, llvm::DbgVariableRecord::isDbgDeclare(), llvm::DbgRecord::removeFromParent(), llvm::DbgVariableRecord::replaceVariableLocationOp(), salvageDebugInfoImpl(), llvm::DbgRecord::setDebugLoc(), and llvm::DbgVariableRecord::setExpression().