llvm::SCEV Class Reference

#include <ScalarEvolution.h>

Inheritance diagram for llvm::SCEV:

llvm::SCEVCastExpr llvm::SCEVConstant llvm::SCEVCouldNotCompute llvm::SCEVNAryExpr llvm::SCEVUDivExpr llvm::SCEVUnknown llvm::SCEVSignExtendExpr llvm::SCEVTruncateExpr llvm::SCEVZeroExtendExpr llvm::SCEVAddRecExpr llvm::SCEVCommutativeExpr llvm::SCEVAddExpr llvm::SCEVMulExpr llvm::SCEVSMaxExpr llvm::SCEVUMaxExpr

List of all members.

Public Member Functions

 SCEV (const FoldingSetNodeIDRef ID, unsigned SCEVTy)
unsigned getSCEVType () const
void Profile (FoldingSetNodeID &ID)
 Profile - FoldingSet support.
virtual bool isLoopInvariant (const Loop *L) const =0
virtual bool hasComputableLoopEvolution (const Loop *L) const =0
virtual const Type * getType () const =0
bool isZero () const
bool isOne () const
bool isAllOnesValue () const
virtual bool hasOperand (const SCEV *Op) const =0
virtual bool dominates (BasicBlock *BB, DominatorTree *DT) const =0
virtual bool properlyDominates (BasicBlock *BB, DominatorTree *DT) const =0
virtual void print (raw_ostream &OS) const =0
void dump () const

Protected Attributes

unsigned short SubclassData


Detailed Description

SCEV - This class represents an analyzed expression in the program. These are opaque objects that the client is not allowed to do much with directly.

Member Function Documentation

virtual bool llvm::SCEV::dominates ( BasicBlock *  BB,
DominatorTree DT 
) const [pure virtual]

dominates - Return true if elements that makes up this SCEV dominates the specified basic block.

Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVCastExpr, llvm::SCEVNAryExpr, llvm::SCEVUDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.

void llvm::SCEV::dump (  )  const

dump - This method is used for debugging.

virtual const Type* llvm::SCEV::getType (  )  const [pure virtual]

virtual bool llvm::SCEV::hasComputableLoopEvolution ( const Loop *  L  )  const [pure virtual]

hasComputableLoopEvolution - Return true if this SCEV changes value in a known way in the specified loop. This property being true implies that the value is variant in the loop AND that we can emit an expression to compute the value of the expression at any particular loop iteration.

Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVCastExpr, llvm::SCEVNAryExpr, llvm::SCEVUDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.

virtual bool llvm::SCEV::hasOperand ( const SCEV Op  )  const [pure virtual]

hasOperand - Test whether this SCEV has Op as a direct or indirect operand.

Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVCastExpr, llvm::SCEVNAryExpr, llvm::SCEVUDivExpr, and llvm::SCEVUnknown.

bool llvm::SCEV::isAllOnesValue (  )  const

isAllOnesValue - Return true if the expression is a constant all-ones value.

virtual bool llvm::SCEV::isLoopInvariant ( const Loop *  L  )  const [pure virtual]

isLoopInvariant - Return true if the value of this SCEV is unchanging in the specified loop.

Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVCastExpr, llvm::SCEVNAryExpr, llvm::SCEVUDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.

bool llvm::SCEV::isOne (  )  const

isOne - Return true if the expression is a constant one.

bool llvm::SCEV::isZero (  )  const

isZero - Return true if the expression is a constant zero.

virtual void llvm::SCEV::print ( raw_ostream &  OS  )  const [pure virtual]

print - Print out the internal representation of this scalar to the specified stream. This should really only be used for debugging purposes.

Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVTruncateExpr, llvm::SCEVZeroExtendExpr, llvm::SCEVSignExtendExpr, llvm::SCEVCommutativeExpr, llvm::SCEVUDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.

virtual bool llvm::SCEV::properlyDominates ( BasicBlock *  BB,
DominatorTree DT 
) const [pure virtual]

properlyDominates - Return true if elements that makes up this SCEV properly dominate the specified basic block.

Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVCastExpr, llvm::SCEVNAryExpr, llvm::SCEVUDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.


Member Data Documentation

unsigned short llvm::SCEV::SubclassData [protected]

SubclassData - This field is initialized to zero and may be used in subclasses to store miscellaneous information.


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

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