class MemCpyOptPass
Declaration
class MemCpyOptPass : public PassInfoMixin { /* full declaration omitted */ };
Description
A CRTP mix-in to automatically provide informational APIs needed for passes. This provides some boilerplate for types that are passes.
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:39
Inherits from: PassInfoMixin
Member Variables
- private llvm::TargetLibraryInfo* TLI = nullptr
- private llvm::AAResults* AA = nullptr
- private llvm::AssumptionCache* AC = nullptr
- private llvm::DominatorTree* DT = nullptr
- private llvm::MemorySSA* MSSA = nullptr
- private llvm::MemorySSAUpdater* MSSAU = nullptr
Method Overview
- public MemCpyOptPass()
- private void eraseInstruction(llvm::Instruction * I)
- private bool iterateOnFunction(llvm::Function & F)
- private bool moveUp(llvm::StoreInst * SI, llvm::Instruction * P, const llvm::LoadInst * LI)
- private bool performCallSlotOptzn(llvm::Instruction * cpyLoad, llvm::Instruction * cpyStore, llvm::Value * cpyDst, llvm::Value * cpySrc, llvm::TypeSize cpyLen, llvm::Align cpyAlign, std::function<CallInst *()> GetC)
- private bool performMemCpyToMemSetOptzn(llvm::MemCpyInst * MemCpy, llvm::MemSetInst * MemSet)
- private bool processByValArgument(llvm::CallBase & CB, unsigned int ArgNo)
- private bool processMemCpy(llvm::MemCpyInst * M, BasicBlock::iterator & BBI)
- private bool processMemCpyMemCpyDependence(llvm::MemCpyInst * M, llvm::MemCpyInst * MDep)
- private bool processMemMove(llvm::MemMoveInst * M)
- private bool processMemSet(llvm::MemSetInst * SI, BasicBlock::iterator & BBI)
- private bool processMemSetMemCpyDependence(llvm::MemCpyInst * MemCpy, llvm::MemSetInst * MemSet)
- private bool processStore(llvm::StoreInst * SI, BasicBlock::iterator & BBI)
- public llvm::PreservedAnalyses run(llvm::Function & F, llvm::FunctionAnalysisManager & AM)
- public bool runImpl(llvm::Function & F, llvm::TargetLibraryInfo * TLI, llvm::AAResults * AA, llvm::AssumptionCache * AC, llvm::DominatorTree * DT, llvm::MemorySSA * MSSA)
- private llvm::Instruction * tryMergingIntoMemset(llvm::Instruction * I, llvm::Value * StartPtr, llvm::Value * ByteVal)
Methods
¶MemCpyOptPass()
MemCpyOptPass()
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:48
¶void eraseInstruction(llvm::Instruction* I)
void eraseInstruction(llvm::Instruction* I)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:73
Parameters
¶bool iterateOnFunction(llvm::Function& F)
bool iterateOnFunction(llvm::Function& F)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:74
Parameters
¶bool moveUp(llvm::StoreInst* SI,
llvm::Instruction* P,
const llvm::LoadInst* LI)
bool moveUp(llvm::StoreInst* SI,
llvm::Instruction* P,
const llvm::LoadInst* LI)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:71
Parameters
- llvm::StoreInst* SI
- llvm::Instruction* P
- const llvm::LoadInst* LI
¶bool performCallSlotOptzn(
llvm::Instruction* cpyLoad,
llvm::Instruction* cpyStore,
llvm::Value* cpyDst,
llvm::Value* cpySrc,
llvm::TypeSize cpyLen,
llvm::Align cpyAlign,
std::function<CallInst*()> GetC)
bool performCallSlotOptzn(
llvm::Instruction* cpyLoad,
llvm::Instruction* cpyStore,
llvm::Value* cpyDst,
llvm::Value* cpySrc,
llvm::TypeSize cpyLen,
llvm::Align cpyAlign,
std::function<CallInst*()> GetC)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:62
Parameters
- llvm::Instruction* cpyLoad
- llvm::Instruction* cpyStore
- llvm::Value* cpyDst
- llvm::Value* cpySrc
- llvm::TypeSize cpyLen
- llvm::Align cpyAlign
- std::function<CallInst*()> GetC
¶bool performMemCpyToMemSetOptzn(
llvm::MemCpyInst* MemCpy,
llvm::MemSetInst* MemSet)
bool performMemCpyToMemSetOptzn(
llvm::MemCpyInst* MemCpy,
llvm::MemSetInst* MemSet)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:67
Parameters
- llvm::MemCpyInst* MemCpy
- llvm::MemSetInst* MemSet
¶bool processByValArgument(llvm::CallBase& CB,
unsigned int ArgNo)
bool processByValArgument(llvm::CallBase& CB,
unsigned int ArgNo)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:68
Parameters
- llvm::CallBase& CB
- unsigned int ArgNo
¶bool processMemCpy(llvm::MemCpyInst* M,
BasicBlock::iterator& BBI)
bool processMemCpy(llvm::MemCpyInst* M,
BasicBlock::iterator& BBI)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:60
Parameters
¶bool processMemCpyMemCpyDependence(
llvm::MemCpyInst* M,
llvm::MemCpyInst* MDep)
bool processMemCpyMemCpyDependence(
llvm::MemCpyInst* M,
llvm::MemCpyInst* MDep)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:65
Parameters
- llvm::MemCpyInst* M
- llvm::MemCpyInst* MDep
¶bool processMemMove(llvm::MemMoveInst* M)
bool processMemMove(llvm::MemMoveInst* M)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:61
Parameters
¶bool processMemSet(llvm::MemSetInst* SI,
BasicBlock::iterator& BBI)
bool processMemSet(llvm::MemSetInst* SI,
BasicBlock::iterator& BBI)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:59
Parameters
- llvm::MemSetInst* SI
- BasicBlock::iterator& BBI
¶bool processMemSetMemCpyDependence(
llvm::MemCpyInst* MemCpy,
llvm::MemSetInst* MemSet)
bool processMemSetMemCpyDependence(
llvm::MemCpyInst* MemCpy,
llvm::MemSetInst* MemSet)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:66
Parameters
- llvm::MemCpyInst* MemCpy
- llvm::MemSetInst* MemSet
¶bool processStore(llvm::StoreInst* SI,
BasicBlock::iterator& BBI)
bool processStore(llvm::StoreInst* SI,
BasicBlock::iterator& BBI)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:58
Parameters
- llvm::StoreInst* SI
- BasicBlock::iterator& BBI
¶llvm::PreservedAnalyses run(
llvm::Function& F,
llvm::FunctionAnalysisManager& AM)
llvm::PreservedAnalyses run(
llvm::Function& F,
llvm::FunctionAnalysisManager& AM)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:50
Parameters
¶bool runImpl(llvm::Function& F,
llvm::TargetLibraryInfo* TLI,
llvm::AAResults* AA,
llvm::AssumptionCache* AC,
llvm::DominatorTree* DT,
llvm::MemorySSA* MSSA)
bool runImpl(llvm::Function& F,
llvm::TargetLibraryInfo* TLI,
llvm::AAResults* AA,
llvm::AssumptionCache* AC,
llvm::DominatorTree* DT,
llvm::MemorySSA* MSSA)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:53
Parameters
- llvm::Function& F
- llvm::TargetLibraryInfo* TLI
- llvm::AAResults* AA
- llvm::AssumptionCache* AC
- llvm::DominatorTree* DT
- llvm::MemorySSA* MSSA
¶llvm::Instruction* tryMergingIntoMemset(
llvm::Instruction* I,
llvm::Value* StartPtr,
llvm::Value* ByteVal)
llvm::Instruction* tryMergingIntoMemset(
llvm::Instruction* I,
llvm::Value* StartPtr,
llvm::Value* ByteVal)
Declared at: llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h:69
Parameters
- llvm::Instruction* I
- llvm::Value* StartPtr
- llvm::Value* ByteVal