class AllocaSlices::SliceBuilder

Declaration

class AllocaSlices::SliceBuilder : public PtrUseVisitor { /* full declaration omitted */ };

Description

Builder for the alloca slices. This class builds a set of alloca slices by recursively visiting the uses of an alloca and making a slice for each load and store at each offset.

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:638

Inherits from: PtrUseVisitor

Member Variables

private const uint64_t AllocSize
private llvm::sroa::AllocaSlices& AS
private SmallDenseMap<llvm::Instruction*, unsigned int> MemTransferSliceMap
private SmallDenseMap<llvm::Instruction*, uint64_t> PHIOrSelectSizes
private SmallPtrSet<llvm::Instruction*, 4> VisitedDeadInsts
Set to de-duplicate dead instructions found in the use walk.

Method Overview

Methods

SliceBuilder(const llvm::DataLayout& DL,
             llvm::AllocaInst& AI,
             llvm::sroa::AllocaSlices& AS)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:654

Parameters

const llvm::DataLayout& DL
llvm::AllocaInst& AI
llvm::sroa::AllocaSlices& AS

void handleLoadOrStore(llvm::Type* Ty,
                       llvm::Instruction& I,
                       const llvm::APInt& Offset,
                       uint64_t Size,
                       bool IsVolatile)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:763

Parameters

llvm::Type* Ty
llvm::Instruction& I
const llvm::APInt& Offset
uint64_t Size
bool IsVolatile

llvm::Instruction* hasUnsafePHIOrSelectUse(
    llvm::Instruction* Root,
    uint64_t& Size)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:956

Parameters

llvm::Instruction* Root
uint64_t& Size

void insertUse(llvm::Instruction& I,
               const llvm::APInt& Offset,
               uint64_t Size,
               bool IsSplittable = false)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:665

Parameters

llvm::Instruction& I
const llvm::APInt& Offset
uint64_t Size
bool IsSplittable = false

void markAsDead(llvm::Instruction& I)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:660

Parameters

llvm::Instruction& I

void visitAddrSpaceCastInst(
    llvm::AddrSpaceCastInst& ASC)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:708

Parameters

llvm::AddrSpaceCastInst& ASC

void visitBitCastInst(llvm::BitCastInst& BC)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:701

Parameters

llvm::BitCastInst& BC

void visitGetElementPtrInst(
    llvm::GetElementPtrInst& GEPI)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:715

Parameters

llvm::GetElementPtrInst& GEPI

void visitInstruction(llvm::Instruction& I)

Description

Disable SROA entirely if there are unhandled users of the alloca.

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:1066

Parameters

llvm::Instruction& I

void visitIntrinsicInst(llvm::IntrinsicInst& II)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:931

Parameters

llvm::IntrinsicInst& II

void visitLoadInst(llvm::LoadInst& LI)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:774

Parameters

llvm::LoadInst& LI

void visitMemSetInst(llvm::MemSetInst& II)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:829

Parameters

llvm::MemSetInst& II

void visitMemTransferInst(
    llvm::MemTransferInst& II)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:850

Parameters

llvm::MemTransferInst& II

void visitPHINode(llvm::PHINode& PN)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:1061

Parameters

llvm::PHINode& PN

void visitPHINodeOrSelectInst(
    llvm::Instruction& I)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:1003

Parameters

llvm::Instruction& I

void visitSelectInst(llvm::SelectInst& SI)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:1063

Parameters

llvm::SelectInst& SI

void visitStoreInst(llvm::StoreInst& SI)

Declared at: llvm/lib/Transforms/Scalar/SROA.cpp:792

Parameters

llvm::StoreInst& SI