LLVM API Documentation

llvm::SCEV Class Reference

#include <ScalarEvolution.h>

Inheritance diagram for llvm::SCEV:
[legend]
Collaboration diagram for llvm::SCEV:
[legend]

List of all members.

Public Member Functions

 SCEV (unsigned SCEVTy)
unsigned getSCEVType () const
virtual bool isLoopInvariant (const Loop *L) const =0
virtual bool hasComputableLoopEvolution (const Loop *L) const =0
virtual const Type * getType () const =0
uint32_t getBitWidth () const
bool isZero () const
virtual SCEVHandle replaceSymbolicValuesWithConcrete (const SCEVHandle &Sym, const SCEVHandle &Conc, ScalarEvolution &SE) const =0
virtual void print (std::ostream &OS) const =0
void print (std::ostream *OS) const
void dump () const

Protected Member Functions

virtual ~SCEV ()

Friends

class SCEVHandle


Detailed Description

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

Definition at line 42 of file ScalarEvolution.h.


Constructor & Destructor Documentation

SCEV::~SCEV (  )  [protected, virtual]

Definition at line 112 of file ScalarEvolution.cpp.

llvm::SCEV::SCEV ( unsigned  SCEVTy  )  [inline, explicit]

Definition at line 58 of file ScalarEvolution.h.


Member Function Documentation

unsigned llvm::SCEV::getSCEVType (  )  const [inline]

virtual bool llvm::SCEV::isLoopInvariant ( const Loop *  L  )  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::SCEVTruncateExpr, llvm::SCEVZeroExtendExpr, llvm::SCEVSignExtendExpr, llvm::SCEVCommutativeExpr, llvm::SCEVUDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.

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

uint32_t SCEV::getBitWidth (  )  const

getBitWidth - Get the bit width of the type, if it has one, 0 otherwise.

Definition at line 118 of file ScalarEvolution.cpp.

References getType().

Referenced by llvm::SCEVAddRecExpr::getNumIterationsInRange().

bool SCEV::isZero (  )  const

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

Definition at line 124 of file ScalarEvolution.cpp.

virtual SCEVHandle llvm::SCEV::replaceSymbolicValuesWithConcrete ( const SCEVHandle &  Sym,
const SCEVHandle &  Conc,
ScalarEvolution &  SE 
) const [pure virtual]

replaceSymbolicValuesWithConcrete - If this SCEV internally references the symbolic value "Sym", construct and return a new SCEV that produces the same value, but which uses the concrete value Conc instead of the symbolic value. If this SCEV does not use the symbolic value, it returns itself.

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

virtual void llvm::SCEV::print ( std::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.

Referenced by dump(), llvm::operator<<(), and print().

void llvm::SCEV::print ( std::ostream *  OS  )  const [inline]

void SCEV::dump (  )  const

dump - This method is used for debugging.

Definition at line 113 of file ScalarEvolution.cpp.

References llvm::cerr(), and print().


Friends And Related Function Documentation

friend class SCEVHandle [friend]

Definition at line 46 of file ScalarEvolution.h.


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