LLVM  12.0.0git
Macros | Functions | Variables
CoroElide.cpp File Reference
#include "llvm/Transforms/Coroutines/CoroElide.h"
#include "CoroInternal.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/InstructionSimplify.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/ErrorHandling.h"
Include dependency graph for CoroElide.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "coro-elide"
 

Functions

static void replaceWithConstant (Constant *Value, SmallVectorImpl< CoroSubFnInst *> &Users)
 
static bool operandReferences (CallInst *CI, AllocaInst *Frame, AAResults &AA)
 
static void removeTailCallAttribute (AllocaInst *Frame, AAResults &AA)
 
static std::pair< uint64_t, AligngetFrameLayout (Function *Resume)
 
static InstructiongetFirstNonAllocaInTheEntryBlock (Function *F)
 
static bool replaceDevirtTrigger (Function &F)
 
static bool declaresCoroElideIntrinsics (Module &M)
 
 INITIALIZE_PASS_BEGIN (CoroElideLegacy, "coro-elide", "Coroutine frame allocation elision and indirect calls replacement", false, false) INITIALIZE_PASS_END(CoroElideLegacy
 

Variables

coro elide
 
coro Coroutine frame allocation elision and indirect calls replacement
 
coro Coroutine frame allocation elision and indirect calls false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "coro-elide"

Definition at line 22 of file CoroElide.cpp.

Function Documentation

◆ declaresCoroElideIntrinsics()

static bool declaresCoroElideIntrinsics ( Module M)
static

Definition at line 368 of file CoroElide.cpp.

References llvm::coro::declaresIntrinsics().

Referenced by llvm::CoroElidePass::run().

◆ getFirstNonAllocaInTheEntryBlock()

static Instruction* getFirstNonAllocaInTheEntryBlock ( Function F)
static

◆ getFrameLayout()

static std::pair<uint64_t, Align> getFrameLayout ( Function Resume)
static

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( CoroElideLegacy  ,
"coro-elide ,
"Coroutine frame allocation elision and indirect calls replacement ,
false  ,
false   
)

◆ operandReferences()

static bool operandReferences ( CallInst CI,
AllocaInst Frame,
AAResults AA 
)
static

◆ removeTailCallAttribute()

static void removeTailCallAttribute ( AllocaInst Frame,
AAResults AA 
)
static

◆ replaceDevirtTrigger()

static bool replaceDevirtTrigger ( Function F)
static

◆ replaceWithConstant()

static void replaceWithConstant ( Constant Value,
SmallVectorImpl< CoroSubFnInst *> &  Users 
)
static

Variable Documentation

◆ elide

coro elide

Definition at line 447 of file CoroElide.cpp.

◆ false

coro Coroutine frame allocation elision and indirect calls false

Definition at line 447 of file CoroElide.cpp.

◆ replacement

coro Coroutine frame allocation elision and indirect calls replacement

Definition at line 447 of file CoroElide.cpp.