class AllocaSlices::partition_iterator

Declaration

class AllocaSlices::partition_iterator : public iterator_facade_base { /* full declaration omitted */ };

Description

An iterator over partitions of the alloca's slices. This iterator implements the core algorithm for partitioning the alloca's slices. It is a forward iterator as we don't support backtracking for efficiency reasons, and re-use a single storage area to maintain the current set of split slices. It is templated on the slice iterator type to use so that it can operate with either const or non-const slice iterators.

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

Inherits from: iterator_facade_base

Member Variables

private llvm::sroa::Partition P
Most of the state for walking the partitions is held in a class with a nice interface for examining them.
private AllocaSlices::iterator SE
We need to keep the end of the slices to know when to stop.
private uint64_t MaxSplitSliceEndOffset = 0
We also need to keep track of the maximum split end offset seen. FIXME: Do we really?

Method Overview

Methods

void advance()

Description

Advance the iterator to the next partition. Requires that the iterator not be at the end of the slices.

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

partition_iterator(AllocaSlices::iterator SI,
                   AllocaSlices::iterator SE)

Description

Sets the partition to be empty at given iterator, and sets the end iterator.

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

Parameters

AllocaSlices::iterator SI
AllocaSlices::iterator SE