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
- public void MarkBlockExecutable(llvm::BasicBlock * BB)
- public void Print(llvm::raw_ostream & OS) const
- public void Solve()
- public SparseSolver<LatticeKey, LatticeVal, KeyInfo>(AbstractLatticeFunction<LatticeKey, LatticeVal> * Lattice)
- public SparseSolver<LatticeKey, LatticeVal, KeyInfo>(const SparseSolver<LatticeKey, LatticeVal, KeyInfo> &)
- public LatticeVal getExistingValueState(LatticeKey Key) const
- public LatticeVal getValueState(LatticeKey Key)
- public bool isBlockExecutable(llvm::BasicBlock * BB) const
- public bool isEdgeFeasible(llvm::BasicBlock * From, llvm::BasicBlock * To, bool AggressiveUndef = false)
Methods
¶void MarkBlockExecutable(llvm::BasicBlock* BB)
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
void Print(llvm::raw_ostream& OS) const
Declared at: llvm/include/llvm/Analysis/SparsePropagation.h:145
Parameters
¶void Solve()
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)
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>&)
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
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)
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
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)
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