llvm::AbstractLatticeFunction Class Reference

#include <SparsePropagation.h>

List of all members.

Public Types

typedef void * LatticeVal

Public Member Functions

 AbstractLatticeFunction (LatticeVal undefVal, LatticeVal overdefinedVal, LatticeVal untrackedVal)
LatticeVal getUndefVal () const
LatticeVal getOverdefinedVal () const
LatticeVal getUntrackedVal () const
virtual bool IsUntrackedValue (Value *V)
virtual LatticeVal ComputeConstant (Constant *C)
virtual bool IsSpecialCasedPHI (PHINode *PN)
virtual Constant * GetConstant (LatticeVal LV, Value *Val, SparseSolver &SS)
virtual LatticeVal ComputeArgument (Argument *I)
virtual LatticeVal MergeValues (LatticeVal X, LatticeVal Y)
virtual LatticeVal ComputeInstructionState (Instruction &I, SparseSolver &SS)
virtual void PrintValue (LatticeVal V, raw_ostream &OS)
 PrintValue - Render the specified lattice value to the specified stream.


Detailed Description

AbstractLatticeFunction - This class is implemented by the dataflow instance to specify what the lattice values are and how they handle merges etc. This gives the client the power to compute lattice values from instructions, constants, etc. The requirement is that lattice values must all fit into a void*. If a void* is not sufficient, the implementation should use this pointer to be a pointer into a uniquing set or something.

Member Function Documentation

virtual LatticeVal llvm::AbstractLatticeFunction::ComputeArgument ( Argument *  I  )  [inline, virtual]

ComputeArgument - Given a formal argument value, compute and return a lattice value corresponding to the specified argument.

virtual LatticeVal llvm::AbstractLatticeFunction::ComputeConstant ( Constant *  C  )  [inline, virtual]

ComputeConstant - Given a constant value, compute and return a lattice value corresponding to the specified constant.

virtual LatticeVal llvm::AbstractLatticeFunction::ComputeInstructionState ( Instruction &  I,
SparseSolver SS 
) [inline, virtual]

ComputeInstructionState - Given an instruction and a vector of its operand values, compute the result value of the instruction.

virtual Constant* llvm::AbstractLatticeFunction::GetConstant ( LatticeVal  LV,
Value *  Val,
SparseSolver SS 
) [inline, virtual]

GetConstant - If the specified lattice value is representable as an LLVM constant value, return it. Otherwise return null. The returned value must be in the same LLVM type as Val.

virtual bool llvm::AbstractLatticeFunction::IsSpecialCasedPHI ( PHINode *  PN  )  [inline, virtual]

IsSpecialCasedPHI - Given a PHI node, determine whether this PHI node is one that the we want to handle through ComputeInstructionState.

virtual bool llvm::AbstractLatticeFunction::IsUntrackedValue ( Value *  V  )  [inline, virtual]

IsUntrackedValue - If the specified Value is something that is obviously uninteresting to the analysis (and would always return UntrackedVal), this function can return true to avoid pointless work.

virtual LatticeVal llvm::AbstractLatticeFunction::MergeValues ( LatticeVal  X,
LatticeVal  Y 
) [inline, virtual]

MergeValues - Compute and return the merge of the two specified lattice values. Merging should only move one direction down the lattice to guarantee convergence (toward overdefined).


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

Generated on Fri Mar 19 01:41:27 2010 by  doxygen 1.5.8