LLVM 20.0.0git
|
#include "CoroInternal.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/CallGraph.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Transforms/Coroutines/ABI.h"
#include "llvm/Transforms/Coroutines/CoroInstr.h"
#include "llvm/Transforms/Coroutines/CoroShape.h"
#include "llvm/Transforms/Utils/Local.h"
#include <cassert>
#include <cstddef>
#include <utility>
Go to the source code of this file.
Functions | |
static bool | isCoroutineIntrinsicName (StringRef Name) |
static CoroSaveInst * | createCoroSave (CoroBeginInst *CoroBegin, CoroSuspendInst *SuspendInst) |
static void | propagateCallAttrsFromCallee (CallInst *Call, Function *Callee) |
static void | addCallToCallGraph (CallGraph *CG, CallInst *Call, Function *Callee) |
static void | fail (const Instruction *I, const char *Reason, Value *V) |
static void | checkWFRetconPrototype (const AnyCoroIdRetconInst *I, Value *V) |
Check that the given value is a well-formed prototype for the llvm.coro.id.retcon. | |
static void | checkWFAlloc (const Instruction *I, Value *V) |
Check that the given value is a well-formed allocator. | |
static void | checkWFDealloc (const Instruction *I, Value *V) |
Check that the given value is a well-formed deallocator. | |
static void | checkConstantInt (const Instruction *I, Value *V, const char *Reason) |
static void | checkAsyncFuncPointer (const Instruction *I, Value *V) |
static void | checkAsyncContextProjectFunction (const Instruction *I, Function *F) |
Variables | |
static const char *const | CoroIntrinsics [] |
Definition at line 500 of file Coroutines.cpp.
Referenced by llvm::coro::Shape::emitAlloc(), and llvm::coro::Shape::emitDealloc().
|
static |
Definition at line 663 of file Coroutines.cpp.
Referenced by llvm::CoroSuspendAsyncInst::checkWellFormed().
|
static |
Definition at line 647 of file Coroutines.cpp.
Referenced by llvm::CoroIdAsyncInst::checkWellFormed().
|
static |
Definition at line 630 of file Coroutines.cpp.
Referenced by llvm::AnyCoroIdRetconInst::checkWellFormed(), and llvm::CoroIdAsyncInst::checkWellFormed().
|
static |
Check that the given value is a well-formed allocator.
Definition at line 601 of file Coroutines.cpp.
Referenced by llvm::AnyCoroIdRetconInst::checkWellFormed().
|
static |
Check that the given value is a well-formed deallocator.
Definition at line 616 of file Coroutines.cpp.
Referenced by llvm::AnyCoroIdRetconInst::checkWellFormed().
|
static |
Check that the given value is a well-formed prototype for the llvm.coro.id.retcon.
Definition at line 565 of file Coroutines.cpp.
Referenced by llvm::AnyCoroIdRetconInst::checkWellFormed().
|
static |
Definition at line 182 of file Coroutines.cpp.
References assert(), llvm::CallInst::Create(), llvm::CoroSuspendInst::getCoroSave(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getModule(), llvm::Intrinsic::getOrInsertDeclaration(), and llvm::CallBase::setArgOperand().
Referenced by llvm::coro::SwitchABI::init().
|
static |
Definition at line 550 of file Coroutines.cpp.
References llvm::errs(), I, and llvm::report_fatal_error().
Definition at line 102 of file Coroutines.cpp.
References llvm::binary_search(), CoroIntrinsics, and Name.
Referenced by llvm::coro::declaresIntrinsics().
Definition at line 495 of file Coroutines.cpp.
Referenced by llvm::coro::Shape::emitAlloc(), and llvm::coro::Shape::emitDealloc().
Definition at line 65 of file Coroutines.cpp.
Referenced by llvm::coro::declaresAnyIntrinsic(), and isCoroutineIntrinsicName().