LLVM  13.0.0git
Public Member Functions | Friends | List of all members
llvm::sroa::AllocaSliceRewriter Class Reference

Visitor to rewrite instructions using p particular slice of an alloca to use a new alloca. More...

Inheritance diagram for llvm::sroa::AllocaSliceRewriter:
Inheritance graph
[legend]
Collaboration diagram for llvm::sroa::AllocaSliceRewriter:
Collaboration graph
[legend]

Public Member Functions

 AllocaSliceRewriter (const DataLayout &DL, AllocaSlices &AS, SROA &Pass, AllocaInst &OldAI, AllocaInst &NewAI, uint64_t NewAllocaBeginOffset, uint64_t NewAllocaEndOffset, bool IsIntegerPromotable, VectorType *PromotableVecTy, SmallSetVector< PHINode *, 8 > &PHIUsers, SmallSetVector< SelectInst *, 8 > &SelectUsers)
 
bool visit (AllocaSlices::const_iterator I)
 
- Public Member Functions inherited from llvm::InstVisitor< AllocaSliceRewriter, bool >
void visit (Iterator Start, Iterator End)
 
void visit (Module &M)
 
void visit (Function &F)
 
void visit (BasicBlock &BB)
 
void visit (Module *M)
 
void visit (Function *F)
 
void visit (BasicBlock *BB)
 
bool visit (Instruction *I)
 
bool visit (Instruction &I)
 
void visitModule (Module &M)
 
void visitFunction (Function &F)
 
void visitBasicBlock (BasicBlock &BB)
 
bool visitICmpInst (ICmpInst &I)
 
bool visitFCmpInst (FCmpInst &I)
 
bool visitAllocaInst (AllocaInst &I)
 
bool visitLoadInst (LoadInst &I)
 
bool visitStoreInst (StoreInst &I)
 
bool visitAtomicCmpXchgInst (AtomicCmpXchgInst &I)
 
bool visitAtomicRMWInst (AtomicRMWInst &I)
 
bool visitFenceInst (FenceInst &I)
 
bool visitGetElementPtrInst (GetElementPtrInst &I)
 
bool visitPHINode (PHINode &I)
 
bool visitTruncInst (TruncInst &I)
 
bool visitZExtInst (ZExtInst &I)
 
bool visitSExtInst (SExtInst &I)
 
bool visitFPTruncInst (FPTruncInst &I)
 
bool visitFPExtInst (FPExtInst &I)
 
bool visitFPToUIInst (FPToUIInst &I)
 
bool visitFPToSIInst (FPToSIInst &I)
 
bool visitUIToFPInst (UIToFPInst &I)
 
bool visitSIToFPInst (SIToFPInst &I)
 
bool visitPtrToIntInst (PtrToIntInst &I)
 
bool visitIntToPtrInst (IntToPtrInst &I)
 
bool visitBitCastInst (BitCastInst &I)
 
bool visitAddrSpaceCastInst (AddrSpaceCastInst &I)
 
bool visitSelectInst (SelectInst &I)
 
bool visitVAArgInst (VAArgInst &I)
 
bool visitExtractElementInst (ExtractElementInst &I)
 
bool visitInsertElementInst (InsertElementInst &I)
 
bool visitShuffleVectorInst (ShuffleVectorInst &I)
 
bool visitExtractValueInst (ExtractValueInst &I)
 
bool visitInsertValueInst (InsertValueInst &I)
 
bool visitLandingPadInst (LandingPadInst &I)
 
bool visitFuncletPadInst (FuncletPadInst &I)
 
bool visitCleanupPadInst (CleanupPadInst &I)
 
bool visitCatchPadInst (CatchPadInst &I)
 
bool visitFreezeInst (FreezeInst &I)
 
bool visitDbgDeclareInst (DbgDeclareInst &I)
 
bool visitDbgValueInst (DbgValueInst &I)
 
bool visitDbgVariableIntrinsic (DbgVariableIntrinsic &I)
 
bool visitDbgLabelInst (DbgLabelInst &I)
 
bool visitDbgInfoIntrinsic (DbgInfoIntrinsic &I)
 
bool visitMemSetInst (MemSetInst &I)
 
bool visitMemCpyInst (MemCpyInst &I)
 
bool visitMemMoveInst (MemMoveInst &I)
 
bool visitMemTransferInst (MemTransferInst &I)
 
bool visitMemIntrinsic (MemIntrinsic &I)
 
bool visitVAStartInst (VAStartInst &I)
 
bool visitVAEndInst (VAEndInst &I)
 
bool visitVACopyInst (VACopyInst &I)
 
bool visitIntrinsicInst (IntrinsicInst &I)
 
bool visitCallInst (CallInst &I)
 
bool visitInvokeInst (InvokeInst &I)
 
bool visitCallBrInst (CallBrInst &I)
 
bool visitReturnInst (ReturnInst &I)
 
bool visitBranchInst (BranchInst &I)
 
bool visitSwitchInst (SwitchInst &I)
 
bool visitIndirectBrInst (IndirectBrInst &I)
 
bool visitResumeInst (ResumeInst &I)
 
bool visitUnreachableInst (UnreachableInst &I)
 
bool visitCleanupReturnInst (CleanupReturnInst &I)
 
bool visitCatchReturnInst (CatchReturnInst &I)
 
bool visitCatchSwitchInst (CatchSwitchInst &I)
 
bool visitTerminator (Instruction &I)
 
bool visitCastInst (CastInst &I)
 
bool visitUnaryOperator (UnaryOperator &I)
 
bool visitBinaryOperator (BinaryOperator &I)
 
bool visitCmpInst (CmpInst &I)
 
bool visitUnaryInstruction (UnaryInstruction &I)
 
bool visitCallBase (CallBase &I)
 
void visitInstruction (Instruction &I)
 

Friends

class InstVisitor< AllocaSliceRewriter, bool >
 

Detailed Description

Visitor to rewrite instructions using p particular slice of an alloca to use a new alloca.

Also implements the rewriting to vector-based accesses when the partition passes the isVectorPromotionViable predicate. Most of the rewriting logic lives here.

Definition at line 2275 of file SROA.cpp.

Constructor & Destructor Documentation

◆ AllocaSliceRewriter()

llvm::sroa::AllocaSliceRewriter::AllocaSliceRewriter ( const DataLayout DL,
AllocaSlices AS,
SROA Pass,
AllocaInst OldAI,
AllocaInst NewAI,
uint64_t  NewAllocaBeginOffset,
uint64_t  NewAllocaEndOffset,
bool  IsIntegerPromotable,
VectorType PromotableVecTy,
SmallSetVector< PHINode *, 8 > &  PHIUsers,
SmallSetVector< SelectInst *, 8 > &  SelectUsers 
)
inline

Definition at line 2332 of file SROA.cpp.

References assert(), and DL.

Member Function Documentation

◆ visit()

bool llvm::sroa::AllocaSliceRewriter::visit ( AllocaSlices::const_iterator  I)
inline

Friends And Related Function Documentation

◆ InstVisitor< AllocaSliceRewriter, bool >

friend class InstVisitor< AllocaSliceRewriter, bool >
friend

Definition at line 2278 of file SROA.cpp.


The documentation for this class was generated from the following file: