class SparseSolver

Declaration

template <class LatticeKey,
          class LatticeVal,
          class KeyInfo = LatticeKeyInfo<LatticeKey>>
class SparseSolver { /* full declaration omitted */ };

Description

SparseSolver - This class is a general purpose solver for Sparse Conditional Propagation with a programmable lattice function.

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:111

Templates

LatticeKey
LatticeVal
KeyInfo = LatticeKeyInfo<LatticeKey>

Method Overview

Methods

void MarkBlockExecutable(llvm::BasicBlock* BB)

Description

MarkBlockExecutable - This method can be used by clients to mark all of the blocks that are known to be intrinsically live in the processed unit.

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:177

Parameters

llvm::BasicBlock* BB

void Print(llvm::raw_ostream& OS) const

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:145

Parameters

llvm::raw_ostream& OS

void Solve()

Description

Solve - Solve for constants and executable blocks.

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:143

SparseSolver<LatticeKey, LatticeVal, KeyInfo>(
    AbstractLatticeFunction<LatticeKey,
                            LatticeVal>* Lattice)

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:136

Parameters

AbstractLatticeFunction<LatticeKey, LatticeVal>* Lattice

SparseSolver<LatticeKey, LatticeVal, KeyInfo>(
    const SparseSolver<LatticeKey,
                       LatticeVal,
                       KeyInfo>&)

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:139

Parameters

const SparseSolver<LatticeKey, LatticeVal, KeyInfo>&

LatticeVal getExistingValueState(
    LatticeKey Key) const

Description

getExistingValueState - Return the LatticeVal object corresponding to the given value from the ValueState map. If the value is not in the map, UntrackedVal is returned, unlike the getValueState method.

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:150

Parameters

LatticeKey Key

LatticeVal getValueState(LatticeKey Key)

Description

getValueState - Return the LatticeVal object corresponding to the given value from the ValueState map. If the value is not in the map, its state is initialized.

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:158

Parameters

LatticeKey Key

bool isBlockExecutable(llvm::BasicBlock* BB) const

Description

isBlockExecutable - Return true if there are any known feasible edges into the basic block. This is generally only useful when querying the lattice.

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:171

Parameters

llvm::BasicBlock* BB

bool isEdgeFeasible(llvm::BasicBlock* From,
                    llvm::BasicBlock* To,
                    bool AggressiveUndef = false)

Description

isEdgeFeasible - Return true if the control flow edge from the 'From' basic block to the 'To' basic block is currently feasible. If AggressiveUndef is true, then this treats values with unknown lattice values as undefined. This is generally only useful when solving the lattice, not when querying it.

Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:165

Parameters

llvm::BasicBlock* From
llvm::BasicBlock* To
bool AggressiveUndef = false